YouTube 再生リストの表示

YouTubeで、特定名称の再生リストにある動画の一覧を表示したく、リファレンス ガイド: Data API プロトコル – YouTube の API とツール – Google Codeを読んで実装を試みた。

再生リストに関するやりたいこと

  • Read:動画一覧の作成
  • Update:再生リストにある動画に対するコメント入力
  • Create:特定名称の再生リストがなければ作成
  • Delete:特定名称の再生リストを削除

“Read”だけは実装したいなと。用途は、ピアノの練習動画を定期的にアップロードした再生リストを一覧表示し、そのまま再生(確認)をし、感想・気づいたことをコメントするというもの。(モチベーション維持のため)

メモ

  • ユーザーの再生リストフィードの取得
    • http://gdata.youtube.com/feeds/api/users/”username”/playlists
    • ユーザーが作った再生リスト群の情報をゲット
  • 再生リストのtitleチェック
    • 再生リストフィードはの形
  • 動画には、HTTP POSTでコメント追加できる
    • YouTubeのPHPライブラリがある
    • HTTP POSTを送るのは、fsockopen関数や、PEAR::Http_Requestとかもある

確認ページ:keep_motivation_by_moviepost.php

<form action="" type="get">
<input type="text" name="youtube_username" size="35" maxlength="255" class="help" value="" title="YouTube username" />
<input type="submit" value="search" />
</form>

<?php
function get_user_playlists($youtube_username) {
	$url = 'http://gdata.youtube.com/feeds/api/users/'.
		$youtube_username.
		'/playlists';

	$str = file_get_contents($url);
	$ret = simplexml_load_string($str);

	return $ret;
}

function get_playlist_url($xml, $playlist_name) {
	$ret = '';
	foreach ($xml->entry as $entry) {
//		var_dump($entry);
		if (strcmp($entry->title, $playlist_name) == 0) {
			$gd = $entry->children('http://schemas.google.com/g/2005');
			$attrs = $gd->feedLink->attributes();
			$ret = $attrs['href'];
		}
	}

	return $ret;
}

function make_movie_list($playlist_url) {
	$contents = file_get_contents($playlist_url);
	$xml = simplexml_load_string($contents);
	$html = '<table>';
	foreach ($xml->entry as $entry) {
		$media = $entry->children('http://search.yahoo.com/mrss/');
		$attrs = $media->group->content->attributes();
		$link = $attrs['url'];
		$html_row = '<tr><td rowspan="3" width="120" height="90" align="center">'
			. '<object style="height: 90px; width: 120px"><param name="movie" value="' . $link . '">'
			. '<embed src="' . $link . '" type="application/x-shockwave-flash" width="120" height="90"></object></td>';

		$title = $media->group->title;
		$html_row .= '<td>' . $title . '</td></tr>';

		$published = $entry->published;
		$html_row .= '<tr><td>' . $published . '</td></tr>';

		$yt = $entry->children('http://gdata.youtube.com/schemas/2007');
		$attrs = $yt->statistics->attributes();
		$counter = $attrs['viewCount'];
		$html_row .= '<tr><td>' . $counter . '</td></tr>';

		$html .= $html_row;
	}
	$html .= '</table>';

	return $html;
}

if ($_REQUEST["youtube_username"] !== 'YouTube username') {
	$youtube_username = htmlspecialchars($_REQUEST["youtube_username"], ENT_QUOTES, 'UTF-8');
	$xml = get_user_playlists($youtube_username);
	$playlist_url = get_playlist_url($xml, 'keep_motivation_by_moviepost');
	$html = make_movie_list($playlist_url);
	echo $html;
}
?>

関連エントリー

  1. YouTube 埋め込みプレーヤー
  2. YouTube Data API メモ
  3. YouTube APIとjQuery
  4. TINAMI API
  5. PhoneGapお試し(iOS)
This entry was posted in 未分類 and tagged , , . Bookmark the permalink.