2011-03-12
■[ruby]YouTubeなんちゃらかんちゃらから適当にプレイリスト引っ張ってきてwatchページのURLを列挙するだけ
試験運用中(?)らしい YouTube - Broadcast Yourself
検索してうまく引っかかるとプレイリストを作ってくれる。あんまり引っかからない。
プレイリストに入ってる曲のURL一覧を出力するだけのスクリプトを書いた。
ソース適当なのであとで直す。
#!ruby -Ks require 'rubygems' require 'cgi' require 'open-uri' require 'yaml' require 'mechanize' class YoutubeDisco def initialize keyword @youtube_uri = "http://www.youtube.com" @@agent = Mechanize.new @@keyword = CGI.escape(keyword) end def show search_path = '/disco?action_search=1&query=' search_uri = @youtube_uri + search_path + @@keyword disco_uri = @youtube_uri + get_disco_path(search_uri) playlist_uri = @youtube_uri + get_playlist_path(disco_uri) get_playlist_videos_uri(playlist_uri) end def get_disco_path uri json = get_json(uri) disco_path = json['url'].sub(/\\/,'') end def get_playlist_path uri page = get_page(uri) (page/'//span[@id="quicklist-title"]/a')[0].attributes['href'].value end def get_playlist_videos_uri uri playlists = [] page = get_page(uri) (page/'//li[@class="album-row "]/a').each { |row| play_uri = @youtube_uri + row.attributes['href'].value playlists.push(play_uri) # ってなんでですか〜〜〜 } playlists end def get_page uri return @@agent.get(uri) end def get_json uri response = '' open (uri) { |f| response = f.read } YAML.load(response) end private :get_playlist_path, :get_playlist_videos_uri, :get_page, :get_json end keyword = ARGV.shift p YoutubeDisco.new(keyword).show
トラックバック - http://d.hatena.ne.jp/himeatball/20110312/1299920415
リンク元
- 318 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cts=1330668723664&ved=0CDQQFjAA&url=http://d.hatena.ne.jp/himeatball/20081009/1223572372&ei=sGRQT_DVNuOimQWoxoGqCg&usg=AFQjCNG3UTsxxJiT7YAdXrVQ4oxhiaGMVA&sig2=X79f3wYG6qy7qHHeD6m
- 288 http://www.google.co.jp/url?sa=t&source=web&cd=1&ved=0CBkQFjAA&url=http://d.hatena.ne.jp/himeatball/20080508/1210253432&rct=j&q=g95 cygwin&ei=FpGyTajUCI-8vwOwsryQBw&usg=AFQjCNHrK7WC5FudVS6v-vxgY-n-kdwpXg&cad=rja
- 215 http://www.google.co.jp/url?sa=t&rct=j&q=aptitude apt-get??????&source=web&cd=2&ved=0CCUQFjAB&url=http://d.hatena.ne.jp/himeatball/20081009/1223572372&ei=uBSETu-SBurdiALI7Om1DA&usg=AFQjCNG3UTsxxJiT7YAdXrVQ4oxhiaGMVA
- 188 http://www.google.co.jp/url?sa=t&rct=j&q=aptitude apt-get ??????&source=web&cd=2&ved=0CCUQFjAB&url=http://d.hatena.ne.jp/himeatball/20081009/1223572372&ei=oUWETofGBuidmQWl38AF&usg=AFQjCNG3UTsxxJiT7YAdXrVQ4oxhiaGMVA&cad=rja
- 137 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4ADRA_jaJP376JP412&q=cygwin+g95
- 127 http://www.google.co.jp/url?sa=t&rct=j&q=apt-get aptitude ??????&source=web&cd=1&ved=0CB8QFjAA&url=http://d.hatena.ne.jp/himeatball/20081009/1223572372&ei=MHufTqqgNeWuiQfn0uTZBg&usg=AFQjCNG3UTsxxJiT7YAdXrVQ4oxhiaGMVA&sig2=arqGL
- 125 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CDYQFjAB&url=http://d.hatena.ne.jp/himeatball/20081009/1223572372&ei=ag8ZT-XWKcKSiAfslaT6Cw&usg=AFQjCNG3UTsxxJiT7YAdXrVQ4oxhiaGMVA
- 124 http://search.yahoo.co.jp/search?p=cod+bo+カスタムクラス&search.x=1&fr=top_ga1_sa&tid=top_ga1_sa&ei=UTF-8&aq=&oq=
- 108 http://www.google.co.jp/url?sa=t&rct=j&q=aptitude apt-get&source=web&cd=3&sqi=2&ved=0CEcQFjAC&url=http://d.hatena.ne.jp/himeatball/20081009/1223572372&ei=_VWgTvyjG42dmQX2jbnqBA&usg=AFQjCNG3UTsxxJiT7YAdXrVQ4oxhiaGMVA
- 108 http://www.google.co.jp/url?sa=t&source=web&cd=1&ved=0CBgQFjAA&url=http://d.hatena.ne.jp/himeatball/20101222/1293044995&rct=j&q=cod bo カスタム&ei=E16TTZHDLZDuvQPNx4W9CA&usg=AFQjCNH1iJRBmf6v6XDEWU0BLWX2KImtQQ
