Как подключить Яндекс.Диск?

#1 20 сентября 2012 в 16:19
Наткнулся на хабре на статью, там скрипт для заправки файлов сайта на Яндекс.Диск: habrahabr.ru/post/67111/

Как бы прикрутить форму загрузки на Яндекс.Диск на сайт? Было бы интересно сделать на сайте форму по которой пользователи смогут загружать файлы на мой Яндекс.Диск.
#2 20 сентября 2012 в 16:21
Для пущей наглядности копирую скрипт сюда:
  1. <?php
  2. print uploadFile(ваш_логин, ваш_пароль, путь_к_файлу)."\n";
  3.  
  4. function uploadFile($login, $password, $filename)
  5. {
  6. $cookie_file = 'cookie.txt';
  7. $user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6';
  8.  
  9. // логинимся в систему
  10. $ch = curl_init('https://passport.yandex.ru/passport?mode=auth');
  11.  
  12. $fields = array();
  13. $fields[] = "login=$login";
  14. $fields[] = "passwd=$password";
  15. $fields[] = "twoweeks=yes";
  16. curl_setopt($ch, CURLOPT_POSTFIELDS, implode('&', $fields));
  17. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  18. curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
  19. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  20. curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
  21. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  22. curl_setopt($ch, CURLOPT_POST, 1);
  23. $result = curl_exec($ch);
  24. $info = curl_getinfo($ch);
  25.  
  26. if ($info['http_code'] != 200) return false;
  27.  
  28. // запрашиваем сервер для загрузки файла
  29. $url = 'http://narod.yandex.ru/disk/getstorage/?rnd=' . (mt_rand( 0, 777777) + 777777);
  30.  
  31. curl_setopt($ch, CURLOPT_URL, $url);
  32. curl_setopt($ch, CURLOPT_POST, 0);
  33. curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
  34. $result = curl_exec($ch);
  35. $info = curl_getinfo($ch);
  36.  
  37. if (preg_match('/"url":"(.*?)", "hash":"(.*?)", "purl":"(.*?)"/', $result, $m)) {
  38. $upload_url = $m[1];
  39. $hash = $m[2];
  40. $purl = $m[3];
  41. } else {
  42. return false;
  43. }
  44.  
  45. // загружаем файл на сервер
  46. $url = $upload_url . '?tid=' . $hash;
  47. $fields = array();
  48. $fields['file'] = '@' . $filename;
  49. curl_setopt($ch, CURLOPT_URL, $url);
  50. curl_setopt($ch, CURLOPT_REFERER, 'http://narod.yandex.ru/');
  51. curl_setopt($ch, CURLOPT_POST, 1);
  52. curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
  53. $result = curl_exec($ch);
  54. $info = curl_getinfo($ch);
  55.  
  56. if ($info['http_code'] != 200) return false;
  57.  
  58. // print_r($info);
  59. // проверяем прогресс бар
  60. $url = $purl . '?tid=' . $hash . '&rnd=' . (mt_rand( 0, 777777) + 777777);
  61.  
  62. curl_setopt($ch, CURLOPT_URL, $url);
  63. curl_setopt($ch, CURLOPT_POST, 0);
  64. $result = curl_exec($ch);
  65.  
  66. if (!preg_match('/"status": "done"/', $result, $m)) {
  67. return false;
  68. }
  69.  
  70. // переходим на страницу и определяем ссылку
  71. $url = 'http://narod.yandex.ru/disk/last/';
  72. curl_setopt($ch, CURLOPT_URL, $url);
  73. $result = curl_exec($ch);
  74. curl_close($ch);
  75.  
  76. if (preg_match('/<span class=\'b\-fname\'><a href="(.*?)">/', $result, $m)) {
  77. $fileURL = trim($m[1]);
  78. return $fileURL;
  79. }
  80.  
  81. return false;
  82. }
  83. ?>
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.