Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to search videos with youtube data API in Android

I'm developing an application in Android which needs to search for videos of YouTube by Keyword. I have used Youtube data API with the code below:

    try {
        youtube = new YouTube.Builder(Auth.HTTP_TRANSPORT, Auth.JSON_FACTORY, new HttpRequestInitializer() {
            public void initialize(HttpRequest request) throws IOException {
            }
        }).setApplicationName("YoutubeQoE").build();

        // Define the API request for retrieving search results.
        YouTube.Search.List search = youtube.search().list("id,snippet");

        // Set your developer key from the Google Cloud Console for
        // non-authenticated requests. See:
        // https://cloud.google.com/console
        search.setKey(DeveloperKey.DEVELOPER_KEY);
        search.setQ("dogs");

        // Restrict the search results to only include videos. See:
        // https://developers.google.com/youtube/v3/docs/search/list#type
        search.setType("video");

        // To increase efficiency, only retrieve the fields that the
        // application uses.
        //search.setFields("items(id/kind,id/videoId,snippet/title,snippet/thumbnails/default/url)");
        search.setMaxResults(25);

        SearchListResponse searchResponse = search.execute();
        List<SearchResult> lista = searchResponse.getItems();

    } 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();
    }

For de DEVELOPER_KEY I have used a public API access at google developer console.

But when I execute the program there is a problem in the line:

SearchListResponse searchResponse = search.execute();

In the android manifest.xml I have these permissions:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

I would be very grateful if anybody could help me

like image 577
josesvm Avatar asked Feb 20 '14 16:02

josesvm


People also ask

Does YouTube have a search API?

Returns a collection of search results that match the query parameters specified in the API request. By default, a search result set identifies matching video , channel , and playlist resources, but you can also configure queries to only retrieve a specific type of resource. Try it now.

What data can I get from YouTube API?

You can retrieve entire playlists, users' uploads, and even search results using the YouTube API. You can also add YouTube functionalities to your website so that users can upload videos and manage channel subscriptions straight from your website or app.


2 Answers

Another way of achieving this would be getting results from this:

https://www.googleapis.com/youtube/v3/search?part=snippet&q=eminem&type=video&key=<key>

You can play with parameters to get what you actually need. You also need an API key from https://console.developers.google.com/.

like image 88
Ayush Goyal Avatar answered Sep 24 '22 02:09

Ayush Goyal


You can compare your project against YouTube Direct Lite for Android. Yes, instead of OAuth2, setting API key would be enough.

like image 37
Ibrahim Ulukaya Avatar answered Sep 23 '22 02:09

Ibrahim Ulukaya