[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как-то можно автоматизировать скачивание и переиме
kpripper
user posted image

На буржуйском сайте до нового года открыли бесплатный доступ к разным журналам. Но вручную это перекачать даже нескольким людям очень тяжело. Названия статей указаны оранжевым цветом, а сами статьи ниже в пдф формате, но проблема в том, что все они называются фуллтекст.пдф
Как-то можно автоматизировать скачивание и переименование средствами php и javascript ?



Спустя 45 минут, 10 секунд (4.12.2011 - 15:06) kovaldm написал(а):
Конечно можно. Можно чистым php решить задачу.

Спустя 1 час, 2 минуты, 11 секунд (4.12.2011 - 16:08) kpripper написал(а):
А можно алгоритм узнать ? smile.gif

Спустя 1 минута, 36 секунд (4.12.2011 - 16:09) TranceIT написал(а):
Через курл например... Долго, но можно... 50000 тыс изображений я выкачал за 30-40 минут.

Спустя 40 минут, 17 секунд (4.12.2011 - 16:50) kpripper написал(а):
просто выкачать не проблема, нужно правильно назвать скачанные файлы.

Спустя 41 секунда (4.12.2011 - 16:50) kovaldm написал(а):
И это тоже вполне реализуемо.

Спустя 55 секунд (4.12.2011 - 16:51) kpripper написал(а):
ну так подскажите как выловить правильное навзание для каждого файла ?

Спустя 7 минут, 4 секунды (4.12.2011 - 16:58) kovaldm написал(а):
Как он называется на вашем скриншоте, так же и называйте его скриптом. Регулярные выражения в помощь.

Спустя 2 минуты, 21 секунда (4.12.2011 - 17:01) kpripper написал(а):
Ну тогда получается, что я должен делать копи-паст для каждого названия, какая-же здесь автоматизация ? А регулярное выражение для всех названий придумать не могу.

Спустя 9 минут, 28 секунд (4.12.2011 - 17:10) TranceIT написал(а):
Никакого копипаста, я же вам сказал про cURL.

Спустя 3 минуты, 16 секунд (4.12.2011 - 17:13) kpripper написал(а):
blink.gif если бы еще умел с этим курлом обращаться, заглянул одним глазом в руководство и понял что до Нового года я это вряд-ли осилю.

Спустя 6 минут, 18 секунд (4.12.2011 - 17:20) TranceIT написал(а):
Я его изучал по готовым примерам. В руководстве черт ногу сломит...

Спустя 1 час, 55 минут, 58 секунд (4.12.2011 - 19:16) kovaldm написал(а):
Какого нового года? Я за один вечер освоил, не напрягаясь.

Спустя 41 минута, 11 секунд (4.12.2011 - 19:57) kpripper написал(а):
О, спасибо, с примерами проблем нет ))

Спустя 4 часа, 29 минут, 50 секунд (5.12.2011 - 00:27) kpripper написал(а):
В общем как качать с помощью курл я так и не понял, но не важно, допустим я скачал файлы. Они у меня лежат в папке и имеют имена
fulltext.pdf
fulltext_001.pdf
fulltext_002.pdf
fulltext_003.pdf
...
fulltext_N.pdf

и есть массив-список с их названиями

Array
(
[0] => название
[1] => название_001
[2] => название_002
[3] => название_003
...
[N] => название_N
)

Как переименовать файлы в папке именами из массива ?

Спустя 15 минут, 19 секунд (5.12.2011 - 00:42) Игорь_Vasinsky написал(а):
нужно при копировании это делать, ты же про автоматизацию говоришь.

посмотри примеры с copy()

Спустя 35 минут, 35 секунд (5.12.2011 - 01:18) kpripper написал(а):
Я иду странным путем)) Качаю файлы, делаю из их названий массив, потом делаю массив из названий статей из сайта, теперь нужно заменить значения в массиве 1 значенями из массива 2. array_splice() нельзя ?

Спустя 6 минут, 34 секунды (5.12.2011 - 01:24) Игорь_Vasinsky написал(а):
уф. тебе же надо файлы с оригинальным именем копировать?

ты при парсинге должен получить массив

имя = ссылка на файл

потом в цикле copy() + rename

Спустя 5 минут, 18 секунд (5.12.2011 - 01:29) kpripper написал(а):
Если копировать - имеется ввиду скачивать, то да.

Только если делать массив имя = ссылка на файл, то это совсем по другому и все сначала нужно начинать. Проще уже заменить значения в моих массивах ))


Или нет ?

Спустя 5 минут, 24 секунды (5.12.2011 - 01:35) Игорь_Vasinsky написал(а):
))) запускай for(), читай один массив - пиши в другой

Спустя 10 минут, 50 секунд (5.12.2011 - 01:46) kpripper написал(а):
А почему после
<?php

$dir = "d:/Медицина/Surgery Today/2011/Volume 41, Number 12 December 2011/";
$dh = opendir($dir);
while (false !== ($filename = readdir($dh)))
{
$files[] = $filename;
}
?>


первые два элемента в массиве $files такие:

[0] => .
[1] => ..


Спустя 9 минут, 31 секунда (5.12.2011 - 01:55) Игорь_Vasinsky написал(а):
это корень папки и выход из папки

добавь условие для исключения их

Спустя 4 минуты, 54 секунды (5.12.2011 - 02:00) kpripper написал(а):
1 сек

Спустя 18 часов, 14 минут, 4 секунды (5.12.2011 - 20:14) kpripper написал(а):
Добавить условие не получается, удалил элементы через

unset ($files['.']);
unset ($files['..']);

но они не удалилсь, отображаются. В чем проблема ?

Получилось

unset ($files[0]);
unset ($files[1]);

Спустя 34 минуты, 44 секунды (5.12.2011 - 20:49) kpripper написал(а):
Файлы скачал, добавил их названия в массив, создал другой массив из настоящих названий с помощью регулярных выражений, заменил значения в массиве 1 на значения из массива 2, все заменилось. Но файлы то не переименовались. Выходит нужно в массив 1 добавить сами файлы, а не их названия, или как их все таки переименовать ?

Спустя 1 час, 34 минуты, 12 секунд (5.12.2011 - 22:23) Winston написал(а):
$dir = "d:/Медицина/Surgery Today/2011/Volume 41, Number 12  December 2011/"; 
$dh = opendir($dir);
while (false !== ($filename = readdir($dh)))
{
if ($filename != "." && $filename != "..") {
$files[] = $filename;
}
}

Спустя 5 минут, 36 секунд (5.12.2011 - 22:29) kpripper написал(а):
Спасибо, принцип понял, я подобное вставлял прямо в while - не работало, но этот этап сейчас с горем пополам работает.

Спустя 11 минут, 36 секунд (5.12.2011 - 22:40) treycerok написал(а):
$glob=glob('*pdf');
$all=count($glob);
$ar_name=array(0...$all);
for ($i=0;$i<$all;$i++)
{

// использовать copy , если PHP_VERSION<5.3.1 , если соответствует 5.3> , то rename можно . для винды(если php_version<5.3. - copy), linux-all
if(copy($glob[i],$ar_name[$i].'.pdf'))
{
echo $glob[i].'=>'.$ar_name[$i].' true';
}
else
{
echo $glob[i].'=>'.$ar_name[$i].' false';
}
// 5.3 >

if(rename($glob[i],$ar_name[$i].'.pdf'))
{
echo $glob[i].'=>'.$ar_name[$i].' true';
}
else
{
echo $glob[i].'=>'.$ar_name[$i].' false';
}


}



какой способ использовать выбор за вами) и вашей версией рнр

Спустя 1 минута, 35 секунд (5.12.2011 - 22:42) treycerok написал(а):
про unlink не стал писать,=) может пригодятся старые имена

Спустя 16 минут, 51 секунда (5.12.2011 - 22:59) kpripper написал(а):
Выдает ошибку

Parse error: syntax error, unexpected '.' in $ar_name=array(0...$all);

Спустя 1 минута, 13 секунд (5.12.2011 - 23:00) treycerok написал(а):
Parse error: syntax error, unexpected '.' in $ar_name=array(0...$all);


так ты подставь свой массив ))) или копипастни сюда, соберу рабочий скрипт

Спустя 2 дня, 23 часа, 48 минут, 8 секунд (8.12.2011 - 22:48) kpripper написал(а):
В общем вот весь мой бред



<pre>
<?php

$s = file_get_contents("http://www.springerlink.com/content/0941-1291/41/12/");
$pattern = "#<p class=\"title\"><a[^>]+>(.*)</a>#Usi";
preg_match_all($pattern,$s,$out);
print_r($out[1]);

//$list = glob('*.html');
// foreach($list as $file){
// rename($file, str_replace('.html', '.php', $file));
//}

?>
</pre>


<?php

$dir = "d:/Медицина/Surgery Today/2011/Volume 41, Number 12 December 2011/";
$dh = opendir($dir);
while (false !== ($filename = readdir($dh)))
{
if ($filename != "." && $filename != "..") {
$files[] = $filename;
}
}



?>

<pre>
<?php

//$files=$out[1];

//$numofarticles=count($files);

sort($files);
print_r($files);
$files=$out[1];
print_r($files);





//for ($i=0; $i<10; $i++) {
//rename ($files[i];$out[1][i];)
//}

?>
</pre>



</
pre>
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.