From 0cd03acb9dbd55caf65df29013f6b33fc9657877 Mon Sep 17 00:00:00 2001 From: weiyachao <13526234727@126.com> Date: Fri, 6 Oct 2023 16:56:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=BB=B6=E8=BF=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iot/third/service/MusicService.java | 35 ++++++++++++------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/service/MusicService.java b/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/service/MusicService.java index 67bff62..263fd41 100644 --- a/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/service/MusicService.java +++ b/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/service/MusicService.java @@ -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 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 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 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) {