Zend_Gdata_YouTube.xml 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.gdata.youtube">
  5. <title>Verwenden der YouTube Daten API</title>
  6. <para>
  7. Die YouTube Daten <acronym>API</acronym> bietet einen Lese- und Schreibzugriff auf YouTube
  8. Inhalte. Benutzer können nicht authentifizierte Anfragen zu Google Daten Feeds durchführen
  9. um Feeds von populären Videos, Kommentare, öffentliche Informationen über YouTube
  10. Benutzerprofilen, Benutzer PlayListen, Favoriten, Einschreibungen und so weiter zu erhalten.
  11. </para>
  12. <para>
  13. Für weitere Informationen über die YouTube Daten <acronym>API</acronym> schauen Sie in die
  14. offizielle <ulink
  15. url="http://code.google.com/apis/youtube/developers_guide_php.html"><acronym>PHP</acronym>
  16. Entwickler Dokumentation</ulink> auf code.google.com.
  17. </para>
  18. <sect2 id="zend.gdata.youtube.authentication">
  19. <title>Authentifizierung</title>
  20. <para>
  21. Die YouTube Daten <acronym>API</acronym> erlaubt aktuell einen nur-lesenden Zugriff auf
  22. öffentliche Daten, welcher keine Authentifizierung benötigt. Für alle schreibenden
  23. Anfragen muß sich ein Benutzer entweder mit ClientLogin oder AuthSub authentifizieren.
  24. Schauen Sie bitte in das <ulink
  25. url="http://code.google.com/apis/youtube/developers_guide_php.html#Authentication">Kapitel
  26. über Authentifizierung in der <acronym>PHP</acronym> Entwickler
  27. Dokumentation</ulink> für weitere Details.
  28. </para>
  29. </sect2>
  30. <sect2 id="zend.gdata.youtube.developer_key">
  31. <title>Entwickler Schlüssel und Client ID</title>
  32. <para>
  33. Ein Entwickler Schlüssel identifiziert den QouTube Entwickler der die
  34. <acronym>API</acronym> Anfrage schickt. Eine Client ID identifiziert die Anwendung für
  35. Logging und Debugging Zwecke. Schauen Sie bitte auf <ulink
  36. url="http://code.google.com/apis/youtube/dashboard/">http://code.google.com/apis/youtube/dashboard/</ulink>
  37. um einen Entwickler Schlüssel und eine Client ID zu erhalten. Das angefügte Beispiel
  38. demonstriert wie der Entwickler Schlüssel und die Client ID an das <ulink
  39. url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_YouTube.html">Zend_Gdata_YouTube</ulink>
  40. Service Pbjekt übergeben werden.
  41. </para>
  42. <example id="zend.gdata.youtube.developer_key.example">
  43. <title>
  44. Einen Entwicklerschlüssel und eine ClientID an Zend_Gdata_YouTube übergeben
  45. </title>
  46. <programlisting language="php"><![CDATA[
  47. $yt = new Zend_Gdata_YouTube($httpClient,
  48. $applicationId,
  49. $clientId,
  50. $developerKey);
  51. ]]></programlisting>
  52. </example>
  53. </sect2>
  54. <sect2 id="zend.gdata.youtube.videos">
  55. <title>Öffentliche Video Feeds empfangen</title>
  56. <para>
  57. Die YouTube Daten <acronym>API</acronym> bietet eine Vielzahl von Feeds die eine Liste
  58. von Videos zurückgeben, wie zum Beispiel Standard Feeds, Abhängige Videos, Antworten auf
  59. Videos, Videobewertungen, Benutzer Uploads, und Benutzer Favoriten. Zum Beispiel gibt
  60. der Benutzer Upload Feed alle Videos zurück die von einem speziellen Benutzer
  61. hochgeladen wurden. Sehen Sie in den <ulink
  62. url="http://code.google.com/apis/youtube/reference.html#Video_Feeds">You Tube
  63. <acronym>API</acronym> Referenz Guide</ulink> für eine detailierte Liste aller
  64. vorhandenen Feeds.
  65. </para>
  66. <sect3 id="zend.gdata.youtube.videos.searching">
  67. <title>Suchen nach Videos durch Metadaten</title>
  68. <para>
  69. Man kann eine Liste von Videos erhalten die einem speziellen Suchkriterium
  70. entsprechen, indem die YouTubeQuery Klasse verwendet wird. Die folgende Abfrage
  71. schaut nach Videos welche das Wort "Katze" in Ihren Metadaten enthalten, beginnend
  72. mit dem 10ten Video und 20 Videos pro Seite anzeigt, sortiert nach der Anzahl der
  73. Ansichten.
  74. </para>
  75. <example id="zend.gdata.youtube.videos.searching.example">
  76. <title>Suchen nach Videos</title>
  77. <programlisting language="php"><![CDATA[
  78. $yt = new Zend_Gdata_YouTube();
  79. $query = $yt->newVideoQuery();
  80. $query->videoQuery = 'cat';
  81. $query->startIndex = 10;
  82. $query->maxResults = 20;
  83. $query->orderBy = 'viewCount';
  84. echo $query->queryUrl . "\n";
  85. $videoFeed = $yt->getVideoFeed($query);
  86. foreach ($videoFeed as $videoEntry) {
  87. echo "---------VIDEO----------\n";
  88. echo "Titel: " . $videoEntry->mediaGroup->title->text . "\n";
  89. echo "\nBeschreibung:\n";
  90. echo $videoEntry->mediaGroup->description->text;
  91. echo "\n\n\n";
  92. }
  93. ]]></programlisting>
  94. </example>
  95. <para>
  96. Für weitere Details über die verschiedenen Abfrageparameter, kann der <ulink
  97. url="http://code.google.com/apis/youtube/reference.html#Searching_for_videos">Referenz
  98. Guide</ulink> hilfreich sein. Die vorhandenen Hilfsfunktionen in <ulink
  99. url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_YouTube_VideoQuery.html">
  100. <classname>Zend_Gdata_YouTube_VideoQuery</classname></ulink> für jeden dieser
  101. Parameter werden im <ulink
  102. url="http://code.google.com/apis/youtube/developers_guide_php.html#SearchingVideos">PHP
  103. Entwickler Guide</ulink> detailierter beschrieben.
  104. </para>
  105. </sect3>
  106. <sect3 id="zend.gdata.youtube.videos.searchingcategories">
  107. <title>Suchen nach Videos durch Kategorien und Tags/Schlüsselwörter</title>
  108. <para>
  109. Die Suche nach Videos in speziellen Kategorien wird durch die Erstellung einer
  110. <ulink url="http://code.google.com/apis/youtube/reference.html#Category_Search">
  111. speziell formatierten <acronym>URL</acronym></ulink> durchgeführt. Um, zum Beispiel,
  112. nach Komödien-Videos zu suchen die das Schlüsselwort Hund enthalten:
  113. </para>
  114. <example id="zend.gdata.youtube.videos.searchingcategories.example">
  115. <title>Suchen nach Videos in speziellen Kategorien</title>
  116. <programlisting language="php"><![CDATA[
  117. $yt = new Zend_Gdata_YouTube();
  118. $query = $yt->newVideoQuery();
  119. $query->category = 'Comedy/Hund';
  120. echo $query->queryUrl . "\n";
  121. $videoFeed = $yt->getVideoFeed($query);
  122. ]]></programlisting>
  123. </example>
  124. </sect3>
  125. <sect3 id="zend.gdata.youtube.videos.standard">
  126. <title>Standard Feeds empfangen</title>
  127. <para>
  128. Die YouTube Daten <acronym>API</acronym> hat eine Anzahl an <ulink
  129. url="http://code.google.com/apis/youtube/reference.html#Standard_feeds">Standard
  130. Feeds</ulink>. Diese Standard Feeds können als <ulink
  131. url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_YouTube_VideoFeed.html">Zend_Gdata_YouTube_VideoFeed</ulink>
  132. Objekte empfangen werden indem die spezifizierten <acronym>URL</acronym>s und die in
  133. der <ulink
  134. url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_YouTube.html">Zend_Gdata_YouTube</ulink>
  135. Klasse vordefinierten Konstanten (zum Beispiel
  136. Zend_Gdata_YouTube::STANDARD_TOP_RATED_URI) oder die vordefinierten Hilfsmethoden
  137. verwendet verwendet werden (siehe das Codebeispiel anbei).
  138. </para>
  139. <para>
  140. Um die Top gereihten Videos zu erhalten kann die folgende Helfermethode verwendet
  141. werden:
  142. </para>
  143. <example id="zend.gdata.youtube.videos.standard.example-1">
  144. <title>Empfangen eines Standard Videofeeds</title>
  145. <programlisting language="php"><![CDATA[
  146. $yt = new Zend_Gdata_YouTube();
  147. $videoFeed = $yt->getTopRatedVideoFeed();
  148. ]]></programlisting>
  149. </example>
  150. <para>
  151. Es gibt auch Abfrageparameter um eine Zeitperiode zu spezifizieren über die der
  152. Standardfeed berechnet wird.
  153. </para>
  154. <para>
  155. Um zum Beispiel die Top gereihten Videos von Heute zu erhalten:
  156. </para>
  157. <example id="zend.gdata.youtube.videos.standard.example-2">
  158. <title>Verwenden von Zend_Gdata_YouTube_VideoQuery um Videos zu empfangen</title>
  159. <programlisting language="php"><![CDATA[
  160. $yt = new Zend_Gdata_YouTube();
  161. $query = $yt->newVideoQuery();
  162. $query->setTime('today');
  163. $videoFeed = $yt->getTopRatedVideoFeed($query);
  164. ]]></programlisting>
  165. </example>
  166. <para>
  167. Alternativ kann man den Feed erhalten indem die <acronym>URL</acronym> verwendet
  168. wird:
  169. </para>
  170. <example id="zend.gdata.youtube.videos.standard.example-3">
  171. <title>Empfangen eines Video Feeds durch die URL</title>
  172. <programlisting language="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. ]]></programlisting>
  177. </example>
  178. </sect3>
  179. <sect3 id="zend.gdata.youtube.videos.user">
  180. <title>Videos erhalten die von einem Benutzer hochgeladen wurden</title>
  181. <para>
  182. Man kann eine Liste von Videos erhalten die von einem bestimmten Benutzer
  183. hochgeladen wurden indem eine einfache Helfermethode verwendet wird. Dieses Beispiel
  184. empfängt Videos die vom Benutzer 'liz' hochgeladen wurden.
  185. </para>
  186. <example id="zend.gdata.youtube.videos.user.example">
  187. <title>
  188. Empfangen von Videos die von einem spezifischen Benutzer hochgeladen wurden
  189. </title>
  190. <programlisting language="php"><![CDATA[
  191. $yt = new Zend_Gdata_YouTube();
  192. $videoFeed = $yt->getUserUploads('liz');
  193. ]]></programlisting>
  194. </example>
  195. </sect3>
  196. <sect3 id="zend.gdata.youtube.videos.favorites">
  197. <title>Videos empfangen die von einem Benutzer bevorzugt werden</title>
  198. <para>
  199. Man kann eine Liste von bevorzugten Videos eines Benutzer erhalten indem eine
  200. einfache Helfermethode verwendet wird. Dieses Beispiel empfängt Videos die vom
  201. Benutzer 'liz' bevorzugt werden.
  202. </para>
  203. <example id="zend.gdata.youtube.videos.favorites.example">
  204. <title>Empfangen von den bevorzugten Videos eines Benutzers</title>
  205. <programlisting language="php"><![CDATA[
  206. $yt = new Zend_Gdata_YouTube();
  207. $videoFeed = $yt->getUserFavorites('liz');
  208. ]]></programlisting>
  209. </example>
  210. </sect3>
  211. <sect3 id="zend.gdata.youtube.videos.responses">
  212. <title>Videobewertungen für ein Video erhalten</title>
  213. <para>
  214. Man kann eine Liste von Videobewertungen eines Videos erhalten indem eine einfache
  215. Helfermethode verwendet wird. Dieses Beispiel empfängt Videobewertungen für ein
  216. Video mit der ID 'abc123813abc'.
  217. </para>
  218. <example id="zend.gdata.youtube.videos.responses.example">
  219. <title>Empfangen eines Feeds von Video Antworten</title>
  220. <programlisting language="php"><![CDATA[
  221. $yt = new Zend_Gdata_YouTube();
  222. $videoFeed = $yt->getVideoResponseFeed('abc123813abc');
  223. ]]></programlisting>
  224. </example>
  225. </sect3>
  226. </sect2>
  227. <sect2 id="zend.gdata.youtube.comments">
  228. <title>Videokommentare erhalten</title>
  229. <para>
  230. Die Kommentare für jedes YouTube Video können auf unterschiedlichen Wegen empfangen
  231. werden. Um die Kommentare für das Video mit der ID 'abc123813abc' zu empfangen kann der
  232. folgende Code verwendet werden:
  233. </para>
  234. <example id="zend.gdata.youtube.videos.comments.example-1">
  235. <title>Empfangen eines Feeds von Videokommentaren von einer Video ID</title>
  236. <programlisting language="php"><![CDATA[
  237. $yt = new Zend_Gdata_YouTube();
  238. $commentFeed = $yt->getVideoCommentFeed('abc123813abc');
  239. foreach ($commentFeed as $commentEntry) {
  240. echo $commentEntry->title->text . "\n";
  241. echo $commentEntry->content->text . "\n\n\n";
  242. }
  243. ]]></programlisting>
  244. </example>
  245. <para>
  246. Kommentare können für ein Video auch empfangen werden wenn man eine Kopie des <ulink
  247. url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_YouTube_VideoEntry.html">Zend_Gdata_YouTube_VideoEntry</ulink>
  248. Objektes hat:
  249. </para>
  250. <example id="zend.gdata.youtube.videos.comments.example-2">
  251. <title>
  252. Empfangen eines Feeds von Videokommentaren von einem Zend_Gdata_YouTube_VideoEntry
  253. </title>
  254. <programlisting language="php"><![CDATA[
  255. $yt = new Zend_Gdata_YouTube();
  256. $videoEntry = $yt->getVideoEntry('abc123813abc');
  257. // Die ID des Videos in diesem Beispiel ist unbekannt, aber wir haben die URL
  258. $commentFeed = $yt->getVideoCommentFeed(null,
  259. $videoEntry->comments->href);
  260. ]]></programlisting>
  261. </example>
  262. </sect2>
  263. <sect2 id="zend.gdata.youtube.playlists">
  264. <title>PlayList Feeds erhalten</title>
  265. <para>
  266. Die YouTube Daten <acronym>API</acronym> bietet Informationen über Benutzer, inklusive
  267. Profile, PlayListen, Einschreibungen, und weitere.
  268. </para>
  269. <sect3 id="zend.gdata.youtube.playlists.user">
  270. <title>Die PlayListen eines Benutzer erhalten</title>
  271. <para>
  272. Die Bibliothek bietet eine Helfermethode um die PlayListen, die einem angegebenen
  273. Benutzer zugeordnet sind, zu erhalten. Um die PlayListen des Benutzers 'liz' zu
  274. erhalten kann der folgende Code verwendet werden:
  275. </para>
  276. <example id="zend.gdata.youtube.playlists.user.example">
  277. <title>Empfangen von Playlisten eines Benutzers</title>
  278. <programlisting language="php"><![CDATA[
  279. $yt = new Zend_Gdata_YouTube();
  280. $playlistListFeed = $yt->getPlaylistListFeed('liz');
  281. foreach ($playlistListFeed as $playlistEntry) {
  282. echo $playlistEntry->title->text . "\n";
  283. echo $playlistEntry->description->text . "\n";
  284. echo $playlistEntry->getPlaylistVideoFeedUrl() . "\n\n\n";
  285. }
  286. ]]></programlisting>
  287. </example>
  288. </sect3>
  289. <sect3 id="zend.gdata.youtube.playlists.special">
  290. <title>Eine spezielle PlayListe erhalten</title>
  291. <para>
  292. Die Bibliothek bietet eine Helfermethode um Videos zu erhalten die mit einer
  293. gegebenen PlayListe assoziiert sind. Um die PlayListe für einen speziellen PlayList
  294. Eintrag zu erhalten kann der folgende Code verwendet werden:
  295. </para>
  296. <example id="zend.gdata.youtube.playlists.special.example">
  297. <title>Empfangen von speziellen Playlisten</title>
  298. <programlisting language="php"><![CDATA[
  299. $feedUrl = $playlistEntry->getPlaylistVideoFeedUrl();
  300. $playlistVideoFeed = $yt->getPlaylistVideoFeed($feedUrl);
  301. ]]></programlisting>
  302. </example>
  303. </sect3>
  304. </sect2>
  305. <sect2 id="zend.gdata.youtube.subscriptions">
  306. <title>Eine Liste von Einschreibungen eines Benutzers erhalten</title>
  307. <para>
  308. Ein Benutzer kann verschiedene Arten von Einschreibungen besitzen: Kanal
  309. Einschreibungen, Tag Einschreibungen, oder Favoriten Einschreibungen. Ein <ulink
  310. url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_YouTube_SubscriptionEntry.html">Zend_Gdata_YouTube_SubscriptionEntry</ulink>
  311. wird verwendet um individuelle Einschreibungen zu repräsentieren.
  312. </para>
  313. <para>
  314. Um alle Einschreibungen für den Benutzer 'liz' zu erhalten kann der folgende Code
  315. verwendet werden:
  316. </para>
  317. <example id="zend.gdata.youtube.subscriptions.example">
  318. <title>Empfangen aller Einschreibungen eines Benutzers</title>
  319. <programlisting language="php"><![CDATA[
  320. $yt = new Zend_Gdata_YouTube();
  321. $subscriptionFeed = $yt->getSubscriptionFeed('liz');
  322. foreach ($subscriptionFeed as $subscriptionEntry) {
  323. echo $subscriptionEntry->title->text . "\n";
  324. }
  325. ]]></programlisting>
  326. </example>
  327. </sect2>
  328. <sect2 id="zend.gdata.youtube.profile">
  329. <title>Ein Benutzerprofil erhalten</title>
  330. <para>
  331. Die öffentlichen Profil Informationen kann man für jeden YouTube Benutzer erhalten. Um
  332. das Profil für den Benutzer 'liz' zu erhalten kann der folgende Code verwendet werden:
  333. </para>
  334. <example id="zend.gdata.youtube.profile.example">
  335. <title>Empfangen des Profils eines Benutzers</title>
  336. <programlisting language="php"><![CDATA[
  337. $yt = new Zend_Gdata_YouTube();
  338. $userProfile = $yt->getUserProfile('liz');
  339. echo "Benutzername: " . $userProfile->username->text . "\n";
  340. echo "Alter: " . $userProfile->age->text . "\n";
  341. echo "Heimatstadt: " . $userProfile->hometown->text . "\n";
  342. ]]></programlisting>
  343. </example>
  344. </sect2>
  345. <sect2 id="zend.gdata.youtube.uploads">
  346. <title>Videos auf YouTube hochladen</title>
  347. <para>
  348. Stellen Sie sicher das Sie die Diagramme im <ulink
  349. url="http://code.google.com/apis/youtube/developers_guide_protocol.html#Process_Flows_for_Uploading_Videos">Protokoll
  350. Guide</ulink> auf code.google.com für eine Übersicht des Upload Prozesses betrachtet
  351. haben. Das Hochladen von Videos kann auf 2 Wegen durchgeführt werden: Entweder durch das
  352. direkte Hochladen des Videos oder durch das Senden der Video Meta-Daten und indem der
  353. Benutzer das Video über ein <acronym>HTML</acronym> Formular hochlädt.
  354. </para>
  355. <para>
  356. Um ein Video direkt hochzuladen, muß zuerst ein neues <ulink
  357. url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_YouTube_VideoEntry.html">Zend_Gdata_YouTube_VideoEntry</ulink>
  358. Objekt erstellt und einige benötigte Meta-Daten spezifiziert werden. Das folgende
  359. Beispiel zeigt das Hochladen des Quicktime Videos "mytestmovie.mov" auf YouTube mit den
  360. folgenden Eigenschaften:
  361. </para>
  362. <table id="zend.gdata.youtube.uploads.metadata">
  363. <title>Metadaten die im folgenden Code-Beispiel verwendet werden</title>
  364. <tgroup cols="2" align="left" colsep="1" rowsep="1">
  365. <thead>
  366. <row>
  367. <entry>Eigenschaft</entry>
  368. <entry>Wert</entry>
  369. </row>
  370. </thead>
  371. <tbody>
  372. <row>
  373. <entry>Title</entry>
  374. <entry>My Test Movie</entry>
  375. </row>
  376. <row>
  377. <entry>Category</entry>
  378. <entry>Autos</entry>
  379. </row>
  380. <row>
  381. <entry>Keywords</entry>
  382. <entry>cars, funny</entry>
  383. </row>
  384. <row>
  385. <entry>Description</entry>
  386. <entry>My description</entry>
  387. </row>
  388. <row>
  389. <entry>Filename</entry>
  390. <entry>mytestmovie.mov</entry>
  391. </row>
  392. <row>
  393. <entry>File <acronym>MIME</acronym> type</entry>
  394. <entry>video/quicktime</entry>
  395. </row>
  396. <row>
  397. <entry>Video private?</entry>
  398. <entry><constant>FALSE</constant></entry>
  399. </row>
  400. <row>
  401. <entry>Video location</entry>
  402. <entry>37, -122 (lat, long)</entry>
  403. </row>
  404. <row>
  405. <entry>Developer Tags</entry>
  406. <entry>mydevelopertag, anotherdevelopertag</entry>
  407. </row>
  408. </tbody>
  409. </tgroup>
  410. </table>
  411. <para>
  412. Der folgende Code erzeugt einen leeren <ulink
  413. url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_YouTube_VideoEntry.html">Zend_Gdata_YouTube_VideoEntry</ulink>
  414. der Hochgeladen werden kann. Ein <ulink
  415. url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_App_MediaFileSource.html">Zend_Gdata_App_MediaFileSource</ulink>
  416. wird dann verwendet um die aktuelle Video Datei zu speichern. Unter der Hand wird ein
  417. <ulink
  418. url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_YouTube_Extension_MediaGroup.html">Zend_Gdata_YouTube_Extension_MediaGroup</ulink>
  419. Objekt verwendet um alle Metadaten des Videos zu speichern. Die anbei beschriebenen
  420. Helfermethoden erlauben es die Metadaten des Videos zu setzen ohne das man sich um das
  421. Medien Gruppen Objekt kümmern muß. $uploadUrl ist der Ort an den der neue Eintrag
  422. gepostet wird. Er kann entweder durch $userName des aktuell authentifizierten Benutzers
  423. spezifiziert werden, oder, alternativ indem einfach der String 'default' verwendet wird
  424. um auf den aktuell authentifizierten Benutzer zu verweisen.
  425. </para>
  426. <example id="zend.gdata.youtube.uploads.example">
  427. <title>Ein Video hochladen</title>
  428. <programlisting language="php"><![CDATA[
  429. $yt = new Zend_Gdata_YouTube($httpClient);
  430. $myVideoEntry = new Zend_Gdata_YouTube_VideoEntry();
  431. $filesource = $yt->newMediaFileSource('mytestmovie.mov');
  432. $filesource->setContentType('video/quicktime');
  433. $filesource->setSlug('mytestmovie.mov');
  434. $myVideoEntry->setMediaSource($filesource);
  435. $myVideoEntry->setVideoTitle('My Test Movie');
  436. $myVideoEntry->setVideoDescription('My Test Movie');
  437. // Beachte das category eine gültige YouTube Kategorie sein muß !
  438. $myVideoEntry->setVideoCategory('Comedy');
  439. // Setzt Keywords, beachte das es ein Komma getrennter String ist
  440. // und das keines der Schlüsselwörter ein Leerzeichen enthalten darf
  441. $myVideoEntry->SetVideoTags('cars, funny');
  442. // Optional Entwickler Tags setzen
  443. $myVideoEntry->setVideoDeveloperTags(array('mydevelopertag',
  444. 'anotherdevelopertag'));
  445. // Optional den Ort des Videos setzen
  446. $yt->registerPackage('Zend_Gdata_Geo');
  447. $yt->registerPackage('Zend_Gdata_Geo_Extension');
  448. $where = $yt->newGeoRssWhere();
  449. $position = $yt->newGmlPos('37.0 -122.0');
  450. $where->point = $yt->newGmlPoint($position);
  451. $myVideoEntry->setWhere($where);
  452. // URI hochladen für den aktuell authentifizierten Benutzer
  453. $uploadUrl =
  454. 'http://uploads.gdata.youtube.com/feeds/users/default/uploads';
  455. // Versuch das Video hochzuladen, eine Zend_Gdata_App_HttpException fangen wenn
  456. // Sie vorhanden ist oder nur eine reguläre Zend_Gdata_App_Exception
  457. try {
  458. $newEntry = $yt->insertEntry($myVideoEntry,
  459. $uploadUrl,
  460. 'Zend_Gdata_YouTube_VideoEntry');
  461. } catch (Zend_Gdata_App_HttpException $httpException) {
  462. echo $httpException->getRawResponseBody();
  463. } catch (Zend_Gdata_App_Exception $e) {
  464. echo $e->getMessage();
  465. }
  466. ]]></programlisting>
  467. </example>
  468. <para>
  469. Um ein Video als privat hochzuladen muß einfach $myVideoEntry->setVideoPrivate();
  470. verwendet werden; bevor das Hochladen durchgeführt wird. $videoEntry->isVideoPrivate()
  471. kann verwendet werden um zu prüfen ob ein Video Eintrag privat ist oder nicht.
  472. </para>
  473. </sect2>
  474. <sect2 id="zend.gdata.youtube.uploads.browser">
  475. <title>Browser-basierender Upload</title>
  476. <para>
  477. Browser-basierendes hochladen wird fast auf die gleiche Weise durchgeführt wie direktes
  478. Hochladen, ausser das man kein <ulink
  479. url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_App_MediaFileSource.html">Zend_Gdata_App_MediaFileSource</ulink>
  480. Objekt an den <ulink
  481. url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_YouTube_VideoEntry.html">Zend_Gdata_YouTube_VideoEntry</ulink>
  482. anhängt den man erstellt. Stattdessen überträgt man einfach alle Metadaten des Videos um
  483. ein Token Element zurück zu erhalten welches verwendet werden kann um ein
  484. <acronym>HTML</acronym> Upload Formular zu erstellen.
  485. </para>
  486. <example id="zend.gdata.youtube.uploads.browser.example-1">
  487. <title>Browser-basierender Upload</title>
  488. <programlisting language="php"><![CDATA[
  489. $yt = new Zend_Gdata_YouTube($httpClient);
  490. $myVideoEntry= new Zend_Gdata_YouTube_VideoEntry();
  491. $myVideoEntry->setVideoTitle('My Test Movie');
  492. $myVideoEntry->setVideoDescription('My Test Movie');
  493. // Beachte das die Kategorie eine gültige YouTube Kategorie sein muß !
  494. $myVideoEntry->setVideoCategory('Comedy');
  495. $myVideoEntry->SetVideoTags('cars, funny');
  496. $tokenHandlerUrl = 'http://gdata.youtube.com/action/GetUploadToken';
  497. $tokenArray = $yt->getFormUploadToken($myVideoEntry, $tokenHandlerUrl);
  498. $tokenValue = $tokenArray['token'];
  499. $postUrl = $tokenArray['url'];
  500. ]]></programlisting>
  501. </example>
  502. <para>
  503. Der obige Code gibt einen Link und ein Token aus das verwendet wird um ein
  504. <acronym>HTML</acronym> Formular zu erstellen und im Browser des Benutzers anzuzeigen.
  505. Ein einfaches Beispielformular wird unten gezeigt mit $tokenValue welches den Inhalt des
  506. zurückgegebenen Token Elements darstellt, welches wie gezeigt, oben von $myVideoEntry
  507. empfangen wird. Damit der Benutzer, nachdem das Formular übermittelt wurde, auf die
  508. Website umgeleitet wird, muß ein $nextUrl Parameter an die $postUrl von oben angehängt
  509. werden, was auf die gleiche Weise funktioniert wie der $next Parameter eines AuthSub
  510. Links. Der einzige Unterschied ist hier das, statt eines einmal zu verwendenden Tokens,
  511. ein Status und eine ID Variable in der <acronym>URL</acronym> zurückgegeben werden.
  512. </para>
  513. <example id="zend.gdata.youtube.uploads.browser.example-2">
  514. <title>Browser-basierender Upload: Erstellen des HTML Formulars</title>
  515. <programlisting language="php"><![CDATA[
  516. // Platzieren um den Benutzer nach dem Upload umzuleiten
  517. $nextUrl = 'http://mysite.com/youtube_uploads';
  518. $form = '<form action="'. $postUrl .'?nexturl='. $nextUrl .
  519. '" method="post" enctype="multipart/form-data">'.
  520. '<input name="file" type="file"/>'.
  521. '<input name="token" type="hidden" value="'. $tokenValue .'"/>'.
  522. '<input value="Video Daten hochladen" type="submit" />'.
  523. '</form>';
  524. ]]></programlisting>
  525. </example>
  526. </sect2>
  527. <sect2 id="zend.gdata.youtube.uploads.status">
  528. <title>Den Upload Status prüfen</title>
  529. <para>
  530. Nachdem ein Video hochgeladen wurde, wird es im Upload Feed des authentifizierten
  531. Benutzer unmittelbar sichtbar sein. Trotzdem wird es auf der Site nicht öffentlich sein
  532. solange es nicht bearbeitet wurde. Videos die ausgeschlossen oder nicht erfolgreich
  533. hochgeladen wurden werden auch nur im Upload Feed des authentifizierten Benutzers
  534. sichtbar sein. Der folgende Code prüft den Status eines <ulink
  535. url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_YouTube_VideoEntry.html">Zend_Gdata_YouTube_VideoEntry</ulink>
  536. um zu sehen ob er jetzt noch nicht live ist oder ob er nicht akzeptiert wurde.
  537. </para>
  538. <example id="zend.gdata.youtube.uploads.status.example">
  539. <title>Den Status von Video Uploads checken</title>
  540. <programlisting language="php"><![CDATA[
  541. try {
  542. $control = $videoEntry->getControl();
  543. } catch (Zend_Gdata_App_Exception $e) {
  544. echo $e->getMessage();
  545. }
  546. if ($control instanceof Zend_Gdata_App_Extension_Control) {
  547. if ($control->getDraft() != null &&
  548. $control->getDraft()->getText() == 'yes') {
  549. $state = $videoEntry->getVideoState();
  550. if ($state instanceof Zend_Gdata_YouTube_Extension_State) {
  551. print 'Upload Status: '
  552. . $state->getName()
  553. .' '. $state->getText();
  554. } else {
  555. print 'Die Status Informationen des Videos konnten bis jetzt nicht'
  556. . ' empfangen werden. Bitte versuchen Sie es etwas später'
  557. . ' nochmals.\n";
  558. }
  559. }
  560. }
  561. ]]></programlisting>
  562. </example>
  563. </sect2>
  564. <sect2 id="zend.gdata.youtube.other">
  565. <title>Andere Funktionen</title>
  566. <para>
  567. Zusätzlich zur oben beschriebenen Funktionalität, enthält die YouTube
  568. <acronym>API</acronym> viele andere Funktionen die es erlauben Video Metadaten zu
  569. verändern, Video Einträge zu löschen und den kompletten Bereich an Community Features
  570. der Site zu verwenden. Einige der Community Features die durch die
  571. <acronym>API</acronym> verändert werden können enthalten: Ratings, Kommentare,
  572. Playlisten, Einschreibungen, Benutzer Profile, Kontakte und Nachrichten.
  573. </para>
  574. <para>
  575. Bitte schauen Sie in die komplette Dokumentation die im
  576. <ulink url="http://code.google.com/apis/youtube/developers_guide_php.html">PHP
  577. Entwickler Guide</ulink> auf code.google.com zu finden ist.
  578. </para>
  579. </sect2>
  580. </sect1>