添加延迟
This commit is contained in:
parent
c62c38f5ad
commit
0cd03acb9d
@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
|
||||
import com.qiuguo.iot.third.resp.SingerResponse;
|
||||
import com.qiuguo.iot.third.resp.SingerSongsResponse;
|
||||
import com.qiuguo.iot.third.resp.SongInfoResponse;
|
||||
import java.time.Duration;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@ -19,6 +20,7 @@ import org.springframework.util.ObjectUtils;
|
||||
import org.springframework.web.reactive.function.client.WebClient;
|
||||
import reactor.core.publisher.Mono;
|
||||
import com.qiuguo.iot.third.resp.SearchResponse;
|
||||
import reactor.core.scheduler.Schedulers;
|
||||
|
||||
import static org.springframework.util.MimeTypeUtils.APPLICATION_JSON_VALUE;
|
||||
|
||||
@ -47,26 +49,29 @@ public class MusicService {
|
||||
if (ObjectUtils.isEmpty(keyword)) {
|
||||
keyword = "追梦赤子心";
|
||||
}
|
||||
WebClient build = WebClient.builder()
|
||||
WebClient webClient = WebClient.builder()
|
||||
.defaultHeader("Content-Type", "application/json; charset=utf-8")
|
||||
.defaultHeader("User-Agent","PostmanRuntime/7.29.0")
|
||||
.defaultHeader("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS")
|
||||
.defaultHeader("Access-Control-Allow-Headers", "X-Requested-With,Content-Type")
|
||||
.defaultHeader("Accept-Encoding", "gzip, deflate, br")
|
||||
.defaultHeader("Connection", "keep-alive")
|
||||
.defaultHeader("Accept", "*")
|
||||
.defaultHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36")
|
||||
.build();
|
||||
String baseUrl = "http://121.40.172.241:8031";
|
||||
if (type == 1) {
|
||||
return build.get().uri(baseUrl+"/search?keywords="+keyword+"&limit=10"+"×tamp="+System.currentTimeMillis()).retrieve()
|
||||
.bodyToMono(SearchResponse.class).flatMap(res -> {
|
||||
return webClient.get().uri(baseUrl+"/search?keywords="+keyword).retrieve()
|
||||
.bodyToMono(SearchResponse.class)
|
||||
.delaySubscription(Duration.ofMillis(300), Schedulers.boundedElastic())
|
||||
.flatMap(res -> {
|
||||
if (!Objects.equals(res.getCode(), 200)) {
|
||||
return Mono.empty();
|
||||
}
|
||||
String ids = res.getResult().getSongs().stream().map(SearchResponse.Song::getId)
|
||||
String ids = res.getResult().getSongs().stream().map(SearchResponse.Song::getId).limit(3)
|
||||
.collect(Collectors.joining(","));
|
||||
Map<String,SearchResponse.Song > songMap = res.getResult().getSongs().stream()
|
||||
.collect(Collectors.toMap(SearchResponse.Song::getId, Function.identity()));
|
||||
|
||||
return build.get().uri(baseUrl+"/song/url?id="+ids+"×tamp="+System.currentTimeMillis()).retrieve()
|
||||
return webClient.get().uri(baseUrl+"/song/url/v1?id="+ids).retrieve()
|
||||
.bodyToMono(SongInfoResponse.class).flatMap(song -> {
|
||||
if (Objects.equals(200, song.getCode()) && song.getData().size() > 0) {
|
||||
List<SongInfoResponse.ResultSong> data = song.getData();
|
||||
@ -82,21 +87,25 @@ public class MusicService {
|
||||
});
|
||||
});
|
||||
} else {
|
||||
return build.get().uri(baseUrl+"/search?keywords="+keyword+"&type=100"+"×tamp="+System.currentTimeMillis()).retrieve()
|
||||
.bodyToMono(SingerResponse.class).flatMap(res -> {
|
||||
return webClient.get().uri(baseUrl+"/search?keywords="+keyword+"&type=100").retrieve()
|
||||
.bodyToMono(SingerResponse.class)
|
||||
.delaySubscription(Duration.ofMillis(300), Schedulers.boundedElastic())
|
||||
.flatMap(res -> {
|
||||
if (!Objects.equals(res.getCode(), 200) && res.getResult().getArtists().size() == 0) {
|
||||
return Mono.empty();
|
||||
}
|
||||
String id = res.getResult().getArtists().get(0).getId();
|
||||
return build.get().uri(baseUrl+"/artist/top/song?id="+id+"×tamp="+System.currentTimeMillis()).retrieve()
|
||||
.bodyToMono(SingerSongsResponse.class).flatMap(song -> {
|
||||
return webClient.get().uri(baseUrl+"/artist/top/song?id="+id).retrieve()
|
||||
.bodyToMono(SingerSongsResponse.class)
|
||||
.delaySubscription(Duration.ofMillis(300), Schedulers.boundedElastic())
|
||||
.flatMap(song -> {
|
||||
if (Objects.equals(200, song.getCode()) && song.getSongs().size() > 0) {
|
||||
String ids = song.getSongs().stream().limit(10)
|
||||
String ids = song.getSongs().stream().limit(3)
|
||||
.map(SingerSongsResponse.Song::getId).collect(Collectors.joining(","));
|
||||
Map<String, SingerSongsResponse.Song> songMap = song.getSongs().stream()
|
||||
.collect(Collectors.toMap(SingerSongsResponse.Song::getId,
|
||||
Function.identity()));
|
||||
return build.get().uri(baseUrl+"/song/url?id="+ids+"×tamp="+System.currentTimeMillis()).retrieve()
|
||||
return webClient.get().uri(baseUrl+"/song/url/v1?id="+ids).retrieve()
|
||||
.bodyToMono(SongInfoResponse.class).flatMap(so -> {
|
||||
if (Objects.equals(200, song.getCode())
|
||||
&& so.getData().size() > 0) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user