From 96d40814b1b4a8c405624cb216c356c6f62c7459 Mon Sep 17 00:00:00 2001 From: SebClem Date: Wed, 17 Feb 2021 13:37:55 +0100 Subject: [PATCH] Update youtube api --- build.gradle | 5 ++- .../audio/Youtube/YoutubeSearchRework.java | 2 +- .../Broken/audio/Youtube/YoutubeTools.java | 36 ++++++++----------- 3 files changed, 18 insertions(+), 25 deletions(-) diff --git a/build.gradle b/build.gradle index 80cd4e1..1eef296 100644 --- a/build.gradle +++ b/build.gradle @@ -51,7 +51,6 @@ dependencies { compile("com.sedmelluq:lavaplayer:1.3.71") -// compile 'net.dv8tion:JDA:4.0.0_46' compile 'net.dv8tion:JDA:4.2.0_228' compile group: 'org.json', name: 'json', version: '20201115' compile 'org.springframework.security:spring-security-web:5.0.1.RELEASE' @@ -63,8 +62,8 @@ dependencies { compile 'mysql:mysql-connector-java' compile 'org.reflections:reflections:0.9.11' compile 'org.apache.commons:commons-lang3:3.11' - compile 'com.google.api-client:google-api-client:1.23.0' - compile 'com.google.apis:google-api-services-youtube:v3-rev192-1.23.0' + compile 'com.google.api-client:google-api-client:1.31.2' + compile 'com.google.apis:google-api-services-youtube:v3-rev20210210-1.31.0' compile group: 'org.jsoup', name: 'jsoup', version: '1.13.1' diff --git a/src/main/java/net/Broken/audio/Youtube/YoutubeSearchRework.java b/src/main/java/net/Broken/audio/Youtube/YoutubeSearchRework.java index 4e5ef9e..4990955 100644 --- a/src/main/java/net/Broken/audio/Youtube/YoutubeSearchRework.java +++ b/src/main/java/net/Broken/audio/Youtube/YoutubeSearchRework.java @@ -130,7 +130,7 @@ public class YoutubeSearchRework { } private String extractRelatedVideoId(Document doc) throws RelatedIdNotFound { - Elements elements = doc.select(".autoplay-bar .content-link"); + Elements elements = doc.select(".ytd-compact-autoplay-renderer .yt-simple-endpoint"); if (elements.size() == 0) { throw new RelatedIdNotFound(); } diff --git a/src/main/java/net/Broken/audio/Youtube/YoutubeTools.java b/src/main/java/net/Broken/audio/Youtube/YoutubeTools.java index 469fbf3..1cd9865 100644 --- a/src/main/java/net/Broken/audio/Youtube/YoutubeTools.java +++ b/src/main/java/net/Broken/audio/Youtube/YoutubeTools.java @@ -1,7 +1,7 @@ package net.Broken.audio.Youtube; import com.google.api.client.http.javanet.NetHttpTransport; -import com.google.api.client.json.jackson2.JacksonFactory; +import com.google.api.client.json.gson.GsonFactory; import com.google.api.services.youtube.YouTube; import com.google.api.services.youtube.model.*; import com.google.api.services.youtube.model.SearchResult; @@ -10,6 +10,7 @@ import org.apache.logging.log4j.Logger; import java.io.IOException; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import static org.hibernate.engine.jdbc.Size.LobMultiplier.M; @@ -34,7 +35,7 @@ public class YoutubeTools { private YouTube getYoutubeService() { - YouTube.Builder builder = new YouTube.Builder(new NetHttpTransport(), new JacksonFactory(), request -> { + YouTube.Builder builder = new YouTube.Builder(new NetHttpTransport(), new GsonFactory(), request -> { }); builder.setApplicationName("BotDiscord"); return builder.build(); @@ -48,19 +49,11 @@ public class YoutubeTools { YouTube youtube = getYoutubeService(); - HashMap parameters = new HashMap<>(); - parameters.put("part", "snippet"); - parameters.put("relatedToVideoId", videoId); - parameters.put("type", "video"); - YouTube.Search.List searchListRelatedVideosRequest = youtube.search().list(parameters.get("part")); - if (parameters.containsKey("relatedToVideoId") && parameters.get("relatedToVideoId") != "") { - searchListRelatedVideosRequest.setRelatedToVideoId(parameters.get("relatedToVideoId")); - } - if (parameters.containsKey("type") && !parameters.get("type").equals("")) { - searchListRelatedVideosRequest.setType(parameters.get("type")); - } + YouTube.Search.List searchListRelatedVideosRequest = youtube.search().list(Collections.singletonList("snippet")); + searchListRelatedVideosRequest.setRelatedToVideoId(videoId); + searchListRelatedVideosRequest.setType(Collections.singletonList("video")); searchListRelatedVideosRequest.setKey(apiKey); @@ -68,7 +61,8 @@ public class YoutubeTools { for (SearchResult item : response.getItems()) { if (!history.contains(item.getId().getVideoId())) { - return item.getId().getVideoId(); + if(item.getSnippet() != null) + return item.getId().getVideoId(); } else logger.debug("ID already on history"); } @@ -81,11 +75,11 @@ public class YoutubeTools { public ArrayList search(String query, long max, boolean playlist) throws IOException { YouTube youTube = getYoutubeService(); - YouTube.Search.List searchList = youTube.search().list("snippet"); + YouTube.Search.List searchList = youTube.search().list(Collections.singletonList("snippet")); if(playlist) - searchList.setType("playlist"); + searchList.setType(Collections.singletonList("playlist")); else - searchList.setType("video"); + searchList.setType(Collections.singletonList("video")); searchList.setSafeSearch("none"); searchList.setMaxResults(max); searchList.setQ(query); @@ -102,8 +96,8 @@ public class YoutubeTools { idString.append(item.getId().getPlaylistId()).append(","); } HashMap playlistHashMap = new HashMap<>(); - YouTube.Playlists.List list = youTube.playlists().list("contentDetails"); - list.setId(idString.toString()); + YouTube.Playlists.List list = youTube.playlists().list(Collections.singletonList("contentDetails")); + list.setId(Collections.singletonList(idString.toString())); list.setKey(apiKey); PlaylistListResponse playlistResponse = list.execute(); for( Playlist item : playlistResponse.getItems()){ @@ -122,8 +116,8 @@ public class YoutubeTools { idString.append(item.getId().getVideoId()).append(","); } HashMap videoHashMap = new HashMap<>(); - YouTube.Videos.List video = youTube.videos().list("contentDetails"); - video.setId(idString.toString()); + YouTube.Videos.List video = youTube.videos().list(Collections.singletonList("contentDetails")); + video.setId(Collections.singletonList(idString.toString())); video.setKey(apiKey); VideoListResponse videoResponse = video.execute(); for(Video item : videoResponse.getItems()){