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