Как взять рандомное видео из youtube?
Есть такая же штука, только с фото, как сделать тоже самое только с видео
a = message.text
def make_unicode(a):
if type(a) != unicode:
a = a.decode('utf-8')
url = 'https: // www.youtube.com / results?search_query=' + a
http = urllib3.PoolManager()
response = http.request('GET', url)
soup = BeautifulSoup(response.data)
imgUrls = re.findall('img .*?src="(.*?)"', str(soup))
img .*?src="(.*?)" - может быть есть что-то такое только для видео?
Ответы (1 шт):
Один из возможных вариантов - просто генерировать случайное ID для видео. ID на ютубе составляются из 11 символов, включая в себя все буквы английского алфавита, цифры + символы '_' и '-' На питоне это можно сделать так:
import random
import string
print('https://www.youtube.com/watch?v='+''.join(random.choice(string.ascii_letters + string.digits + '-_') for i in range(11)))
Но стоит учесть, что случайный ID не всегда будет адресовывать вас на существующее видео. Поэтому, советую сгенерировать определенное кол-во ID'шников и потом с помощью простого парсинга проверять, валидны ли они, или нет.
Еще вы можете ознакомиться с данным репозиторием, он работает почти по такому же принципу, при этом используя YouTube Data API v3:
#!/usr/bin/env python3
from googleapiclient.discovery import build
import random
DEVELOPER_KEY = 'YOUR_DEVELOPER_KEY'
YOUTUBE_API_SERVICE_NAME = 'youtube'
YOUTUBE_API_VERSION = 'v3'
prefix = ['IMG ', 'IMG_', 'IMG-', 'DSC ']
postfix = [' MOV', '.MOV', ' .MOV']
def youtube_search():
youtube = build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION, developerKey=DEVELOPER_KEY)
search_response = youtube.search().list(
q=random.choice(prefix) + str(random.randint(999, 9999)) + random.choice(postfix),
part='snippet',
maxResults=5
).execute()
videos = []
for search_result in search_response.get('items', []):
if search_result['id']['kind'] == 'youtube#video':
videos.append('%s' % (search_result['id']['videoId']))
return (videos[random.randint(0, 2)])
print(youtube_search())