2017-06

スポンサーサイト

このエントリーをはてなブックマークに追加
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

YouTube APIから再生リストをタブ区切りTSVに変えるPythonスクリプト

このエントリーをはてなブックマークに追加
使い方ですが、YouTube APIの再生リストIDを指定して使います

一般的には
$ python main.py playlistID
となります。

Playlist IDは、例えばHIDETCHIさんのHow To Play Shogiのリストを例に取ると、URLの最後の587865CAE59EB84Aというのが、再生リストIDになります。
この再生リストのCSVを取得するには、

$ python main.py 587865CAE59EB84A

となります。

現在の制約としては再生リストに50件以上含まれていると50件までしか取得できないことです。

以下はソースコードです。大したことやってないので適当に使ってください。
Python 2.7.1での動作を確認しています。
あとWindowsでの動作を前提にしているので最終的に吐き出すCSVがShift-JISになっています。他のOSで使う場合などですは、EUC-JPなど適当なエンコードに置き換えてください。


#!/usr/bin/env python
import sys
import types
import urllib2
from xml.dom.minidom import parseString

def main():
if len(sys.argv) < 2:
sys.stderr.write('Usage: # python %s playlistID' % sys.argv[0]);
quit()

try:
playlist_url = "http://gdata.youtube.com/feeds/api/playlists/" + sys.argv[1] + "?v=2&max-results=50"
sys.stderr.write('Get URL:' + playlist_url + "\n")
result = urllib2.urlopen(playlist_url)
playlist_contents = result.read()

playlist_dom = parseString(playlist_contents)
entry_nodes = playlist_dom.getElementsByTagName('entry')

sys.stderr.write('entry node length:' + str(len(entry_nodes)))

i=0
for entry_node in entry_nodes:
title_node = entry_node.getElementsByTagName('title')[0]
text_node = title_node.firstChild

if type(text_node) != types.NoneType:
title = unicode(text_node.nodeValue)
else:
sys.stderr.write("No title text was found\n")
continue

link_nodes = entry_node.getElementsByTagName('link')
for link_node in link_nodes:
if link_node.getAttribute('type') == "text/html":
url = unicode(link_node.getAttribute('href'))
break

csv_line = title + "\t" + url
print csv_line.encode("Shift_JIS")

playlist_dom.unlink()

except urllib2.HTTPError, e:
sys.stderr.write('HTTPError:' + sys.argv[1] + ' Code:' + str(e.code) + "\n")
except urllib2.URLError, e:
sys.stderr.write('Unable to access:' + sys.argv[1] + ' Reason:' + e.reason + "\n")


if __name__ == '__main__':
main()
関連記事
スポンサーサイト

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

http://fantakeshi.blog50.fc2.com/tb.php/18-dfe3d25f
この記事にトラックバックする(FC2ブログユーザー)

«  | ホーム |  »

プロフィール

fantakeshi

Author:fantakeshi
Web:ここ
Twitter ID:fantakeshi
自作物やプログラムやまとまった技術的メモについて

RSSに追加

自作物

最新記事

Twitter

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

自作物 (26)
一般 (1)
将棋 (12)
BONANZA (1)
ponanza (1)
HTML5 (2)
Chrome (1)
WebAPI (1)
Webサイト (2)
プログラム (2)
Tips (1)

カウンター

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。