За последние 24 часа нас посетил 19331 программист и 1621 робот. Сейчас ищут 847 программистов ...

Проблемы с Youtube api

Тема в разделе "Прочие вопросы по PHP", создана пользователем wo1f, 8 дек 2009.

  1. wo1f

    wo1f Активный пользователь

    С нами с:
    8 дек 2009
    Сообщения:
    2
    Симпатии:
    0
    Нужно загрузить файл на ютуб используя прямую загрузку, делаю какбы все по их стандартам, но не выходит, почемуто. Может у кого есть опыт в этом деле и подскажет где ошибка у меня -

    вот код, который не работает -

    PHP:
    1. <?php
    2.    
    3. $eq = "accountType=HOSTED_OR_GOOGLE&Email=$mail&Passwd=$pass&service=youtube&source=$apiname";
    4. if ($fp = fsockopen ("ssl://www.google.com", 443, $errno, $errstr, 20))
    5. {
    6. $request ="POST /youtube/accounts/ClientLogin HTTP/1.0\r\n";
    7. $request.="Host: [url=http://www.google.com]www.google.com[/url]\r\n";
    8. $request.="Content-Type:application/x-www-form-urlencoded\r\n";
    9. $request.="Content-Length: ".strlen($eq)."\r\n";
    10. $request.="\r\n\r\n";
    11. $request.=$eq;
    12. fwrite($fp,$request,strlen($request));
    13. while (!feof($fp))
    14. $response.=fread($fp,8192);
    15. fclose($fp);
    16. }
    17. preg_match("!(.*?)Auth=(.*?)\n!si",$response,$ok);
    18.  
    19. echo $ok[2];
    20. $token = $ok[2];
    21.  $newfile=$_SERVER['DOCUMENT_ROOT']."/uploads/trailer.flv";
    22.     $data = <<<HTML
    23. --f93dcbA3
    24. Content-Type: application/atom+xml; charset=UTF-8
    25.  
    26. <?xml version="1.0"?>
    27. <entry xmlns="http://www.w3.org/2005/Atom"
    28.   xmlns:media="http://search.yahoo.com/mrss/"
    29.   xmlns:yt="http://gdata.youtube.com/schemas/2007">
    30.   <media:group>
    31.     <media:title type="plain">$film</media:title>
    32.     <media:description type="plain">Трейлер к фильму {$film}</media:description>
    33.     <media:category scheme="http://gdata.youtube.com/schemas/2007/categories.cat">Video</media:category>
    34.     <media:keywords>film, trailer</media:keywords>
    35.   </media:group>
    36. </entry>
    37. --f93dcbA3
    38.  
    39. Content-Type: video/x-flv
    40. Content-Transfer-Encoding: binary
    41.  
    42.  
    43. HTML;
    44.     $data .= file_get_contents ($newfile);
    45. $data .= "\r\n--f93dcbA3--";
    46.  
    47. $len = strlen($data);
    48. echo "длинна запроса = $len <br>";
    49. if ($fp = fsockopen ("uploads.gdata.youtube.com", 80, $errno, $errstr, 20))
    50. {
    51. $request =<<<HTML
    52. POST /feeds/api/users/$login/uploads HTTP/1.1
    53. Host: uploads.gdata.youtube.com
    54. Authorization: GoogleLogin auth=$token
    55. X-GData-Client: $apiname
    56. X-GData-Key: key=$apikey
    57. Slug: trailer.flv
    58. Content-Type: multipart/related; boundary=--f93dcbA3
    59. Content-Length: $len
    60. Connection: close
    61.  
    62. $data
    63. HTML;
    64.  
    65. socket_set_timeout($fp, 180);
    66.  
    67. fputs($fp,$request,strlen($request));
    68. $response = fread($fp,3280);
    69. fclose($fp);
    70. echo $response;
    71.  
    72. }
    Вобщем логинимся нормально,(первый запрос) токен получаю, файл с трейлером, сто процентов грузится в память (проверяется определением размера переменной data), формат пост запроса тоже вроде бы соответствует формату апи ютуба, но в результате все время приходит один и тотже ответ -

    Может кто подскажет что не так? а то уже мозги пухнут...