Youtube Api Curl Upload systeem

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

Pagina: 1 2 volgende »

Kumkwat Trender

Kumkwat Trender

18/09/2009 16:47:00
Quote Anchor link
Hoi iedereen,

Ik ben bezig om een youtube api te gebruiken zonder Zend :))

Google zelf geeft een prachtige uitleg waar ik geen hol van snap omdat het niet wil werken :(
Uploading the video file

Het is me echter wel gelukt om een Authenticatie code op te vragen met een SID en een LSID code, maar het uploaden doet echt heel erg vaag en raar.

Mijn code tot nu:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
[...]
function
upload() {
    $files      = $_FILES;
    $name       = $files['file']['name'];
    $type       = $files['file']['type'];
    $size       = $files['file']['size'];
    $tmp_nm     = $files['file']['tmp_name'];

    $data = array('name' => 'Foo', 'file' => '@'.$tmp_nm);

    print_r($_POST);
    print_r($_FILES);

    echo 'Size '.$size;

    $headers = array(
        "Authorization: AuthSub token=".$this->auth,
        "GData-Version: 2",
        "X-GData-Key: key=".$this->dev_key,
        "Content-length: ".$size,
        "API_XML_request"
    );

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'http://gdata.youtube.com/action/GetUploadToken');
    curl_setopt($ch, CURLOPT_USERAGENT, $this->user_agent);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

    curl_setopt($ch, CURLOPT_POST,1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_REFERER,true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION ,1);
    curl_setopt($ch, CURLOPT_HEADER,0);

    if($this->get_info)
    {

        $this->curlget_info($ch);
        }

    $output = curl_exec($ch);

    print_r($output);

    return $output;
}
[...]

?>


Output 1:
Quote:

Array ( [token] => TOKEN ) Array ( [file] => Array ( [name] => 0016.png [type] => image/png [tmp_name] => D:\wamp\tmp\php178D.tmp [error] => 0 [size] => 4216 ) ) Size 4216

Google
Error

Length Required

POST requests require a Content-length header.


Output 2:
Quote:

Array ( [token] => TOKEN ) Array ( [file] => Array ( [name] => Film.wmv [type] => video/x-ms-wmv [tmp_name] => D:\wamp\tmp\php11D3.tmp [error] => 0 [size] => 96589 ) ) Size 96589

Google
Error

Length Required

POST requests require a Content-length header.

Ik hoop dat iemand me ermee kan helpen
Gewijzigd op 01/01/1970 01:00:00 door Kumkwat Trender
 
PHP hulp

PHP hulp

24/04/2024 17:31:23
 

18/09/2009 19:10:00
Quote Anchor link
Effe tussen twee haakjes; browser based (http://code.google.com/intl/nl-NL/apis/youtube/2.0/developers_guide_protocol_browser_based_uploading.html) is veel simpelere te implementeren


maar goed je mag moeilijk doen



goed tijd voor actie
1) curl kan de content length zelf bepalen dus geef die liever maar niet mee!
2) ik zou die timeout niet meegeven
3) misschien kan je beter eerste je file nog even moooooven naar een echte locatie
 
Kumkwat Trender

Kumkwat Trender

18/09/2009 19:14:00
Quote Anchor link
Webmakerij schreef op 18.09.2009 19:10:
[...]
goed tijd voor actie
1) curl kan de content length zelf bepalen dus geef die liever maar niet mee!
2) ik zou die timeout niet meegeven
3) misschien kan je beter eerste je file nog even moooooven naar een echte locatie


Hmm, 2 en 3 kan ik doen geen probleem. Maar stap 1 snap ik dan niet helemaal. Want als ik content-lenth helemaal weg zet krijg ik nog steeds dezelfde error
 
Kumkwat Trender

Kumkwat Trender

23/09/2009 01:57:00
Quote Anchor link
Bumpppppp :))
 
Maurice

maurice

23/09/2009 06:23:00
Quote Anchor link
Peter je Mocht 2 berichten plaatsen was na 42 uur geweest ;)
 
Eddy E

Eddy E

23/09/2009 08:04:00
Quote Anchor link
De melding is dat er geen lengte-header wordt meegestuurd.
Oplossing is die dus WEL meesturen. Ik zie dat je dat wel doet, maar is $size wel goed gevuld? Moet er niet een 'kb' achter oid?

Dat soort dingen moet je even goed controleren, want 1 teken te veel of te weinig is al fout.
 
GaMer B

GaMer B

23/09/2009 09:43:00
Quote Anchor link
Eddy Erkelens schreef op 23.09.2009 08:04:
De melding is dat er geen lengte-header wordt meegestuurd.
Oplossing is die dus WEL meesturen. Ik zie dat je dat wel doet, maar is $size wel goed gevuld? Moet er niet een 'kb' achter oid?

Dat soort dingen moet je even goed controleren, want 1 teken te veel of te weinig is al fout.


Nee, want:
Quote:
14.13 Content-Length

The Content-Length entity-header field indicates the size of the entity-body, in decimal number of OCTETs, sent to the recipient or, in the case of the HEAD method, the size of the entity-body that would have been sent had the request been a GET.
Content-Length = "Content-Length" ":" 1*DIGIT

An example is
Content-Length: 3495
 

23/09/2009 09:53:00
Quote Anchor link
Ik stuur al mijn request richting youtube, picassa zonder heel de content-length header. Gewoon niet opgeven en ik heb nergens last;

Doe eens met curl_getinfo je headers enzo opvragen.
 
Robert Deiman

Robert Deiman

23/09/2009 09:55:00
Quote Anchor link
Kan het zijn dat je:

CURLOPT_INFILESIZE nog moet gebruiken?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
curl_setopt($ch, CURLOPT_INFILESIZE,$size);
?>


Ik zie hem namelijk wel in de HTTP header staan die size, dus dat moet goed zijn. Misschien moet je die nog aan de CURL gegevens/ opties meegeven. (misschien dat de volgorde wat uit (kan) maken, maar dat lijkt me eigenlijk niet)
 
Kumkwat Trender

Kumkwat Trender

23/09/2009 12:12:00
Quote Anchor link
maurice schreef op 23.09.2009 06:23:
Peter je Mocht 2 berichten plaatsen was na 42 uur geweest ;)


Geen idee waar jij het over hebt, mja ik wink je wel terug ;)

Anyway
Eddy Erkelens schreef op 23.09.2009 08:04:
De melding is dat er geen lengte-header wordt meegestuurd.
Oplossing is die dus WEL meesturen. Ik zie dat je dat wel doet, maar is $size wel goed gevuld?


Dan zou ik op zijn minste een error van google verwachten dat de size verkeerd is of iets dergelijks, op het moment krijg ik namelijk een error waarbij de hele content-length mist betreft google..

Eddy Erkelens schreef op 23.09.2009 08:04:
Moet er niet een 'kb' achter oid?

Dat soort dingen moet je even goed controleren, want 1 teken te veel of te weinig is al fout.


Ik ben er bijna 2 weken mee bezig heb dat natuurlijk goed overgenomen, maar als je twijfels hebt.. Controleer dan maar voor mij :))
Link


Webmakerij schreef op 23.09.2009 09:53:
Ik stuur al mijn request richting youtube, picassa zonder heel de content-length header. Gewoon niet opgeven en ik heb nergens last;

Doe eens met curl_getinfo je headers enzo opvragen.


Wat voor requests zijn het? Bestanden ophalen of uploaden? Want ophalen lukt me wel, maar het uploaden is een rommel. (Als het een upload script is o.i.d. mag ik het dan heel misschien even koekeloeren hoe jij het in elkaar heb gezet :D)

By the way mijn curl_getinfo ziet er heel erg geweldig mooi uit :)

Array
(
=> http://gdata.youtube.com/action/GetUploadToken
[http_code] => 0
[header_size] => 0
[request_size] => 0
[filetime] => 0
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 0
[namelookup_time] => 0
[connect_time] => 0
[pretransfer_time] => 0
[size_upload] => 0
[size_download] => 0
[speed_download] => 0
[speed_upload] => 0
[download_content_length] => 0
[upload_content_length] => 0
[starttransfer_time] => 0
[redirect_time] => 0
)

[quote='Robert_Deiman schreef op 23.09.2009 09:55']Kan het zijn dat je:

CURLOPT_INFILESIZE nog moet gebruiken?

<?php
curl_setopt($ch, CURLOPT_INFILESIZE,$size);
?>

Ik zie hem namelijk wel in de HTTP header staan die size, dus dat moet goed zijn. Misschien moet je die nog aan de CURL gegevens/ opties meegeven. (misschien dat de volgorde wat uit (kan) maken, maar dat lijkt me eigenlijk niet)[/quote]

Net geprobeerd, geen verandering. In me wireshark zie ik wel dat het mooi verzonden word :( maar ik weet het niet of ik mis echt een belangerijke ding of google wil mij niet accepteren. Ik denk dat ik dit script ook eens in HTTP ga construeren hoewel ik al me hoop kwijt ben en geen zin meer heb... :P
Gewijzigd op 01/01/1970 01:00:00 door Kumkwat Trender
 

23/09/2009 21:00:00
Quote Anchor link
Downloaden en uploaden en neem dat mag niet want het is gemaakt als commercieel product.

Overigens zeggen foutmeldingen van Google nooit zo heel veel. Zo krijg je bij Picasa de melding dat de geuploaden content is strijd is met de tos als je een verkeerde user id meegeeft.

Zet je wireshark of network monitor aan en kijk eens of er idd geen content-length wordt gestuurd.
 
Kumkwat Trender

Kumkwat Trender

30/09/2009 15:46:00
Quote Anchor link
Ik heb het probleem geprobeerd te construeren in sockets en fsockopen.. maar nog steeds hetzelfde output :(

Sockets:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
$server
= "gdata.youtube.com";
$script = "/action/GetUploadToken";


define('SERVER', $server);
define('PORT', 80);
define('PATH', $script);
define('_EOL', "\r\n");

$sock = socket_create(AF_INET, SOCK_STREAM, 0);
if (!$sock) {
       echo 'Fatal error: Couldn\'t create socket';
       exit;
}


if (!socket_connect($sock, SERVER, PORT)) {
       echo 'Fatal error: Couldn\'t connect';
       exit;
}



$request = null;
$request .= 'POST ' . PATH . ' HTTP/1.0' . _EOL;
$request .= 'Host: ' . SERVER . _EOL;
$request .= 'Authorization: AuthSub token="'.$this->auth.'"'. _EOL;
$request .= 'GData-Version: 2 '._EOL;
$request .= 'X-GData-Client: '.$this->sid._EOL;
$request .= 'X-GData-Key: key='.$this->dev_key._EOL;
$request .= 'Content-Length: 5' . _EOL;
$request .= 'Content-Type: application/atom+xml; charset=UTF-8'._EOL;
$request .= 'API_XML_request'._EOL;
$request .= 'Connection: close' . _EOL;
$request .= _EOL;

echo '<pre>';
    print_r($request);
echo '</pre>';

if (!socket_send($sock, $request, strlen($request), 0)) {
       echo 'Fatal error: Couldn\'t send request';
       exit;
}


$output = null;
$buffer = null;
while (socket_recv($sock, $buffer, 1024, 0) != 0) {
       $output .= $buffer;
}


print_r($output);
?>


Output:
Quote:
HTTP/1.0 411
Length Required Content-Type: text/html;
charset=UTF-8
Content-Length: 1363
Date: Wed, 30 Sep 2009 13:38:57 GMT
Server: GFE/2.0 X-XSS-Protection: 0

Google Error
Length Required
POST requests require a Content-length header.


En fsockopen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
29
30
31
32
33
<?php
$server
= "gdata.youtube.com";
$script = "/action/GetUploadToken";

$sock = fsockopen($server, 80);
if ( $sock )
{

    $szParams = $data['file'];

    $headers= "POST ".$script." HTTP/1.1\r\n";
    $headers.= "Host: gdata.youtube.com\r\n";
    $headers.= "Authorization: AuthSub token=\"".$this->auth."\"\r\n";
    $headers.= "GData-Version: 2\r\n";
    $headers.= "X-GData-Client: ".$this->sid."\r\n";
    $headers.= "X-GData-Key: key=".$this->dev_key."\r\n";
    $headers.= "Content-Length: ".strlen($szParams)."\r\n";
    $headers.= "Content-Type: application/atom+xml; charset=UTF-8\r\n";
    $headers.= "API_XML_request\r\n";
    $headers.= "Connection: close\r\n";
    $headers.= "\r\n";

    fwrite($sock, $headers);
    fwrite($sock, $szParams);

    $output = "";
    while ( !feof($sock) )
    {

        $output .= fread($sock, 4096);
    }


    print_r($output);
}

?>

zelfde output :((
 
Kumkwat Trender

Kumkwat Trender

03/10/2009 17:14:00
Quote Anchor link
Bumpp

Hmm

link
Gewijzigd op 01/01/1970 01:00:00 door Kumkwat Trender
 
Jan Koehoorn

Jan Koehoorn

03/10/2009 18:04:00
Quote Anchor link
Je definieert nu zelf je regeleinde, maar probeer het eens met PHP_EOL?
 
Kumkwat Trender

Kumkwat Trender

03/10/2009 18:11:00
Quote Anchor link
Nog steeds hetzelfde output :(

wat ik terug krijg:
Quote:
HTTP/1.1
411
Length Required
Content-Type: text/html; charset=UTF-8
Content-Length: 1363
Date: Sat, 03 Oct 2009 16:09:24 GMT
Server: GFE/2.0 X-XSS-Protection: 0

Google
Error
Length Required
POST requests require a Content-length header.
 
Kumkwat Trender

Kumkwat Trender

04/10/2009 18:09:00
Quote Anchor link
Bump?
 
Jeffrey H

Jeffrey H

04/10/2009 22:34:00
Quote Anchor link
Volgens mij heb ik hem:

API_XML_REQUEST moet je vervangen :P

Kijk eens naar het voorbeeld ;)
Hij geeft gewoon de error verkeerd aan...

Edit:
Er staat: This value contains an atom field with information about the video...
Gewijzigd op 01/01/1970 01:00:00 door Jeffrey H
 
Kumkwat Trender

Kumkwat Trender

11/10/2009 02:56:00
Quote Anchor link
ok snap er niets van, Verklaar u nader a.u.b. :)
 
Kumkwat Trender

Kumkwat Trender

12/10/2009 02:54:00
Quote Anchor link
bump...
 
Eddy E

Eddy E

12/10/2009 08:21:00
Quote Anchor link
Peter schreef op 23.09.2009 12:12:
Eddy Erkelens schreef op 23.09.2009 08:04:
Moet er niet een 'kb' achter oid?

Dat soort dingen moet je even goed controleren, want 1 teken te veel of te weinig is al fout.


Ik ben er bijna 2 weken mee bezig heb dat natuurlijk goed overgenomen, maar als je twijfels hebt.. Controleer dan maar voor mij :))
Link


Dat kan ik dus inderdaad ook niet bevestigen. Het staat nergens bij. Vandaar dat het te proberen is.
Nu zie ik wel dat het in bytes moet, dus zal het wel zonder 'b' erachter zijn. Maar dat zal je ongetwijfeld geprobeerd hebben.
 
Eddy E

Eddy E

12/10/2009 08:23:00
Quote Anchor link
Peter schreef op 03.10.2009 18:11:
Nog steeds hetzelfde output :(

wat ik terug krijg:
Quote:
HTTP/1.1
411
Length Required
Content-Type: text/html; charset=UTF-8
Content-Length: 1363
Date: Sat, 03 Oct 2009 16:09:24 GMT
Server: GFE/2.0 X-XSS-Protection: 0

Google
Error
Length Required
POST requests require a Content-length header.


Dus... je geeft de HTTP-header mee.
En als je DIRECT daarna de length meegeeft (wat de code ook weergeeft)?
Dus:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
29
30
31
32
33
34
<?php
$server
= "gdata.youtube.com";
$script = "/action/GetUploadToken";

$sock = fsockopen($server, 80);
if ( $sock )
{

    $szParams = $data['file'];

    $headers= "POST ".$script." HTTP/1.1\r\n";
// hier dus de lengte direct al, voor de rest!
    $headers.= "Content-Length: ".strlen($szParams)."\r\n";
    $headers.= "Host: gdata.youtube.com\r\n";
    $headers.= "Authorization: AuthSub token=\"".$this->auth."\"\r\n";
    $headers.= "GData-Version: 2\r\n";
    $headers.= "X-GData-Client: ".$this->sid."\r\n";
    $headers.= "X-GData-Key: key=".$this->dev_key."\r\n";
    $headers.= "Content-Type: application/atom+xml; charset=UTF-8\r\n";
    $headers.= "API_XML_request\r\n";
    $headers.= "Connection: close\r\n";
    $headers.= "\r\n";

    fwrite($sock, $headers);
    fwrite($sock, $szParams);

    $output = "";
    while ( !feof($sock) )
    {

        $output .= fread($sock, 4096);
    }


    print_r($output);
}

?>


Het is het proberen waard, toch?

Gelieve Niet Bumpen::
Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de Afbeelding knop om je tekst aan te passen.

SanThe.
Gewijzigd op 01/01/1970 01:00:00 door Eddy E
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.