예제 #1
0
    def get_subscriptions(self, email):
        all_subscriptions = []
        query_subscriptions = []

        ## Get access token from userinfo
        user_related = UserRelated()
        query_user_info = user_related.get_user_info(email=email)
        access_token = query_user_info.access_token

        query_url = Youtube.subscriptions_url
        while True:
            response = self.api_querying(query_url, access_token)
            query_subscriptions.extend(response['items'])
            if 'nextPageToken' in response:
                query_url = '%s&pageToken=%s' % (Youtube.subscriptions_url,
                                                 response['nextPageToken'])
            else:
                break

        for subscription in query_subscriptions:
            temp_dict = {}
            temp_dict['thumbnail'] = subscription['snippet']['thumbnails'][
                'default']['url']
            temp_dict['title'] = subscription['snippet']['title']
            temp_dict['channelid'] = subscription['snippet']['resourceId'][
                'channelId']
            all_subscriptions.append(temp_dict)

        return all_subscriptions
예제 #2
0
    def add_new_playlist(self, email):
        ## Get access token from userinfo
        user_related = UserRelated()
        query_user_info = user_related.get_user_info(email=email)
        access_token = query_user_info.access_token

        ## Create new playlist
        default_playlist_title = 'YouGroupe'
        default_playlist_description = 'Playlist for YouGroupe, http://youtube-grouper.appspot.com/'

        query_para = {'part': 'snippet,status'}
        query_para = self.query_dict_2_para(query_para)
        query_data = {
            'snippet': {
                'title': default_playlist_title,
                'description': default_playlist_description
            },
            'status': {
                'privacyStatus': 'public'
            }
        }
        query_data = json.dumps(query_data)
        query_url = "%s%s" % (Youtube.playlist_url, query_para)
        response = self.api_querying(query_url=query_url,
                                     access_token=access_token,
                                     query_data=query_data)

        return response['id']
예제 #3
0
    def add_video_into_playlist(self, email, playlist_id, video_id):
        ## Get access token from userinfo
        user_related = UserRelated()
        query_user_info = user_related.get_user_info(email=email)
        access_token = query_user_info.access_token

        query_para = {'part': 'snippet'}
        query_para = self.query_dict_2_para(query_para)
        query_data = {
            'snippet': {
                'playlistId': playlist_id,
                'resourceId': {
                    'videoId': video_id,
                    'kind': 'youtube#video'
                }
            }
        }
        query_data = json.dumps(query_data)
        query_url = "%s%s" % (Youtube.playlistitem_url, query_para)
        try:
            response = self.api_querying(query_url=query_url,
                                         access_token=access_token,
                                         query_data=query_data)
            return response
        except:
            return None
	def get_subscriptions(self, email):
		all_subscriptions = []
		query_subscriptions = []

		## Get access token from userinfo
		user_related = UserRelated()
		query_user_info = user_related.get_user_info(email=email)
		access_token = query_user_info.access_token

		query_url = Youtube.subscriptions_url
		while True:
			response = self.api_querying(query_url, access_token)
			query_subscriptions.extend(response['items'])
			if 'nextPageToken' in response:
				query_url = '%s&pageToken=%s' % (Youtube.subscriptions_url, response['nextPageToken'])
			else:
				break

		for subscription in query_subscriptions:
			temp_dict = {}
			temp_dict['thumbnail'] = subscription['snippet']['thumbnails']['default']['url']
			temp_dict['title'] = subscription['snippet']['title']
			temp_dict['channelid'] = subscription['snippet']['resourceId']['channelId']
			all_subscriptions.append(temp_dict)

		return all_subscriptions
	def remove_all_from_playlist(self, email, playlist_id):
		## Get access token from userinfo
		user_related = UserRelated()
		query_user_info = user_related.get_user_info(email=email)
		access_token = query_user_info.access_token

		yougroupe_playlist_videos = []
		query_para = {'part' : 'snippet', 'maxResults' : '50', 'playlistId' : playlist_id}
		query_para = self.query_dict_2_para(query_para)
		while True:
			query_url = "%s%s" % (Youtube.playlistitem_url, query_para)
			response = self.api_querying(query_url=query_url, access_token=access_token)
			yougroupe_playlist_videos.extend(response['items'])
			if 'nextPageToken' in response:
				query_para = {'part' : 'snippet', 'maxResults' : '50',
							  'playlistId' : playlist_id, 'pageToken' : response['nextPageToken']}
				query_para = self.query_dict_2_para(query_para)
			else:
				break

		for video_detail in yougroupe_playlist_videos:
			playlist_item_id = video_detail['id']
			video_id = video_detail['snippet']['resourceId']['videoId']

			query_para = {'id' : playlist_item_id}
			query_para = self.query_dict_2_para(query_para)
			query_url = "%s%s" % (Youtube.playlistitem_url, query_para)
			parsed_query_url = urlparse.urlparse(query_url)

			query_domain = parsed_query_url.netloc
			query_path_para = '%s?%s' % (parsed_query_url.path, parsed_query_url.query)
			response = self.api_querying_method("DELETE", query_domain, query_path_para, access_token)
예제 #6
0
    def get_mine_channel_details(self, email):
        user_related = UserRelated()
        ## Get access token from userinfo
        query_user_info = user_related.get_user_info(email=email)
        access_token = query_user_info.access_token

        query_para = {'part': 'contentDetails', 'mine': 'true'}
        query_para = self.query_dict_2_para(query_para)
        query_url = "%s%s" % (Youtube.channel_url, query_para)
        response = self.api_querying(query_url, access_token)

        return response
예제 #7
0
    def query_video(self, email, video_id):
        ## Get access token from userinfo
        user_related = UserRelated()
        query_user_info = user_related.get_user_info(email=email)
        access_token = query_user_info.access_token

        query_para = {'part': 'snippet', 'id': video_id}
        query_para = self.query_dict_2_para(query_para)
        query_url = "%s%s" % (Youtube.videos_url, query_para)
        response = self.api_querying(query_url, access_token)

        return response
	def get_mine_channel_details(self, email):
		user_related = UserRelated()
		## Get access token from userinfo
		query_user_info = user_related.get_user_info(email=email)
		access_token = query_user_info.access_token

		query_para = {'part' : 'contentDetails', 'mine' : 'true'}
		query_para = self.query_dict_2_para(query_para)
		query_url = "%s%s" % (Youtube.channel_url, query_para)
		response = self.api_querying(query_url, access_token)

		return response
	def query_video(self, email, video_id):
		## Get access token from userinfo
		user_related = UserRelated()
		query_user_info = user_related.get_user_info(email=email)
		access_token = query_user_info.access_token

		query_para = {'part' : 'snippet', 'id' : video_id}
		query_para = self.query_dict_2_para(query_para)
		query_url = "%s%s" % (Youtube.videos_url, query_para)
		response = self.api_querying(query_url, access_token)

		return response
예제 #10
0
    def get_channel_details(self, channel_id, email):
        user_related = UserRelated()
        ## Get access token from userinfo
        query_user_info = user_related.get_user_info(email=email)
        access_token = query_user_info.access_token

        ## Query and get the upload video playlist id
        query_para = {'part': 'contentDetails', 'id': channel_id}
        query_para = self.query_dict_2_para(query_para)
        query_url = "%s%s" % (Youtube.channel_url, query_para)
        response = self.api_querying(query_url, access_token)

        return response
예제 #11
0
	def get_channel_details(self, channel_id, email):
		user_related = UserRelated()
		## Get access token from userinfo
		query_user_info = user_related.get_user_info(email=email)
		access_token = query_user_info.access_token

		## Query and get the upload video playlist id
		query_para = {'part' : 'contentDetails', 'id' : channel_id}
		query_para = self.query_dict_2_para(query_para)
		query_url = "%s%s" % (Youtube.channel_url, query_para)
		response = self.api_querying(query_url, access_token)

		return response
예제 #12
0
    def remove_watched_from_playlist(self, email, playlist_id,
                                     watch_history_playlist_id):
        ## Get access token from userinfo
        user_related = UserRelated()
        query_user_info = user_related.get_user_info(email=email)
        access_token = query_user_info.access_token

        yougroupe_playlist_videos = []
        query_para = {
            'part': 'snippet',
            'maxResults': '50',
            'playlistId': playlist_id
        }
        query_para = self.query_dict_2_para(query_para)
        while True:
            query_url = "%s%s" % (Youtube.playlistitem_url, query_para)
            response = self.api_querying(query_url=query_url,
                                         access_token=access_token)
            yougroupe_playlist_videos.extend(response['items'])
            if 'nextPageToken' in response:
                query_para['nextPageToken'] = response['nextPageToken']
                query_para = self.query_dict_2_para(query_para)
            else:
                break

        for video_detail in yougroupe_playlist_videos:
            playlist_item_id = video_detail['id']
            video_id = video_detail['snippet']['resourceId']['videoId']

            ## Query to see if the video in watch history
            query_para = {
                'part': 'contentDetails',
                'videoId': video_id,
                'playlistId': watch_history_playlist_id
            }
            query_para = self.query_dict_2_para(query_para)
            query_url = "%s%s" % (Youtube.playlistitem_url, query_para)
            response = self.api_querying(query_url=query_url,
                                         access_token=access_token)

            if response['pageInfo']['totalResults'] == 1:
                query_para = {'id': playlist_item_id}
                query_para = self.query_dict_2_para(query_para)
                query_url = "%s%s" % (Youtube.playlistitem_url, query_para)

                query_domain = parsed_query_url.netloc
                query_path_para = '%s?%s' % (parsed_query_url.path,
                                             parsed_query_url.query)
                response = self.api_querying_method("DELETE", query_domain,
                                                    query_path_para,
                                                    access_token)
예제 #13
0
	def add_video_into_playlist(self, email, playlist_id, video_id):
		## Get access token from userinfo
		user_related = UserRelated()
		query_user_info = user_related.get_user_info(email=email)
		access_token = query_user_info.access_token

		query_para = {'part' : 'snippet'}
		query_para = self.query_dict_2_para(query_para)
		query_data = {'snippet' : {'playlistId' : playlist_id,
								   'resourceId' : {'videoId' : video_id, 'kind' : 'youtube#video'}}}
		query_data = json.dumps(query_data)
		query_url = "%s%s" % (Youtube.playlistitem_url, query_para)
		response = self.api_querying(query_url=query_url, access_token=access_token, query_data=query_data)

		return response
예제 #14
0
    def get_upload_viedos(self, playlist_id, email):
        upload_videos = []
        user_related = UserRelated()
        show_days_delta = 14

        ## Get access token from userinfo
        query_user_info = user_related.get_user_info(email=email)
        access_token = query_user_info.access_token

        ## Get the video in the upload play list
        query_para = {
            'part': 'contentDetails',
            'playlistId': playlist_id,
            'maxResults': 50
        }
        query_para = self.query_dict_2_para(query_para)
        query_url = "%s%s" % (Youtube.playlistitem_url, query_para)
        response = self.api_querying(query_url, access_token)
        channel_upload_videos = response['items']

        for channel_upload_video in channel_upload_videos:
            temp_dict = {}
            video_id = channel_upload_video['contentDetails']['videoId']
            query_para = {'part': 'snippet', 'id': video_id}
            query_para = self.query_dict_2_para(query_para)
            query_url = "%s%s" % (Youtube.videos_url, query_para)
            response = self.api_querying(query_url, access_token)

            video_upload_date = response['items'][0]['snippet'][
                'publishedAt'].split('T')[0]
            if (datetime.datetime.now() - datetime.datetime.strptime(
                    video_upload_date, '%Y-%m-%d')).days > show_days_delta:
                break
            else:
                temp_dict['video_id'] = video_id
                temp_dict['video_upload_date'] = video_upload_date
                temp_dict['video_thumbnail'] = response['items'][0]['snippet'][
                    'thumbnails']['default']['url']
                temp_dict['video_title'] = response['items'][0]['snippet'][
                    'title']
                temp_dict['channel_title'] = response['items'][0]['snippet'][
                    'channelTitle']

                upload_videos.append(temp_dict)
        return upload_videos
예제 #15
0
	def add_new_playlist(self, email):
		## Get access token from userinfo
		user_related = UserRelated()
		query_user_info = user_related.get_user_info(email=email)
		access_token = query_user_info.access_token

		## Create new playlist
		default_playlist_title = 'YouGroupe'
		default_playlist_description = 'Playlist for YouGroupe, http://youtube-grouper.appspot.com/'

		query_para = {'part' : 'snippet,status'}
		query_para = self.query_dict_2_para(query_para)
		query_data = {'snippet' : {'title' : default_playlist_title, 'description' : default_playlist_description},
					  'status' : {'privacyStatus' : 'public'}}
		query_data = json.dumps(query_data)
		query_url = "%s%s" % (Youtube.playlist_url, query_para)
		response = self.api_querying(query_url=query_url, access_token=access_token, query_data=query_data)

		return response['id']
예제 #16
0
	def get_upload_viedos(self, playlist_id, email):
		upload_videos = []
		user_related = UserRelated()
		show_days_delta = 14

		## Get access token from userinfo
		query_user_info = user_related.get_user_info(email=email)
		access_token = query_user_info.access_token

		## Get the video in the upload play list
		query_para = {'part' : 'contentDetails', 'playlistId' : playlist_id, 'maxResults' : 50}
		query_para = self.query_dict_2_para(query_para)
		query_url = "%s%s" % (Youtube.playlistitem_url, query_para)
		response = self.api_querying(query_url, access_token)
		channel_upload_videos = response['items']

		for channel_upload_video in channel_upload_videos:
			temp_dict = {}
			video_id = channel_upload_video['contentDetails']['videoId']
			query_para = {'part' : 'snippet', 'id' : video_id}
			query_para = self.query_dict_2_para(query_para)
			query_url = "%s%s" % (Youtube.videos_url, query_para)
			response = self.api_querying(query_url, access_token)

			video_upload_date = response['items'][0]['snippet']['publishedAt'].split('T')[0]
			if (datetime.datetime.now() - datetime.datetime.strptime(video_upload_date, '%Y-%m-%d')).days > show_days_delta:
				break
			else:
				temp_dict['video_id'] = video_id
				temp_dict['video_upload_date'] = video_upload_date
				temp_dict['video_thumbnail'] = response['items'][0]['snippet']['thumbnails']['default']['url']
				temp_dict['video_title'] = response['items'][0]['snippet']['title']
				temp_dict['channel_title'] = response['items'][0]['snippet']['channelTitle']

				upload_videos.append(temp_dict)
		return upload_videos