Exemple #1
0
def playlist_videos(youtube: api.Resource,
                    playlist_id: str) -> Iterator[YouTubeVideoItemResource]:
    global _total_quota_usage

    page_token = None
    while True:
        _total_quota_usage += 1
        playlist_request = youtube.playlistItems().list(
            part="contentDetails,snippet",
            maxResults=50,
            playlistId=playlist_id,
            pageToken=page_token,
        )
        raw_playlist_response = playlist_request.execute()
        playlist_response = YouTubePlaylistListResponse.from_dict(
            raw_playlist_response)

        video_request = youtube.videos().list(
            id=",".join([
                item.contentDetails.videoId for item in playlist_response.items
                if item.snippet.title not in
                ["Deleted video", "Private video"]
            ]),
            part="contentDetails,snippet",
        )
        raw_response = video_request.execute()
        video_response = YouTubeVideoListResponse.from_dict(raw_response)

        for playlist_item in video_response.items:
            yield playlist_item

        if playlist_response.nextPageToken is None:
            break
        page_token = playlist_response.nextPageToken
def insert_playlist_item(youtube: d.Resource, youtube_id: str,
                         playlist_id: str, position: int):
    print(f'Inserting #{youtube_id} into playlist at position {position}')
    request = youtube.playlistItems().insert(part="snippet",
                                             body={
                                                 "snippet": {
                                                     "playlistId": playlist_id,
                                                     "position": position,
                                                     "resourceId": {
                                                         "kind":
                                                         "youtube#video",
                                                         "videoId": youtube_id
                                                     }
                                                 }
                                             })
    response = request.execute()
    return response
def get_channel_videos(youtube: d.Resource):
    print(f"Get videos for my channel")
    request = youtube.channels().list(mine=True, part='contentDetails')
    uploads = request.execute()
    playlist_id = \
        uploads["items"][0]["contentDetails"]["relatedPlaylists"]["uploads"]
    uploaded_videos = []
    next_page_token = None
    while 1:
        res = youtube.playlistItems().list(
            playlistId=playlist_id,
            part='snippet',
            maxResults=50,
            pageToken=next_page_token).execute()
        uploaded_videos += res['items']
        next_page_token = res.get('nextPageToken')
        if next_page_token is None:
            break
    return uploaded_videos