[PHP] YouTube API video verwijderen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben al een tijdje bezig geweest met de YouTube API en ik heb het uploaden vrij makkelijk aan de gang gekregen.
Het lukt mij nu alleen niet om een video weer te verwijderen via dezelfde API.

In de Developers Guide schrijven ze dit:
Deleting a video

Deleting a video is as simple as retrieving the uploads feed for the authenticated user and invoking the delete() method on the Zend_Gdata_YouTube service object, passing in the VideoEntry to be deleted.

$yt->delete($videoEntryToDelete);
En dit is mijn code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
require_once 'Zend/Loader.php'; // the Zend dir must be in your include_path
Zend_Loader::loadClass('Zend_Gdata_YouTube');
Zend_Loader::loadClass('Zend_Gdata_AuthSub');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin'); 
$authenticationURL= 'https://www.google.com/youtube/accounts/ClientLogin';
$httpClient = Zend_Gdata_ClientLogin::getHttpClient(
                                          $username = '***',
                                          $password = '***',
                                          $service = 'youtube',
                                          $client = null,
                                          $source = 'YouTube test', // a short string identifying your application
                                          $loginToken = null,
                                          $loginCaptcha = null,
                                          $authenticationURL);
                                          $developerKey = '...';
$applicationId = '...';
$clientId = '...';

$yt = new Zend_Gdata_YouTube($httpClient, $applicationId, $clientId, $developerKey);

function verwijder($yit)                    
{     
  $yt = new Zend_Gdata_YouTube();
  $yt->delete($yit);
}
verwijder("_ynGNoCPXx4");
?>


De foutmelding die ik krijg is als volgt:
Fatal error: Uncaught exception 'Zend_Uri_Exception' with message 'Scheme "_yngnocpxx4" is not supported' in /home/domeinnaam/public_html/Zend/Uri.php:127 Stack trace: #0 /home/domeinnaam/public_html/Zend/Http/Client.php(257): Zend_Uri::factory('_ynGNoCPXx4') #1 /home/domeinnaam/public_html/Zend/Gdata/App.php(618): Zend_Http_Client->setUri('_ynGNoCPXx4') #2 /home/domeinnaam/public_html/Zend/Gdata.php(204): Zend_Gdata_App->performHttpRequest('DELETE', '_ynGNoCPXx4', Array, '', NULL, NULL) #3 /home/domeinnaam/public_html/Zend/Gdata/App.php(837): Zend_Gdata->performHttpRequest('DELETE', '_ynGNoCPXx4', Array, '', NULL, NULL) #4 /home/domeinnaam/public_html/test.php(98): Zend_Gdata_App->delete('_ynGNoCPXx4') #5 /home/domeinnaam/public_html/test.php(100): getAndPrintUserUploads() #6 {main} thrown in /home/domeinnaam/public_html/Zend/Uri.php on line 127
Is er iemand die enig idee heeft hoe ik dit kan verhelpen?
Alvast heel erg bedankt!

Acties:
  • 0 Henk 'm!

  • Evilbee
  • Registratie: November 2002
  • Laatst online: 19:56
Ik je code definieer je twee keer $yt, een keer met parameter en een keer zonder. Daarnaast staat $developerKey buiten de haken van Zend_Gdata_ClientLogin::getHttpClient.

[ Voor 84% gewijzigd door Evilbee op 16-12-2008 14:33 . Reden: Quote weggehaald ]

LinkedIn - Collega worden?


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Evilbee schreef op dinsdag 16 december 2008 @ 14:32:
Ik je code definieer je twee keer $yt, een keer met parameter en een keer zonder. Daarnaast staat $developerKey buiten de haken van Zend_Gdata_ClientLogin::getHttpClient.
Beide $yt's staan in een andere scope, dus dat is niet per se een probleem. Verder is $developerKey een kwestie van foute inspringing en hoort die ook buiten haakjes.

Wat wel zou kunnen: moet die _ niet weg? Volgens mij is die geen onderdeel van het ID? :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
NMe schreef op dinsdag 16 december 2008 @ 14:46:
[...]

Beide $yt's staan in een andere scope, dus dat is niet per se een probleem. Verder is $developerKey een kwestie van foute inspringing en hoort die ook buiten haakjes.

Wat wel zou kunnen: moet die _ niet weg? Volgens mij is die geen onderdeel van het ID? :)
Wanneer ik dat doe krijg ik wel een andere foutmelding:
Fatal error: Uncaught exception 'Zend_Uri_Exception' with message 'Scheme "yngnocpxx4" is not supported' in /home/domeinnaam/public_html/Zend/Uri.php:127 Stack trace: #0 /home/domeinnaam/public_html/Zend/Http/Client.php(257): Zend_Uri::factory('ynGNoCPXx4') #1 /home/domeinnaam/public_html/Zend/Gdata/App.php(618): Zend_Http_Client->setUri('ynGNoCPXx4') #2 /home/domeinnaam/public_html/Zend/Gdata.php(204): Zend_Gdata_App->performHttpRequest('DELETE', 'ynGNoCPXx4', Array, '', NULL, NULL) #3 /home/domeinnaam/public_html/Zend/Gdata/App.php(837): Zend_Gdata->performHttpRequest('DELETE', 'ynGNoCPXx4', Array, '', NULL, NULL) #4 /home/domeinnaam/public_html/test.php(98): Zend_Gdata_App->delete('ynGNoCPXx4') #5 /home/domeinnaam/public_html/test.php(100): getAndPrintUserUploads() #6 {main} thrown in /home/domeinnaam/public_html/Zend/Uri.php on line 127

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 22:17

MueR

Admin Tweakers Discord

is niet lief

Wat stuur je nou dan precies naar Youtube? Ik mis namelijk nogal een stukje debugging wat je zelf hebt gedaan. Werkt het bijvoorbeeld wel als je er geen eigen functie omheen plaatst, zoals
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
require_once 'Zend/Loader.php'; // the Zend dir must be in your include_path
Zend_Loader::loadClass('Zend_Gdata_YouTube');
Zend_Loader::loadClass('Zend_Gdata_AuthSub');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin'); 
$authenticationURL= 'https://www.google.com/youtube/accounts/ClientLogin';
$httpClient = Zend_Gdata_ClientLogin::getHttpClient(
                                          $username = '***',
                                          $password = '***',
                                          $service = 'youtube',
                                          $client = null,
                                          $source = 'YouTube test', // a short string identifying your application
                                          $loginToken = null,
                                          $loginCaptcha = null,
                                          $authenticationURL);
$developerKey = '...';
$applicationId = '...';
$clientId = '...';

$yt = new Zend_Gdata_YouTube($httpClient, $applicationId, $clientId, $developerKey);
$yt->delete("_ynGNoCPXx4");
?>


Oh ja, en ga eens exceptions afhandelen :/

[ Voor 96% gewijzigd door MueR op 16-12-2008 16:26 ]

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
MueR schreef op dinsdag 16 december 2008 @ 16:19:
Wat stuur je nou dan precies naar Youtube? Ik mis namelijk nogal een stukje debugging wat je zelf hebt gedaan. Werkt het bijvoorbeeld wel als je er geen eigen functie omheen plaatst, zoals
PHP:
1
code


Oh ja, en ga eens exceptions afhandelen :/
Dat had ik eerst overigens zoals jij het beschreef. Ik weet niet waarom ik er een functie van gemaakt heb.
Het werkt zo dus ook niet :?

Ik heb overigens al uren op Google gezocht, maar was helaas ook geen oplossing te vinden.

Acties:
  • 0 Henk 'm!

  • wackmaniac
  • Registratie: Februari 2004
  • Laatst online: 11-09 10:21
Zoals ik het zie denk Zend volgens mij dat de ID de url is. Misschien moet je daar een volledige url aanroepen?

Read the code, write the code, be the code!


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
wackmaniac schreef op dinsdag 16 december 2008 @ 20:06:
Zoals ik het zie denk Zend volgens mij dat de ID de url is. Misschien moet je daar een volledige url aanroepen?
Heb ik ook al aan zitten denken, maar ook dat blijkt niet te werken :S

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Gewoon de betreffende Zend files pakken en debuggen, er zitten genoeg fouten in. Zelf al fouten tegengekomen in Captcha, OpenId en Pdf onderdelen (en netjes een bugreport van gedaan). Sommige bugs zijn enorm dom maarja, tis gratis dus echt veel te klagen heb je niet ook :) Ben allang blij ermee want het is echt een prachtig framework :>

Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

probeer dit eens:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
require_once 'Zend/Loader.php'; // the Zend dir must be in your include_path
Zend_Loader::loadClass('Zend_Gdata_YouTube');
Zend_Loader::loadClass('Zend_Gdata_AuthSub');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin'); 
$authenticationURL= 'https://www.google.com/youtube/accounts/ClientLogin';
$httpClient = Zend_Gdata_ClientLogin::getHttpClient(
                                          $username = '***',
                                          $password = '***',
                                          $service = 'youtube',
                                          $client = null,
                                          $source = 'YouTube test', // a short string identifying your application
                                          $loginToken = null,
                                          $loginCaptcha = null,
                                          $authenticationURL);
$developerKey = '...';
$applicationId = '...';
$clientId = '...';

$yt = new Zend_Gdata_YouTube($httpClient, $applicationId, $clientId, $developerKey);
$videoEntry = yt->getVideoEntry('_ynGNoCPXx4');
$yt->delete($videoEntry);


Volgens de docs moet een videoEntry geven aan de delete opdracht en niet de video ID.

Als je goed naar de error melding kijkt dan zie je ook staan dat hij een hele vage URL probeert op te halen. En dat kan niet goed zijn.
Fatal error: Uncaught exception 'Zend_Uri_Exception' with message 'Scheme "_yngnocpxx4" is not supported' in /home/domeinnaam/public_html/Zend/Uri.php:127 Stack trace: #0 /home/domeinnaam/public_html/Zend/Http/Client.php(257): Zend_Uri::factory('_ynGNoCPXx4') #1 /home/domeinnaam/public_html/Zend/Gdata/App.php(618): Zend_Http_Client->setUri('_ynGNoCPXx4') #2 /home/domeinnaam/public_html/Zend/Gdata.php(204): Zend_Gdata_App->performHttpRequest('DELETE', '_ynGNoCPXx4', Array, '', NULL, NULL) #3 /home/domeinnaam/public_html/Zend/Gdata/App.php(837): Zend_Gdata->performHttpRequest('DELETE', '_ynGNoCPXx4', Array, '', NULL, NULL) #4 /home/domeinnaam/public_html/test.php(98): Zend_Gdata_App->delete('_ynGNoCPXx4') #5 /home/domeinnaam/public_html/test.php(100): getAndPrintUserUploads() #6 {main} thrown in /home/domeinnaam/public_html/Zend/Uri.php on line 127

[ Voor 28% gewijzigd door LuCarD op 17-12-2008 09:38 ]

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het lijkt erop dat de oplossing nabij is. Gevoelsmatig ziet deze foutmelding er iets beter uit, maar nog steeds heb ik geen idee hoe ik het op kan lossen.
Fatal error: Uncaught exception 'Zend_Gdata_App_InvalidArgumentException' with message 'You must specify an URI to which to post.' in /home/domeinnaam/public_html/Zend/Gdata/App.php:596 Stack trace: #0 /home/domeinnaam/public_html/Zend/Gdata.php(202): Zend_Gdata_App->performHttpRequest('DELETE', NULL, Array, '', 'application/ato...', NULL) #1 /home/domeinnaam/public_html/Zend/Gdata/App.php(837): Zend_Gdata->performHttpRequest('DELETE', NULL, Array, '', 'application/ato...', NULL) #2 /home/domeinnaam/public_html/test.php(44): Zend_Gdata_App->delete(Object(Zend_Gdata_YouTube_VideoEntry)) #3 {main} thrown in /home/domeinnaam/public_html/Zend/Gdata/App.php on line 596
Bedankt voor de reactie tot nu toe :D

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Nou, ik zie je probleem niet zo. Ben toevallig vanmiddag even bezig met de Youtube api van Zend en het werkt precies zoals ik verwacht.

- Je haalt de videoentry op
- die entry geef je mee aan de delete() functie
- klaar!

edit: staat gewoon hier ook http://code.google.com/ap...e_php.html#DeletingVideos

[ Voor 19% gewijzigd door Cartman! op 17-12-2008 16:39 ]


Verwijderd

Topicstarter
Cartman! schreef op woensdag 17 december 2008 @ 16:39:
Nou, ik zie je probleem niet zo. Ben toevallig vanmiddag even bezig met de Youtube api van Zend en het werkt precies zoals ik verwacht.

- Je haalt de videoentry op
- die entry geef je mee aan de delete() functie
- klaar!

edit: staat gewoon hier ook http://code.google.com/ap...e_php.html#DeletingVideos
Volgens mij doe ik dat ook?
Zou je anders de stuk code van het verwijderen van jezelf kunnen laten zien?

Alvast heel erg bedankt.

  • Cartman!
  • Registratie: April 2000
  • Niet online
Volgens mij spreekt t enorm voor zich maar ok:

PHP:
1
2
3
4
5
public function delete($id)
{
    $video = $yt->getFullVideoEntry($id);
    $yt->delete($video);
}

(uitgeklede versie overigens)
Gebruik je wel de laatste versie? (1.7.1)

[ Voor 11% gewijzigd door Cartman! op 18-12-2008 16:20 ]


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

In de download van Zend Framework 1.7.1 staat een compleet voorbeeld.

ZendFramework-1.7.1\demos\Zend\Gdata\YouTubeVideoApp\operations.php

Programmer - an organism that turns coffee into software.


  • Cartman!
  • Registratie: April 2000
  • Niet online
Hij leest de docs gewoon niet goed, die hebben het over een video entry, niet een id of url. Een video entry is het videobject wat je terug krijgt van de diverse getVideoEntry functies die er zijn. Logisch dat een id of url dus niet gaan werken ;)

Verwijderd

Topicstarter
Cartman! schreef op donderdag 18 december 2008 @ 16:22:
Hij leest de docs gewoon niet goed, die hebben het over een video entry, niet een id of url. Een video entry is het videobject wat je terug krijgt van de diverse getVideoEntry functies die er zijn. Logisch dat een id of url dus niet gaan werken ;)
Blijkbaar moet het probleem toch ergens anders liggen, ik heb jou voorbeeld gebruikt en het voorbeeld van Zend. Toch blijken beide niet te werken, met de bekende foutmelding :S
Zie ik dan iets over het hoofd?

  • Cartman!
  • Registratie: April 2000
  • Niet online
Uh, ja...want anders zou het gewoon werken. Met 'werkt niet' kunnen we alleen niks. Dus plaats nogmaals je stukje code (die nu aangepast is) en geef de foutmelding aan.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Cartman! schreef op donderdag 18 december 2008 @ 23:14:
Uh, ja...want anders zou het gewoon werken. Met 'werkt niet' kunnen we alleen niks. Dus plaats nogmaals je stukje code (die nu aangepast is) en geef de foutmelding aan.
Sorry, natuurlijk ;)

De code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
require_once 'Zend/Loader.php'; // the Zend dir must be in your include_path 
Zend_Loader::loadClass('Zend_Gdata_YouTube'); 
Zend_Loader::loadClass('Zend_Gdata_AuthSub'); 
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
$authenticationURL= 'https://www.google.com/youtube/accounts/ClientLogin'; 
$httpClient = Zend_Gdata_ClientLogin::getHttpClient(
                                          $username = 'disney',
                                          $password = 'woei',
                                          $service = 'youtube',
                                          $client = null,
                                          $source = 'Koophuisclips', // a short string identifying your application
                                          $loginToken = null,
                                          $loginCaptcha = null,
                                          $authenticationURL);
                                          $developerKey = 'sleutel';
$applicationId = 'id';
$clientId = '1234';

$yt = new Zend_Gdata_YouTube($httpClient, $applicationId, $clientId, $developerKey); 


$videoEntryToDelete = $yt->getVideoEntry('id');
$yt->delete($videoEntryToDelete);


De foutmelding:
Fatal error: Uncaught exception 'Zend_Gdata_App_InvalidArgumentException' with message 'You must specify an URI to which to post.' in /home/domeinnaam/public_html/Zend/Gdata/App.php:596 Stack trace: #0 /home/domeinnaam/public_html/Zend/Gdata.php(202): Zend_Gdata_App->performHttpRequest('DELETE', NULL, Array, '', 'application/ato...', NULL) #1 /home/domeinnaam/public_html/Zend/Gdata/App.php(837): Zend_Gdata->performHttpRequest('DELETE', NULL, Array, '', 'application/ato...', NULL) #2 /home/domeinnaam/public_html/test.php(45): Zend_Gdata_App->delete(Object(Zend_Gdata_YouTube_VideoEntry)) #3 {main} thrown in /home/domeinnaam/public_html/Zend/Gdata/App.php on line 596

[ Voor 5% gewijzigd door Creepy op 19-12-2008 12:29 . Reden: Even wat wachtwoorden, usernames en ID's verwijderd ]


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Is $videoEntryToDelete wel een geldige video? var_dump em eens. En je had nog niet geantwoord of je wel de laatste versie van Zend Framework gebruikt? (1.7.1)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Cartman! schreef op vrijdag 19 december 2008 @ 10:54:
Is $videoEntryToDelete wel een geldige video? var_dump em eens. En je had nog niet geantwoord of je wel de laatste versie van Zend Framework gebruikt? (1.7.1)
ja ik gebruik de laatste versie.
De video lijkt mij geldig; aangezien je hem gewoon kan bekijken http://www.youtube.com/watch?v=_ynGNoCPXx4.

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
ja, maar of je video-object dus ook goed is... ($videoEntryToDelete)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Misschien een rare vraag, maar hoe weet ik of die goed is?

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Verwijderd schreef op vrijdag 19 december 2008 @ 12:38:
Misschien een rare vraag, maar hoe weet ik of die goed is?
Door hem met var_dump te echo'en op je pagina en kijken wat de waardes zijn die er uit komen.
PHP:
1
var_dump($videoEntryToDelete);
dus. :)

Of, wat ook kan:
PHP:
1
2
3
echo '<pre>';
print_r($videoEntryToDelete);
echo '</pre>';
Als het preformatted text is. :)

[ Voor 16% gewijzigd door CH4OS op 19-12-2008 13:03 ]


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
of
PHP:
1
Zend_Debug::dump($videoEntryToDelete);


Als je niet weet hoe je moet debuggen is het gebruik van een Youtube API dan niet iets teveel hooi op je vork?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik werk veel met PHP, maar ben niet erg bekend met Zend.
Er komt een immense lijst uit van bijna 50.000 tekens, ik weet niet of dat de bedoeling is?

Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Verwijderd schreef op vrijdag 19 december 2008 @ 14:19:
Ik werk veel met PHP, maar ben niet erg bekend met Zend.
Er komt een immense lijst uit van bijna 50.000 tekens, ik weet niet of dat de bedoeling is?
Zend Framework is ook gewoon PHP hoor...

Je kan ook Zend gaan debuggen. Je kan gaan onderzoeken waarom een bepaalde exceptie word gegeven. En dan terug werken naar het probleem. Op papier ziet de code er goed uit, maar zoals je gemerkt hebt verschilt theorie en praktijk nog wel eens.

Heb je eigenlijk wel rechten om de file te verwijderen?

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
LuCarD schreef op vrijdag 19 december 2008 @ 14:43:
[...]

Zend Framework is ook gewoon PHP hoor...

Je kan ook Zend gaan debuggen. Je kan gaan onderzoeken waarom een bepaalde exceptie word gegeven. En dan terug werken naar het probleem. Op papier ziet de code er goed uit, maar zoals je gemerkt hebt verschilt theorie en praktijk nog wel eens.

Heb je eigenlijk wel rechten om de file te verwijderen?
Dat week ik ;)

Ja, het bestand staat gewoon op mijn account.
Het rare is dat het blijkbaar bij andere mensen wel werkt met dezelfde code :S

Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Verwijderd schreef op vrijdag 19 december 2008 @ 14:49:
[...]

Dat week ik ;)

Ja, het bestand staat gewoon op mijn account.
Het rare is dat het blijkbaar bij andere mensen wel werkt met dezelfde code :S
* LuCarD heeft nog nooit met VideoTube API gewerkt. De berichten die ik heb gemaakt zijn alleen aan de hand van de Docs, kennis op papier. Ik kan ook geen test draaien of jouw code proberen aangezien Youtube hier geblokkeerd is.

Heb je al eens de demo bekeken van Zend YoutubeApp in de zend directory? Die heeft ook een iets andere delete methode, misschien dat die wel werkt?
Kan het soms zijn dat de getVideoEntry geen edit link mee geeft?
Probeer getVideoEntry eens te vervangen door getFullVideoEntry ( zoals Cartman! gebruikt ? )

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
getFullVideoEntry

Het lijkt te werken :D

Ik weet dat ik 'getFullVideoEntry' eerst ook heb geprobeerd, maar toen werkte hij niet. En nu wel.

Héél erg bedankt iedereen voor het meedenken en helpen! _/-\o_
Pagina: 1