Zend_Gdata_YouTube.xml 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- Reviewed: no -->
  3. <!-- EN-Revision: 24249 -->
  4. <sect1 id="zend.gdata.youtube">
  5. <title>YouTube Data API の使用法</title>
  6. <para>
  7. YouTube data <acronym>API</acronym> は、YouTube のコンテンツを読み書きする機能を提供します。
  8. 認証済みでないリクエストを Google Data フィードに実行し、
  9. 人気のある動画やコメント、YouTube 登録ユーザの公開情報
  10. (たとえばプレイリストや購読内容、コンタクトなど)
  11. を取得できます。
  12. </para>
  13. <para>
  14. YouTube Data <acronym>API</acronym> についての詳細は、code.google.com の
  15. <ulink url="http://code.google.com/apis/youtube/developers_guide_php.html">
  16. <acronym>PHP</acronym> Developer's Guide</ulink> を参照ください。
  17. </para>
  18. <sect2 id="zend.gdata.youtube.authentication">
  19. <title>認証</title>
  20. <para>
  21. YouTube Data <acronym>API</acronym> は、公開データへの読み取り専用アクセス機能を提供しており、
  22. 認証は不要です。書き込みリクエストを行う場合は、ClientLogin
  23. あるいは AuthSub でのユーザ認証が必要となります。詳細は
  24. <ulink url="http://code.google.com/apis/youtube/developers_guide_php.html#Authentication">
  25. <acronym>PHP</acronym> Developer's Guide の認証のセクション</ulink>
  26. を参照ください。
  27. </para>
  28. </sect2>
  29. <sect2 id="zend.gdata.youtube.developer_key">
  30. <title>Developer Keys および Client ID</title>
  31. <para>
  32. デベロッパーキーは、<acronym>API</acronym> リクエストを行う YouTube
  33. 開発者を識別するためのものです。クライアント ID
  34. は、ログの記録やデバッグなどの際にアプリケーションを識別するものです。
  35. <ulink url="http://code.google.com/apis/youtube/dashboard/">http://code.google.com/apis/youtube/dashboard/</ulink>
  36. でデベロッパーキーとクライアント ID を取得できます。
  37. 下の例は、デベロッパーキーとクライアント ID を
  38. <ulink url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_YouTube.html">Zend_Gdata_YouTube</ulink>
  39. サービスオブジェクトに渡すものです。
  40. </para>
  41. <example id="zend.gdata.youtube.developer_key.example">
  42. <title>Developer Key と ClientID を Zend_Gdata_YouTube に渡す</title>
  43. <programlisting language="php"><![CDATA[
  44. $yt = new Zend_Gdata_YouTube($httpClient,
  45. $applicationId,
  46. $clientId,
  47. $developerKey);
  48. ]]></programlisting>
  49. </example>
  50. </sect2>
  51. <sect2 id="zend.gdata.youtube.videos">
  52. <title>公開動画フィードの取得</title>
  53. <para>
  54. YouTube data <acronym>API</acronym> はさまざまなフィードを提供しており、
  55. たとえば標準の動画一覧や関連する動画一覧、動画への返信一覧、
  56. アップロードした動画の一覧、お気に入りの動画一覧などを取得できます。
  57. たとえばアップロードした動画一覧のフィードは、
  58. 指定したユーザがアップロードしたすべての動画を返します。
  59. どのようなフィードが取得できるのかについては
  60. <ulink url="http://code.google.com/apis/youtube/reference.html#Video_Feeds">
  61. YouTube <acronym>API</acronym> リファレンスガイド</ulink> を参照ください。
  62. </para>
  63. <sect3 id="zend.gdata.youtube.videos.searching">
  64. <title>メタデータによる動画の検索</title>
  65. <para>
  66. 指定した条件にマッチする動画の一覧を、YouTubeQuery
  67. クラスを用いて取得できます。
  68. たとえば次のクエリは、メタデータに "cat" という単語を含む動画を探し、
  69. その結果の 10 番目から 1 ページあたり 20 件ずつ表示します。
  70. また、閲覧回数順に表示します。
  71. </para>
  72. <example id="zend.gdata.youtube.videos.searching.example">
  73. <title>動画の検索</title>
  74. <programlisting language="php"><![CDATA[
  75. $yt = new Zend_Gdata_YouTube();
  76. $query = $yt->newVideoQuery();
  77. $query->videoQuery = 'cat';
  78. $query->startIndex = 10;
  79. $query->maxResults = 20;
  80. $query->orderBy = 'viewCount';
  81. echo $query->queryUrl . "\n";
  82. $videoFeed = $yt->getVideoFeed($query);
  83. foreach ($videoFeed as $videoEntry) {
  84. echo "---------動画----------\n";
  85. echo "タイトル: " . $videoEntry->getVideoTitle() . "\n";
  86. echo "\n説明:\n";
  87. echo $videoEntry->getVideoDescription();
  88. echo "\n\n\n";
  89. }
  90. ]]></programlisting>
  91. </example>
  92. <para>
  93. その他のクエリパラメータの詳細は
  94. <ulink url="http://code.google.com/apis/youtube/reference.html#Searching_for_videos">
  95. リファレンスガイド</ulink>を参照ください。
  96. <ulink url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_YouTube_VideoQuery.html">
  97. <classname>Zend_Gdata_YouTube_VideoQuery</classname></ulink>
  98. には、これらのパラメータ用のヘルパー関数もあります。詳細は
  99. <ulink url="http://code.google.com/apis/youtube/developers_guide_php.html#SearchingVideos"><acronym>PHP</acronym> Developer's Guide</ulink>
  100. を参照ください。
  101. </para>
  102. </sect3>
  103. <sect3 id="zend.gdata.youtube.videos.searchingcategories">
  104. <title>カテゴリやタグ/キーワードによる動画の検索</title>
  105. <para>
  106. カテゴリを指定して動画を検索するには、
  107. <ulink url="http://code.google.com/apis/youtube/reference.html#Category_search">
  108. 専用の <acronym>URL</acronym> を作成します</ulink>。たとえば、dog
  109. というキーワードを含むコメディーの動画を検索するには次のようにします。
  110. </para>
  111. <example id="zend.gdata.youtube.videos.searchingcategories.example">
  112. <title>指定したカテゴリの動画の検索</title>
  113. <programlisting language="php"><![CDATA[
  114. $yt = new Zend_Gdata_YouTube();
  115. $query = $yt->newVideoQuery();
  116. $query->category = 'Comedy/dog';
  117. echo $query->queryUrl . "\n";
  118. $videoFeed = $yt->getVideoFeed($query);
  119. ]]></programlisting>
  120. </example>
  121. </sect3>
  122. <sect3 id="zend.gdata.youtube.videos.standard">
  123. <title>標準のフィード</title>
  124. <para>
  125. YouTube Data <acronym>API</acronym> が提供する
  126. <ulink url="http://code.google.com/apis/youtube/reference.html#Standard_feeds">
  127. 標準フィード</ulink> にはさまざまなものがあります。
  128. これらの標準フィードは、<acronym>URL</acronym> を指定することで
  129. <ulink url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_YouTube_VideoFeed.html">Zend_Gdata_YouTube_VideoFeed</ulink>
  130. オブジェクトとして取得できます。<acronym>URL</acronym> の指定には
  131. <ulink url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_YouTube.html">Zend_Gdata_YouTube</ulink>
  132. クラスの定義済み定数
  133. (たとえば Zend_Gdata_YouTube::STANDARD_TOP_RATED_URI)
  134. を使用するか、あるいは定義済みヘルパーメソッド
  135. (下のコードを参照ください) を使用します。
  136. </para>
  137. <para>
  138. 評価の高い動画を取得するヘルパーメソッドは次のようになります。
  139. </para>
  140. <example id="zend.gdata.youtube.videos.standard.example-1">
  141. <title>標準の動画フィードの取得</title>
  142. <programlisting language="php"><![CDATA[
  143. $yt = new Zend_Gdata_YouTube();
  144. $videoFeed = $yt->getTopRatedVideoFeed();
  145. ]]></programlisting>
  146. </example>
  147. <para>
  148. 取得する標準フィードの期間を指定するクエリパラメータもあります。
  149. </para>
  150. <para>
  151. たとえば、今日いちばん評価の高い動画を取得するには次のようにします。
  152. </para>
  153. <example id="zend.gdata.youtube.videos.standard.example-2">
  154. <title>Zend_Gdata_YouTube_VideoQuery を使用した動画の取得</title>
  155. <programlisting language="php"><![CDATA[
  156. $yt = new Zend_Gdata_YouTube();
  157. $query = $yt->newVideoQuery();
  158. $query->setTime('today');
  159. $videoFeed = $yt->getTopRatedVideoFeed($query);
  160. ]]></programlisting>
  161. </example>
  162. <para>
  163. あるいは、次のように <acronym>URL</acronym> を使用してフィードを取得することもできます。
  164. </para>
  165. <example id="zend.gdata.youtube.videos.standard.example-3">
  166. <title>URL からの動画フィードの取得</title>
  167. <programlisting language="php"><![CDATA[
  168. $yt = new Zend_Gdata_YouTube();
  169. $url = 'http://gdata.youtube.com/feeds/standardfeeds/top_rated?time=today'
  170. $videoFeed = $yt->getVideoFeed($url);
  171. ]]></programlisting>
  172. </example>
  173. </sect3>
  174. <sect3 id="zend.gdata.youtube.videos.user">
  175. <title>指定したユーザがアップロードした動画の取得</title>
  176. <para>
  177. 指定したユーザがアップロードした動画の一覧を取得するヘルパーメソッドもあります。
  178. 次の例は、ユーザ 'liz' がアップロードした動画の一覧を取得します。
  179. </para>
  180. <example id="zend.gdata.youtube.videos.user.example">
  181. <title>指定したユーザがアップロードした動画の取得</title>
  182. <programlisting language="php"><![CDATA[
  183. $yt = new Zend_Gdata_YouTube();
  184. $videoFeed = $yt->getUserUploads('liz');
  185. ]]></programlisting>
  186. </example>
  187. </sect3>
  188. <sect3 id="zend.gdata.youtube.videos.favorites">
  189. <title>指定したユーザのお気に入り動画の取得</title>
  190. <para>
  191. 指定したユーザのお気に入り動画の一覧を取得するヘルパーメソッドもあります。
  192. 次の例は、ユーザ 'liz' のお気に入り動画の一覧を取得します。
  193. </para>
  194. <example id="zend.gdata.youtube.videos.favorites.example">
  195. <title>指定したユーザのお気に入り動画の取得</title>
  196. <programlisting language="php"><![CDATA[
  197. $yt = new Zend_Gdata_YouTube();
  198. $videoFeed = $yt->getUserFavorites('liz');
  199. ]]></programlisting>
  200. </example>
  201. </sect3>
  202. <sect3 id="zend.gdata.youtube.videos.responses">
  203. <title>動画に対する返信動画の取得</title>
  204. <para>
  205. 指定した動画に対する動画の返信の一覧を取得するヘルパーメソッドもあります。
  206. 次の例は、ID 'abc123813abc' の動画に対する返信動画を取得します。
  207. </para>
  208. <example id="zend.gdata.youtube.videos.responses.example">
  209. <title>動画への返信のフィードの取得</title>
  210. <programlisting language="php"><![CDATA[
  211. $yt = new Zend_Gdata_YouTube();
  212. $videoFeed = $yt->getVideoResponseFeed('abc123813abc');
  213. ]]></programlisting>
  214. </example>
  215. </sect3>
  216. </sect2>
  217. <sect2 id="zend.gdata.youtube.comments">
  218. <title>動画のコメントの取得</title>
  219. <para>
  220. YouTube の動画に対するコメントを取得するにはいくつかの方法があります。
  221. ID 'abc123813abc' の動画に対するコメントを取得するコードは、次のようになります。
  222. </para>
  223. <example id="zend.gdata.youtube.videos.comments.example-1">
  224. <title>動画 ID からの動画へのコメントのフィードの取得</title>
  225. <programlisting language="php"><![CDATA[
  226. $yt = new Zend_Gdata_YouTube();
  227. $commentFeed = $yt->getVideoCommentFeed('abc123813abc');
  228. foreach ($commentFeed as $commentEntry) {
  229. echo $commentEntry->title->text . "\n";
  230. echo $commentEntry->content->text . "\n\n\n";
  231. }
  232. ]]></programlisting>
  233. </example>
  234. <para>
  235. もし既にその動画を表す
  236. <ulink url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_YouTube_VideoEntry.html">Zend_Gdata_YouTube_VideoEntry</ulink>
  237. オブジェクトがあるのなら、それを用いてその動画のコメントを取得することもできます。
  238. </para>
  239. <example id="zend.gdata.youtube.videos.comments.example-2">
  240. <title>Zend_Gdata_YouTube_VideoEntry からの動画へのコメントのフィードの取得</title>
  241. <programlisting language="php"><![CDATA[
  242. $yt = new Zend_Gdata_YouTube();
  243. $videoEntry = $yt->getVideoEntry('abc123813abc');
  244. // 動画の ID がわからなくても、このようにして URL を取得できます
  245. $commentFeed = $yt->getVideoCommentFeed(null,
  246. $videoEntry->comments->href);
  247. ]]></programlisting>
  248. </example>
  249. </sect2>
  250. <sect2 id="zend.gdata.youtube.playlists">
  251. <title>プレイリストフィードの取得</title>
  252. <para>
  253. YouTube data <acronym>API</acronym> を使用すると、
  254. プロファイルやプレイリスト、購読内容といったユーザ情報を取得できます。
  255. </para>
  256. <sect3 id="zend.gdata.youtube.playlists.user">
  257. <title>指定したユーザのプレイリストの取得</title>
  258. <para>
  259. このライブラリには、指定したユーザのプレイリストを取得するためのヘルパーメソッドがあります。
  260. ユーザ 'liz' のプレイリストを取得するには、次のようにします。
  261. </para>
  262. <example id="zend.gdata.youtube.playlists.user.example">
  263. <title>指定したユーザのプレイリストの取得</title>
  264. <programlisting language="php"><![CDATA[
  265. $yt = new Zend_Gdata_YouTube();
  266. $playlistListFeed = $yt->getPlaylistListFeed('liz');
  267. foreach ($playlistListFeed as $playlistEntry) {
  268. echo $playlistEntry->title->text . "\n";
  269. echo $playlistEntry->description->text . "\n";
  270. echo $playlistEntry->getPlaylistVideoFeedUrl() . "\n\n\n";
  271. }
  272. ]]></programlisting>
  273. </example>
  274. </sect3>
  275. <sect3 id="zend.gdata.youtube.playlists.special">
  276. <title>指定したプレイリストの取得</title>
  277. <para>
  278. このライブラリには、
  279. 指定したプレイリストの動画一覧を取得するヘルパーメソッドがあります。
  280. 指定したプレイリストエントリの動画一覧を取得するには、次のようにします。
  281. </para>
  282. <example id="zend.gdata.youtube.playlists.special.example">
  283. <title>指定したプレイリストの取得</title>
  284. <programlisting language="php"><![CDATA[
  285. $feedUrl = $playlistEntry->getPlaylistVideoFeedUrl();
  286. $playlistVideoFeed = $yt->getPlaylistVideoFeed($feedUrl);
  287. ]]></programlisting>
  288. </example>
  289. </sect3>
  290. </sect2>
  291. <sect2 id="zend.gdata.youtube.subscriptions">
  292. <title>指定したユーザの購読内容の一覧の取得</title>
  293. <para>
  294. ユーザは、チャンネルやタグ、お気に入りなどの内容を購読できます。
  295. <ulink url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_YouTube_SubscriptionEntry.html">Zend_Gdata_YouTube_SubscriptionEntry</ulink>
  296. を使用して、それらの購読内容を表します。
  297. </para>
  298. <para>
  299. ユーザ 'liz' のすべての購読内容を取得するには、次のようにします。
  300. </para>
  301. <example id="zend.gdata.youtube.subscriptions.example">
  302. <title>指定したユーザのすべての購読の取得</title>
  303. <programlisting language="php"><![CDATA[
  304. $yt = new Zend_Gdata_YouTube();
  305. $subscriptionFeed = $yt->getSubscriptionFeed('liz');
  306. foreach ($subscriptionFeed as $subscriptionEntry) {
  307. echo $subscriptionEntry->title->text . "\n";
  308. }
  309. ]]></programlisting>
  310. </example>
  311. </sect2>
  312. <sect2 id="zend.gdata.youtube.profile">
  313. <title>ユーザのプロファイルの取得</title>
  314. <para>
  315. 任意の YouTube ユーザの公開プロファイル情報を取得できます。
  316. ユーザ 'liz' のプロファイルを取得するには、次のようにします。
  317. </para>
  318. <example id="zend.gdata.youtube.profile.example">
  319. <title>ユーザのプロファイルの取得</title>
  320. <programlisting language="php"><![CDATA[
  321. $yt = new Zend_Gdata_YouTube();
  322. $userProfile = $yt->getUserProfile('liz');
  323. echo "ユーザ名: " . $userProfile->username->text . "\n";
  324. echo "年齢: " . $userProfile->age->text . "\n";
  325. echo "出身地: " . $userProfile->hometown->text . "\n";
  326. ]]></programlisting>
  327. </example>
  328. </sect2>
  329. <sect2 id="zend.gdata.youtube.uploads">
  330. <title>YouTube への動画のアップロード</title>
  331. <para>
  332. アップロードのおおまかな手順については、code.google.com の
  333. <ulink url="http://code.google.com/apis/youtube/developers_guide_protocol.html#Process_Flows_for_Uploading_Videos">
  334. プロトコルガイド</ulink>の図を参照ください。
  335. 動画のアップロードには 2 通りの方法があります。
  336. 動画を直接送信するか、単に動画のメタデータだけを送信して動画は
  337. <acronym>HTML</acronym> フォームでアップロードさせるかです。
  338. </para>
  339. <para>
  340. 動画を直接アップロードするには、まず新しい
  341. <ulink url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_YouTube_VideoEntry.html">Zend_Gdata_YouTube_VideoEntry</ulink>
  342. オブジェクトを作成して必須メタデータを指定しなければなりません。
  343. 次の例は、Quicktime 動画 "mytestmovie.mov" を以下のプロパティで
  344. YouTube にアップロードするものです。
  345. </para>
  346. <table id="zend.gdata.youtube.uploads.metadata">
  347. <title>以下のサンプルで使用するメタデータ</title>
  348. <tgroup cols="2" align="left" colsep="1" rowsep="1">
  349. <thead>
  350. <row>
  351. <entry>プロパティ</entry>
  352. <entry>値</entry>
  353. </row>
  354. </thead>
  355. <tbody>
  356. <row>
  357. <entry>Title</entry>
  358. <entry>My Test Movie</entry>
  359. </row>
  360. <row>
  361. <entry>Category</entry>
  362. <entry>Autos</entry>
  363. </row>
  364. <row>
  365. <entry>Keywords</entry>
  366. <entry>cars, funny</entry>
  367. </row>
  368. <row>
  369. <entry>Description</entry>
  370. <entry>My description</entry>
  371. </row>
  372. <row>
  373. <entry>Filename</entry>
  374. <entry>mytestmovie.mov</entry>
  375. </row>
  376. <row>
  377. <entry>File <acronym>MIME</acronym> type</entry>
  378. <entry>video/quicktime</entry>
  379. </row>
  380. <row>
  381. <entry>Video private?</entry>
  382. <entry><constant>FALSE</constant></entry>
  383. </row>
  384. <row>
  385. <entry>Video location</entry>
  386. <entry>37, -122 (lat, long)</entry>
  387. </row>
  388. <row>
  389. <entry>Developer Tags</entry>
  390. <entry>mydevelopertag, anotherdevelopertag</entry>
  391. </row>
  392. </tbody>
  393. </tgroup>
  394. </table>
  395. <para>
  396. 下のコードは、アップロード用に空の
  397. <ulink url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_YouTube_VideoEntry.html">Zend_Gdata_YouTube_VideoEntry</ulink>
  398. を作成します。次に
  399. <ulink url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_App_MediaFileSource.html">Zend_Gdata_App_MediaFileSource</ulink>
  400. オブジェクトを使用して実際の動画ファイルを保持させます。水面下では、
  401. <ulink url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_YouTube_Extension_MediaGroup.html">Zend_Gdata_YouTube_Extension_MediaGroup</ulink>
  402. オブジェクトを使用して動画のすべてのメタデータを保持します。
  403. 以下で説明するヘルパーメソッドを使用すると、
  404. メディアグループオブジェクトのことを気にせず動画のメタデータを設定できます。
  405. $uploadUrl は、新しいエントリを投稿する場所です。
  406. これは、認証済みユーザの名前 $userName で指定することもできますし、
  407. シンプルに 'default' と指定して現在の認証済みユーザを自動的に利用することもできます。
  408. </para>
  409. <example id="zend.gdata.youtube.uploads.example">
  410. <title>動画のアップロード</title>
  411. <programlisting language="php"><![CDATA[
  412. $yt = new Zend_Gdata_YouTube($httpClient);
  413. $myVideoEntry = new Zend_Gdata_YouTube_VideoEntry();
  414. $filesource = $yt->newMediaFileSource('mytestmovie.mov');
  415. $filesource->setContentType('video/quicktime');
  416. $filesource->setSlug('mytestmovie.mov');
  417. $myVideoEntry->setMediaSource($filesource);
  418. $myVideoEntry->setVideoTitle('My Test Movie');
  419. $myVideoEntry->setVideoDescription('My Test Movie');
  420. // カテゴリは YouTube のカテゴリとして妥当な形式でなければならないことに注意 !
  421. $myVideoEntry->setVideoCategory('Comedy');
  422. // キーワードを設定します。カンマ区切りの文字列であり、
  423. // 各キーワードには空白文字を含めてはいけないことに注意しましょう
  424. $myVideoEntry->SetVideoTags('cars, funny');
  425. // オプションで、デベロッパタグを指定します
  426. $myVideoEntry->setVideoDeveloperTags(array('mydevelopertag',
  427. 'anotherdevelopertag'));
  428. // オプションで、動画の撮影場所を指定します
  429. $yt->registerPackage('Zend_Gdata_Geo');
  430. $yt->registerPackage('Zend_Gdata_Geo_Extension');
  431. $where = $yt->newGeoRssWhere();
  432. $position = $yt->newGmlPos('37.0 -122.0');
  433. $where->point = $yt->newGmlPoint($position);
  434. $myVideoEntry->setWhere($where);
  435. // 現在の認証済みユーザ用のアップロード URI
  436. $uploadUrl =
  437. 'http://uploads.gdata.youtube.com/feeds/users/default/uploads';
  438. // 動画をアップロードし、Zend_Gdata_App_HttpException あるいは通常の
  439. // Zend_Gdata_App_Exception を捕捉します
  440. try {
  441. $newEntry = $yt->insertEntry($myVideoEntry,
  442. $uploadUrl,
  443. 'Zend_Gdata_YouTube_VideoEntry');
  444. } catch (Zend_Gdata_App_HttpException $httpException) {
  445. echo $httpException->getRawResponseBody();
  446. } catch (Zend_Gdata_App_Exception $e) {
  447. echo $e->getMessage();
  448. }
  449. ]]></programlisting>
  450. </example>
  451. <para>
  452. 非公開で動画をアップロードするには、アップロードの前に
  453. $myVideoEntry->setVideoPrivate(); を実行します。
  454. $videoEntry->isVideoPrivate() を使用すると、
  455. その動画エントリが非公開かどうかを調べることができます。
  456. </para>
  457. </sect2>
  458. <sect2 id="zend.gdata.youtube.uploads.browser">
  459. <title>ブラウザベースのアップロード</title>
  460. <para>
  461. ブラウザベースのアップロードも直接のアップロードとほとんど同じ処理ですが、
  462. 作成した
  463. <ulink url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_YouTube_VideoEntry.html">Zend_Gdata_YouTube_VideoEntry</ulink>
  464. <ulink url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_App_MediaFileSource.html">Zend_Gdata_App_MediaFileSource</ulink>
  465. オブジェクトをアタッチしないという点が異なります。
  466. そのかわりに、動画のすべてのメタデータを送信してトークン要素を受け取り、
  467. それを用いて <acronym>HTML</acronym> アップロードフォームを作成します。
  468. </para>
  469. <example id="zend.gdata.youtube.uploads.browser.example-1">
  470. <title>ブラウザベースのアップロード</title>
  471. <programlisting language="php"><![CDATA[
  472. $yt = new Zend_Gdata_YouTube($httpClient);
  473. $myVideoEntry= new Zend_Gdata_YouTube_VideoEntry();
  474. $myVideoEntry->setVideoTitle('My Test Movie');
  475. $myVideoEntry->setVideoDescription('My Test Movie');
  476. // YouTube のカテゴリとして妥当な形式でなければならないことに注意
  477. $myVideoEntry->setVideoCategory('Comedy');
  478. $myVideoEntry->SetVideoTags('cars, funny');
  479. $tokenHandlerUrl = 'http://gdata.youtube.com/action/GetUploadToken';
  480. $tokenArray = $yt->getFormUploadToken($myVideoEntry, $tokenHandlerUrl);
  481. $tokenValue = $tokenArray['token'];
  482. $postUrl = $tokenArray['url'];
  483. ]]></programlisting>
  484. </example>
  485. <para>
  486. 上のコードは、リンクとトークンを表示します。
  487. これらを元に、ユーザのブラウザに表示させる <acronym>HTML</acronym> フォームを構築します。
  488. シンプルなフォームの例を以下に示します。
  489. $tokenValue が返されたトークン要素の中身をあらわしており、
  490. これは上の $myVideoEntry から取得したものです。
  491. フォームを送信したあとであなたのサイトにリダイレクトさせるには、
  492. パラメータ $nextUrl を上の $postUrl に追加します。
  493. これは、AuthSub リンクにおけるパラメータ $next と同じように機能します。
  494. 唯一の違いは、一度きりのトークンではなく
  495. status と id を <acronym>URL</acronym> の中に含めて返すということです。
  496. </para>
  497. <example id="zend.gdata.youtube.uploads.browser.example-2">
  498. <title>ブラウザベースのアップロード: HTML フォームの作成</title>
  499. <programlisting language="php"><![CDATA[
  500. // アップロード後のリダイレクト先
  501. $nextUrl = 'http://mysite.com/youtube_uploads';
  502. $form = '<form action="'. $postUrl .'?nexturl='. $nextUrl .
  503. '" method="post" enctype="multipart/form-data">'.
  504. '<input name="file" type="file"/>'.
  505. '<input name="token" type="hidden" value="'. $tokenValue .'"/>'.
  506. '<input value="動画のアップロード" type="submit" />'.
  507. '</form>';
  508. ]]></programlisting>
  509. </example>
  510. </sect2>
  511. <sect2 id="zend.gdata.youtube.uploads.status">
  512. <title>アップロード状況のチェック</title>
  513. <para>
  514. 動画をアップロードしたら、認証済みユーザのアップロードフィードにすぐに反映されます。
  515. しかし、公開手続きがすむまではサイト上では公開されません。
  516. 却下された動画やアップロードが正常終了しなかった動画についても、
  517. 認証ユーザのアップロードフィードのみに現れるようになります。
  518. 次のコードは、
  519. <ulink url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_YouTube_VideoEntry.html">Zend_Gdata_YouTube_VideoEntry</ulink>
  520. の状態をチェックして、公開されているかいないか、また却下されたのかどうかを調べます。
  521. </para>
  522. <example id="zend.gdata.youtube.uploads.status.example">
  523. <title>動画のアップロード状況のチェック</title>
  524. <programlisting language="php"><![CDATA[
  525. try {
  526. $control = $videoEntry->getControl();
  527. } catch (Zend_Gdata_App_Exception $e) {
  528. echo $e->getMessage();
  529. }
  530. if ($control instanceof Zend_Gdata_App_Extension_Control) {
  531. if ($control->getDraft() != null &&
  532. $control->getDraft()->getText() == 'yes') {
  533. $state = $videoEntry->getVideoState();
  534. if ($state instanceof Zend_Gdata_YouTube_Extension_State) {
  535. print 'アップロード状況: '
  536. . $state->getName()
  537. .' '. $state->getText();
  538. } else {
  539. print 'まだ動画の状況についての情報を取得できません。'
  540. . "また後で試してみてください。\n";
  541. }
  542. }
  543. }
  544. ]]></programlisting>
  545. </example>
  546. </sect2>
  547. <sect2 id="zend.gdata.youtube.other">
  548. <title>その他の関数</title>
  549. <para>
  550. これまで説明してきたもの以外にも YouTube API にはさまざまな機能が存在し、
  551. 動画のメタデータを編集したり動画エントリを削除したり、
  552. サイト上のコミュニティ機能を利用したりといったことが可能です。
  553. API で操作できるコミュニティ機能としては、
  554. 評価やコメント、プレイリスト、購読、ユーザプロファイル、コンタクト、メッセージなどがあります。
  555. </para>
  556. <para>
  557. 完全なドキュメントは、code.google.com の
  558. <ulink url="http://code.google.com/apis/youtube/developers_guide_php.html"><acronym>PHP</acronym> Developer's Guide</ulink>
  559. を参照ください。
  560. </para>
  561. </sect2>
  562. </sect1>