Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Adding youtube video to playlist using Python

I am creating a script to upload videos to youtube using Google's YouTube data API version 3.
for uploading I followed the example given at https://developers.google.com/youtube/v3/guides/uploading_a_video

now I want to add uploaded video to playlist in my youtube channel. I did not find any example code for doing this in Python for YouTube Data API version 3.

This question is giving me answer but its for older version(version 1) of Youtube Data API

I guess developers.google.com/youtube/v3/docs/playlistItems/insert can help me, but I am not sure of arguments to be passed into insert() in youtube.playlistItem().insert()

I am looking for some help or example code to add video in playlist using Python for API v3.

like image 739
user3214243 Avatar asked Dec 19 '22 19:12

user3214243


2 Answers

code is:

    import httplib2
    import os
    import sys

    from apiclient.discovery import build
    from apiclient.errors import HttpError
    from oauth2client.client import flow_from_clientsecrets
    from oauth2client.file import Storage
    from oauth2client.tools import argparser, run


    # The CLIENT_SECRETS_FILE variable specifies the name of a file that contains
    # the OAuth 2.0 information for this application, including its client_id and
    # client_secret. You can acquire an OAuth 2.0 client ID and client secret from
    # the Google Cloud Console at
    # https://cloud.google.com/console.
    # Please ensure that you have enabled the YouTube Data API for your project.
    # For more information about using OAuth2 to access the YouTube Data API, see:
    #   https://developers.google.com/youtube/v3/guides/authentication
    # For more information about the client_secrets.json file format, see:
    #   https://developers.google.com/api-client-library/python/guide/aaa_client_secrets

    CLIENT_SECRETS_FILE = "client_secrets.json"

    # This variable defines a message to display if the CLIENT_SECRETS_FILE is
    # missing.
    MISSING_CLIENT_SECRETS_MESSAGE = """
    WARNING: Please configure OAuth 2.0

    To make this sample run you will need to populate the client_secrets.json file
    found at:

    %s

    with information from the Cloud Console
    https://cloud.google.com/console

    For more information about the client_secrets.json file format, please visit:
    https://developers.google.com/api-client-library/python/guide/aaa_client_secrets
    """ % os.path.abspath(os.path.join(os.path.dirname(__file__),
                               CLIENT_SECRETS_FILE))

    # This OAuth 2.0 access scope allows for full read/write access to the
    # authenticated user's account.
    YOUTUBE_SCOPE = "https://www.googleapis.com/auth/youtube"
    YOUTUBE_API_SERVICE_NAME = "youtube"
    YOUTUBE_API_VERSION = "v3"


    def get_authenticated_service():
        flow = flow_from_clientsecrets(CLIENT_SECRETS_FILE, scope=YOUTUBE_SCOPE,
        message=MISSING_CLIENT_SECRETS_MESSAGE)

        storage = Storage("%s-oauth2.json" % sys.argv[0])
        credentials = storage.get()

        if credentials is None or credentials.invalid:
            credentials = run(flow, storage)

        return build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION,
            http=credentials.authorize(httplib2.Http()))


    def add_video_to_playlist(youtube,videoID,playlistID):
      add_video_request=youtube.playlistItem().insert(
      part="snippet",
      body={
            'snippet': {
              'playlistId': playlistID, 
              'resourceId': {
                      'kind': 'youtube#video',
                  'videoId': videoID
                }
            #'position': 0
            }
    }
     ).execute()

    if __name__ == '__main__':
     youtube = get_authenticated_service()
         add_video_to_playlist(youtube,"yszl2oxi8IY","PL2JW1S4IMwYubm06iDKfDsmWVB-J8funQ")
like image 71
user3214243 Avatar answered Jan 06 '23 08:01

user3214243


You are using the right method, for parameters:

part: snippet (or whatever part of the playlistItem resource you want in return)

snippet.playlistId: id of the playlist to add. you can find it through playlists.list() method if you don't know it, with setting "mine=true"

snippet.resourceId: video id of the video. you can find it through videos.list() method if you don't know it, with setting "mine=true"

like image 33
Ibrahim Ulukaya Avatar answered Jan 06 '23 07:01

Ibrahim Ulukaya