Zend_Gdata_YouTube.xml 30 KB

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