コード例 #1
0
    def add_video_to_queue(self, vid_data):
        youtube = client.YoutubeClientHandler()
        body = {
            'snippet': {
                'playlistId': self.queue_id,
                'resourceId': {
                    'kind': "youtube#video",
                    'videoId': vid_data['id']
                }
            }
        }
        try:
            logger.write("Adding to queue: %s - %s" %
                         (vid_data['snippet']['channelTitle'],
                          vid_data['snippet']['title']))
            request = youtube.client.playlistItems().insert(part='snippet',
                                                            body=body)
            response = youtube.execute(request)
            self.records.add_record(vid_data=vid_data)
        except googleapiclient.errors.HttpError as e:
            print(e.content)
            print(e.error_details)
            print(e.resp)
            raise

        return response
コード例 #2
0
def main():
    handler = client.YoutubeClientHandler()

    request = handler.client.channels().list(
        part="snippet,contentDetails,statistics",
        id="UC_x5XG1OV2P6uZZ5FSM9Ttw")
    response = request.execute()

    print(response)

    return None
コード例 #3
0
    def get_latest(self, all=False):
        logger.write("Getting latest videos: %s" % self.name)
        youtube = client.YoutubeClientHandler()

        request = youtube.client.playlistItems().list(
            part="contentDetails", maxResults=50, playlistId=self.playlist_id)

        response = youtube.execute(request)

        items = response['items']

        pages = 1
        if all:
            while 'nextPageToken' in response:
                request = youtube.client.playlistItems().list(
                    part="contentDetails",
                    maxResults=50,
                    playlistId=self.playlist_id,
                    pageToken=response['nextPageToken'])
                response = youtube.execute(request)
                items = items + response['items']
                pages += 1
        logger.write("Pages of videos for %s: %i" % (self.name, pages))
        logger.write("Videos fetched for %s: %i" % (self.name, len(items)))

        request_list = [[]]
        counter = 0
        total = 0
        page = 0
        results = []
        for item in items:
            vid_id = item['contentDetails']['videoId']
            published_date = str(item['contentDetails']['videoPublishedAt']
                                 ).split('.')[0].replace("Z", "") + ".0"
            record = {
                'videoId': vid_id,
                'publishedAt': datetime.strptime(published_date,
                                                 self.date_format),
                'channelId': self.channel_id
            }
            if self.vid_is_valid(record):
                request_list[page].append(vid_id)
                counter += 1
                total += 1
            if counter == 50:
                counter = 0
                request_list.append([])
                page += 1

        logger.write("Videos requiring additional details for %s: %i" %
                     (self.name, total))

        page_num = 0
        threads = []
        for page_list in request_list:
            id_list = ",".join(page_list)
            kwargs = {"part": "snippet", "id": id_list}
            page_id = "%s Page %i" % (self.name, page_num)
            page_num += 1
            request = RequestThreader(page_id=page_id, request_kwargs=kwargs)
            threads.append(request)

        for thread in threads:
            thread.start()

        for thread in threads:
            thread.join()

        for thread in threads:
            # response = thread.response
            # request = youtube.client.videos().list(**kwargs)
            # response = youtube.execute(request)
            results += thread.response['items']

        for vid_details in results:
            vid_details['snippet']['publishedAt'] = self.correct_date_format(
                vid_details['snippet']['publishedAt'])

        results = sorted(results,
                         reverse=True,
                         key=lambda x: x['snippet']['publishedAt'])
        self.newest = results
コード例 #4
0
 def run(self):
     logger.write("Starting RequestThreader thread: %s" % self.name)
     youtube = client.YoutubeClientHandler()
     request = youtube.client.videos().list(**self.kwargs)
     self.response = youtube.execute(request)
コード例 #5
0
 def __init__(self, **kwargs):
     self.tier = kwargs['tier']
     self.id = kwargs['id']
     self.videos = []
     self.client = client.YoutubeClientHandler().get_client()