Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /*-------------------------------------------
- КОНФИГ
- -------------------------------------------*/
- // папка в которую сохранять, будет создано автоматически
- define('DIR_RESULT', 'result');
- // будет в следующей версии, пока не работает
- // распаковывать zip? (обычно там пак фоток)
- define('EXTRACT_ZIP', true);
- // Тайм-аут на чтение в секундах, указанный с помощью типа float
- // Отрицательное значение означает бесконечное время ожидания.
- define('HTTP_HEAD_TIMEOUT', 5);
- define('HTTP_GET_TIMEOUT', 90);
- // какие файлы загружать и сохранять
- $what_save = ['mp4', 'zip', 'jpg', 'png']; // 'mp4', 'mp3', 'mp4', 'zip', 'gif', 'jpg', 'png'
- /*------------------------------------------------------------------------
- СОЗДАНИЕ ПАПОК
- ------------------------------------------------------------------------*/
- class config
- {
- function __construct($dirs)
- {
- $this -> create_dirs($dirs);
- $this -> other();
- }
- function create_dirs($dirs)
- {
- // сбросить кеш файлов
- clearstatcache();
- foreach ( $dirs as $dir )
- {
- if ( file_exists(DIR_RESULT . '/' . $dir) )
- {
- continue;
- }
- if ( !mkdir(DIR_RESULT . '/' . $dir, 0777, true) )
- {
- exit('err1: Cant create ' . $dir);
- }
- }
- }
- function other()
- {
- // отключаем ограничение на время выполнения скрипта
- if ( !set_time_limit(0) )
- {
- exit('err2: Cant use set_time_limit');
- }
- }
- }
- /*------------------------------------------------------------------------
- ЗАГРУЗКА
- ------------------------------------------------------------------------*/
- class fuck
- {
- function __construct($what_save)
- {
- $this -> what_save = $what_save;
- while ( 1 )
- {
- clearstatcache();
- if ( file_exists('stop.txt') )
- {
- exit('<b>Stopped. You can delete stop.txt</b>');
- }
- $id = $this -> id_generator();
- if ( !$this -> is_need_to_load() )
- {
- continue;
- }
- if ( !$this -> load() )
- {
- continue;
- }
- $this -> save();
- }
- }
- function id_generator()
- {
- // длина 4-6 символов
- $len = mt_rand(4,6);
- $this -> id = '';
- for ( $i = 0; $i < $len; $i++ )
- {
- $this -> id .= ( mt_rand(0,1) == 1 ) // сгенерировать число или букву?
- ? chr(mt_rand(97, 102)) // сгенерировать a-f
- : mt_rand(0,9); // сгенерировать 0-9
- }
- }
- function parse_name()
- {
- foreach ($this -> headers as $line)
- {
- if ( strpos($line, 'Location:') === false )
- {
- continue;
- }
- // хоспаде, перепишите на регулярки
- // отбросить location
- list( , $url) = explode(':', $line, 2);
- // отбросить пробелы, вырезать /path
- $path = parse_url(trim($url), PHP_URL_PATH);
- // распарсить имя и расширение файла
- $this -> extension = pathinfo($path, PATHINFO_EXTENSION );
- return in_array($this -> extension, $this -> what_save);
- }
- // нет нихуя! обычно это ссаный json
- return false;
- }
- function is_need_to_load() // HTTP HEAD
- {
- $opts =
- [
- 'http' =>
- [
- 'method' => 'HEAD',
- 'timeout' => HTTP_HEAD_TIMEOUT,
- 'ignore_errors' => true
- ]
- ];
- $context = stream_context_create($opts);
- @file_get_contents("https://gs.3g.cn/D/{$this -> id}/c", false, $context); // вернёт false в любом случае, так как head
- if ( !isset($http_response_header) )
- {
- return false;
- }
- $this -> headers = $http_response_header;
- return $this -> parse_name();
- }
- function load ( )
- {
- $opts =
- [
- 'http' =>
- [
- 'method' => 'GET',
- 'timeout' => HTTP_GET_TIMEOUT
- ]
- ];
- $context = stream_context_create($opts);
- if ( !$file = @file_get_contents("https://gs.3g.cn/D/{$this -> id}/c", false, $context) )
- {
- return false;
- }
- $this -> content = $file;
- return true;
- }
- function save()
- {
- if ( !file_put_contents(DIR_RESULT . "/{$this -> extension}/{$this -> id}.{$this -> extension}", $this -> content) )
- {
- echo '<span style="color:red">Cant save ';
- }
- else
- {
- echo '<span style="color:green">Saved ';
- }
- echo DIR_RESULT . "/{$this -> extension}/{$this -> id}.{$this -> extension}</span><br>";
- }
- }
- /*------------------------------------------------------------------------
- СТАРТ
- ------------------------------------------------------------------------*/
- $c = new config($what_save);
- $x = new fuck($what_save);
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement