Zend_Gdata_YouTube.xml 29 KB

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