/* * Prints out all SearchResults in the Iterator. Each printed line includes title, id, and * thumbnail. * * @param iteratorSearchResults Iterator of SearchResults to print * * @param query Search query (String) */ private static void prettyPrint(Iterator<SearchResult> iteratorSearchResults, String query) { System.out.println("\n============================================================="); System.out.println( " First " + NUMBER_OF_VIDEOS_RETURNED + " videos for search on \"" + query + "\"."); System.out.println("=============================================================\n"); if (!iteratorSearchResults.hasNext()) { System.out.println(" There aren't any results for your query."); } while (iteratorSearchResults.hasNext()) { SearchResult singleVideo = iteratorSearchResults.next(); ResourceId rId = singleVideo.getId(); // Double checks the kind is video. if (rId.getKind().equals("youtube#video")) // Thumbnail thumbnail = singleVideo.getSnippet().getThumbnails().get("default"); System.out.println(" Video Id: " + rId.getVideoId()); System.out.println(" Title: " + singleVideo.getSnippet().getTitle()); // System.out.println(" Thumbnail: " + thumbnail.getUrl()); System.out.println("\n-------------------------------------------------------------\n"); // download it String link = "http://youtubeinmp3.com/fetch/?video=https://www.youtube.com/watch?v=" + rId.getVideoId(); System.out.println("to download: " + link); WebDownload wd = new WebDownload(); try { wd.downloadMp3FromYoutube("download2.mp3", link); } catch (Exception e) { e.printStackTrace(); } } }
/** * Initializes YouTube object to search for videos on YouTube (Youtube.Search.List). The program * then prints the names and thumbnails of each of the videos (only first 50 videos). */ public String videoIdFromQueryTerm(String queryTerm) { // Read the developer key from youtube.properties String videoId = null; Properties properties = new Properties(); // try { // InputStream in = Search.class.getResourceAsStream("/" + PROPERTIES_FILENAME); // properties.load(in); // // } catch (IOException e) { // System.err.println("There was an error reading " + PROPERTIES_FILENAME + ": " + // e.getCause() // + " : " + e.getMessage()); // System.exit(1); // } try { /* * The YouTube object is used to make all API requests. The last argument is required, but * because we don't need anything initialized when the HttpRequest is initialized, we override * the interface and provide a no-op function. */ youtube = new YouTube.Builder( HTTP_TRANSPORT, JSON_FACTORY, new HttpRequestInitializer() { public void initialize(HttpRequest request) throws IOException {} }) .setApplicationName("youtube-cmdline-search-sample") .build(); // Get query term from user. // String queryTerm = getInputQuery(); YouTube.Search.List search = youtube.search().list("id,snippet"); /* * It is important to set your developer key from the Google Developer Console for * non-authenticated requests (found under the API Access tab at this link: * code.google.com/apis/). This is good practice and increased your quota. */ String apiKey = "AIzaSyB--WhmXYTrUlitFPWtiPZu8V1w_iPRCbw"; search.setKey(apiKey); search.setQ(queryTerm); /* * We are only searching for videos (not playlists or channels). If we were searching for * more, we would add them as a string like this: "video,playlist,channel". */ search.setType("video"); /* * This method reduces the info returned to only the fields we need and makes calls more * efficient. */ search.setFields("items(id/kind,id/videoId,snippet/title,snippet/thumbnails/default/url)"); search.setMaxResults(NUMBER_OF_VIDEOS_RETURNED); SearchListResponse searchResponse = search.execute(); List<SearchResult> searchResultList = searchResponse.getItems(); SearchResult searchResult = searchResultList.get(0); ResourceId rId = searchResult.getId(); videoId = rId.getVideoId(); // if (searchResultList != null) { // prettyPrint(searchResultList.iterator(), queryTerm); // } } catch (GoogleJsonResponseException e) { System.err.println( "There was a service error: " + e.getDetails().getCode() + " : " + e.getDetails().getMessage()); } catch (IOException e) { System.err.println("There was an IO error: " + e.getCause() + " : " + e.getMessage()); } catch (Throwable t) { t.printStackTrace(); } return videoId; }