Ссылки могут быть как непосредственно на файлы, так и на файлы/каталоги в облачных хранилищах (YandexDisk, GoogleDrive, MailRuCloud, Dropbox).
На входе имеется ссылка, пароль-логин (если нужна Simple-авторизация), регулярка имени файла (если ссылка ведет на каталог).
Нужно, в общем случае - авторизоваться, найти заданный файл, скачать его на локальный диск, и если файл находится в архиве (могут быть zip,rar,7z,tar.gz,tgz) то распаковать его.
Скрипт нужно написать на PHP7 для Linux-окружения, используя следующий шаблон:
$_CNF = $_CNF ?? (object)array(
'connection' => (object)array( // if connection to external service lost, then
'retries' => 5, // reconnect 5 times
'sleep' => 20, // wait 20 seconds for next retry
),
);
$_PRO = $_PRO ?? [
// 77 - идентификатор группы ссылок
77 => [
// 3 - прямые ссылки на файлы
3 => [
// 10 - id файла
10 => [
// [0] - скрипт получения (если сложная авторизация)
'auth_script',
// [1] - ссылка на файл
'http://domine.ru/file.dat',
// [2] - имя файла или регулярка имени файла
null,
// [3] - логин (если пустой, то нет аутентификации)
'username',
// [4] - пароль
'password',
// [5,6] - не используются
null, 0 ],
11 => [ /* данные другого файла с id 11 */ ],
],
// 4 - ссылки на каталоги / файлы в облачных хранили
4 => [
15 => [ 'auth_script',
'https://yadi.sk/d/2329jdsfjd',
'/.*filename.*\.dat/ui',
'username', 'password', null, 0 ],
18 => [],
],
],
// 79 - другая группа с прямыми ссылками и облачными
79 => [], ];
// получение файлов по прямым ссылкам
function fetch_files_2() { global $_CNF, $_PRO;
foreach( $_PRO as $id => $inf ) if( isset( $inf[3] ) ) foreach( $inf[3] as $fid => $arg ) {
// получить файл и сохранить его во временный каталог
// если это архив (определять по расширению), то нужно распаковать
//
// if( ERROR ) { log() and continue; }
} return 0;
}
// получение файлов по ссылкам на облачные хранилища
function fetch_files_3() { global $_CNF, $_PRO;
foreach( $_PRO as $id => $inf ) if( isset( $inf[4] ) ) foreach( $inf[4] as $fid => $arg ) { }
return 0;
}
Хотелось бы в итоге видеть готовый к боевому использованию компонент обхода ссылок. Оплата по договоренности. Контакт: aladin.it@yandex.ru или +7-925-3420026