ダーティクローラーはオプションですか? 単純なランダム youtube vid リンク ジェネレーターを使用したためです。大量の動画を蓄積するためだけであり、制作のためではありませんでした。
彼が説明したように、「youtuberandomvideo.com」アプローチに(非常に)似ているようです。
import re, urllib
from random import randint
def random_str(str_size):
res = ""
for i in xrange(str_size):
x = randint(0,25)
c = chr(ord('a')+x)
res += c
return res
def find_watch(text,pos):
start = text.find("watch?v=",pos)
if (start<0):
return None,None
end = text.find(" ",start)
if (end<0):
return None,None
if (end-start > 200): #silly heuristics, probably not a must
return None,None
return text[start:end-1], start
def find_instance_links():
base_url = 'https://www.youtube.com/results?search_query='
url = base_url+random_str(3)
#print url
r = urllib.urlopen(url).read()
links = {}
pos = 0
while True:
link,pos = find_watch(r,pos)
if link == None or pos == None:
break
pos += 1
#print link
if (";" in link):
continue
links[link] = 1
items_list = links.items()
list_size = len(items_list)
selected = randint(list_size/2,list_size-1)
return items_list[selected][0]
for i in xrange(1000):
link = find_instance_links()
print link
ご覧のとおり、かなり単純化されており、おそらく簡単に壊れてしまう可能性がありますが、IIRC を使用して数千のランダムなビデオ リンクをすばやく取得することができました。
コードの説明: (random->pseudo random ...)
1. 検索クエリのランダム生成 (ここでは 3 文字の長さ)
2. 動画リンクの下半分からランダムにリンクを選択 (動機はコマーシャルを避けることでした) )
注: コードは乱雑です。適切なコード設計やエレガントな python コードではなく、テクニックの基本的な例としてのみ役立つはずです。