Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Youtube API get unlisted videos

for a project i have to list all videos from a youtube user account. I'm getting all public videos, but when i make an api call after oauth i still get only public videos.

Unlisted videos are videos that are hidden from search engine and user public page. I'm sure there is a way to retrieve that.

Here is my code

var request = gapi.client.youtube.playlistItems.list({
            playlistId: listId,
            part: 'snippet,status',
            maxResults: 25,
            pageToken: nextPageToken
        });

        request.execute(function(response) {
            console.log(response)
            nextPageToken = response.nextPageToken
            if ('error' in response) {
                displayMessage(response.error.message);
            } else {
                if ('items' in response) {
                    console.log(response.items)

                    var a = [];
                    for(var i in response.items){

                        var d = {
                            title: response.items[i].snippet.title,
                            videoId: response.items[i].snippet.resourceId.videoId,
                            publishedAt: response.items[i].snippet.publishedAt
                        }
                        a.push(d);

                        $("#message").append(JSON.stringify(d))
                    }



                } else {
                    displayMessage('There are no videos in your channel.');
                }
            }
        });
like image 758
Bounews Avatar asked Sep 08 '15 09:09

Bounews


People also ask

Is YouTube API key free?

YouTube Data API costs are based on quota usage, and all requests will incur at least a 1-point quota cost. For each project, you're allowed 10,000 free quota units per day.

Is YouTube Data API v3 free?

Yes, using the YouTube API does not incur any monetary cost for the entity calling the API. If you go over your quota an 403 Error will be returned by the API.

Can you download videos using YouTube API?

You can download youtube videos as mp3 music and mp4 video. Convert & Download single video or multiple Youtube videos in Mp3 format using our youtube to mp3 API. Multiple Embedding features are supported like html link, javascript, iframe.


1 Answers

You can get unlisted videos without going the OAuth route using an API key though many online say you cannot. Here is what I found:

Go to https://console.developers.google.com and create an API key for Youtube Data API v3. API key, NOT OAuth ClientId. Your API key should look something like "AISdkJKdk7GuSkDKJDKSkLmSSdDFm4ro4E_4et_ww"

If using C# Download Google.Apis.YouTube.v3 Version 1.40.2.1593 from Nuget. If not download the equivalent library for your language.

Next go to your You Tube account and create a new playlist called "Unlisted Videos returned by API Key" (In YouTube studio if you edit a video you already have uploaded there is a drop down menu for Playlist where you can assign one that already exists or create a new one)

Then go to your channel, and click the playlist tab. Edit the new playlist you just created so that it is Unlisted or else your Unlisted videos you add to this playlist will be visible on the UI of your channel.

On your channel find the playlist you created again and click to view it. The URL you are taken to will have a &list query string parameter and you need to get that Id. Example: https://www.youtube.com/watch?v=kskScbSkdSDg&list=DKfiVi8sZdkZqW-saZt7bN8DDTDxshjDK. In this example our list (PlalistId) value is DKfiVi8sZdkZqW-saZt7bN8DDTDxshjDK which will be needed when calling our GetPlaylistVideos method.

Now you have the pre-requisites done. Time for the code:

    public static List<YouTubeVideo> GetPlaylistVideos(string PlaylistId)
    {
        List<YouTubeVideo> result = new List<YouTubeVideo>();

        try
        {
            YouTubeService service = new YouTubeService(new BaseClientService.Initializer()
            {
                ApplicationName = YOUTUBE_APPLICATION_NAME,
                ApiKey = YOUTUBE_API_KEY
            });

            var nextPageToken = "";
            while (nextPageToken != null)
            {
                var playlistItemsListRequest = service.PlaylistItems.List("snippet");
                playlistItemsListRequest.PlaylistId = PlaylistId;
                playlistItemsListRequest.MaxResults = 50;
                playlistItemsListRequest.PageToken = nextPageToken;

                // Retrieve the list of videos uploaded to the authenticated user's channel.
                var playlistItemsListResponse = playlistItemsListRequest.Execute();

                foreach (var playlistItem in playlistItemsListResponse.Items)
                {

                    YouTubeVideo v = new YouTubeVideo
                    {
                        EmbedUrl = String.Format("https://www.youtube.com/embed/{0}", playlistItem.Snippet.ResourceId.VideoId),
                        Title = playlistItem.Snippet.Title,
                        Description = playlistItem.Snippet.Description,
                        ThumbnailUrl = playlistItem.Snippet.Thumbnails.High.Url
                    };

                    result.Add(v);
                }

                nextPageToken = playlistItemsListResponse.NextPageToken;
            }

        }

If you call the GetPlaylistVideos you will see it returns the unlisted videos from your unlisted playlist using an API key and not OAuth.

like image 193
vvvv4d Avatar answered Nov 07 '22 09:11

vvvv4d