
На буржуйском сайте до нового года открыли бесплатный доступ к разным журналам. Но вручную это перекачать даже нескольким людям очень тяжело. Названия статей указаны оранжевым цветом, а сами статьи ниже в пдф формате, но проблема в том, что все они называются фуллтекст.пдф
Как-то можно автоматизировать скачивание и переименование средствами php и javascript ?
Спустя 45 минут, 10 секунд (4.12.2011 - 15:06) kovaldm написал(а):
Конечно можно. Можно чистым php решить задачу.
Спустя 1 час, 2 минуты, 11 секунд (4.12.2011 - 16:08) kpripper написал(а):
А можно алгоритм узнать ?

Спустя 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 написал(а):

Спустя 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
)
Как переименовать файлы в папке именами из массива ?
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()
посмотри примеры с copy()
Спустя 35 минут, 35 секунд (5.12.2011 - 01:18) kpripper написал(а):
Я иду странным путем)) Качаю файлы, делаю из их названий массив, потом делаю массив из названий статей из сайта, теперь нужно заменить значения в массиве 1 значенями из массива 2. array_splice() нельзя ?
Спустя 6 минут, 34 секунды (5.12.2011 - 01:24) Игорь_Vasinsky написал(а):
уф. тебе же надо файлы с оригинальным именем копировать?
ты при парсинге должен получить массив
имя = ссылка на файл
потом в цикле copy() + rename
ты при парсинге должен получить массив
имя = ссылка на файл
потом в цикле 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 написал(а):
А почему после
первые два элемента в массиве $files такие:
[0] => .
[1] => ..
<?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]);
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';
}
}
какой способ использовать выбор за вами) и вашей версией рнр
$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);
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>