-
Notifications
You must be signed in to change notification settings - Fork 986
/
Copy pathvideo.py
35 lines (33 loc) · 1.64 KB
/
video.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import requests
import requests_cache
import config
import os
from templates.generic import *
from templates.text import TextTemplate
from error_msg import QUERY_ERROR
YOUTUBE_DATA_API_KEY = os.environ.get('YOUTUBE_DATA_API_KEY', config.YOUTUBE_DATA_API_KEY)
def process(input, entities):
output = {}
try:
video = entities['video'][0]['value']
with requests_cache.enabled('video_cache', backend='sqlite', expire_after=3600):
r = requests.get('https://www.googleapis.com/youtube/v3/search?part=snippet&maxResults=10&q=' + video + '&type=video&key=' + YOUTUBE_DATA_API_KEY)
data = r.json()
template = GenericTemplate()
for item in data['items']:
title = item['snippet']['title']
item_url = 'https://www.youtube.com/watch?v=' + item['id']['videoId']
image_url = item['snippet']['thumbnails']['high']['url']
subtitle = item['snippet']['channelTitle']
buttons = ButtonTemplate()
buttons.add_web_url('YouTube Link', 'https://www.youtube.com/watch?v=' + item['id']['videoId'])
buttons.add_web_url('Channel Link', 'https://www.youtube.com/channel/' + item['snippet']['channelId'])
template.add_element(title=title, item_url=item_url, image_url=image_url, subtitle=subtitle, buttons=buttons.get_buttons())
output['input'] = input
output['output'] = template.get_message()
output['success'] = True
except:
error_message = QUERY_ERROR.format('videos') + EXAMPLE_VIDEOS
output['error_msg'] = TextTemplate(error_message).get_message()
output['success'] = False
return output