парсинг и скачка файла с сортировкой


Anonymous - Posted on 27 Июнь 2009

есть структура xml файла

вот сылка на него http://www.backstagegallery.com/xml/photoGetById.xml?photoId=11567

<photolist><list><photo>
<id>11567</id>
<artistName>Marty Stuart</artistName>
<artistUrl>MartyStuart</artistUrl>
<photographerName>Rick Kohlmeyer</photographerName>
<photographerUrl>RickKohlmeyer</photographerUrl>
<year>2008</year><imageUrlSmall>
/photos/RK/4665/Stuart-Marty-pics-RK-4665-101-s.jpg
</imageUrlSmall><imageUrlMedium>
/photos/RK/4665/Marty-Stuart-photos-RK-4665-101-m.jpg
</imageUrlMedium><imageUrlLarge>
/photos/RK/4665/Marty-Stuart-pictures-2008-RK-4665-101-l.jpg
</imageUrlLarge>
<imageUrlFull>/photos/RK/4665/RK-4665-101.jpg</imageUrlFull>
<location venue="Summerfest" city="Milwaukee" state="Wisconsin" country="United States of America">Summerfest (Milwaukee, Wisconsin)</location>
</photo>
</list>
<requestedNum>1</requestedNum>
<numResults>1</numResults>
<page>0</page>
<totalResults>1</totalResults>
<totalPages>1</totalPages>
</photolist>

интересуют только строки в тэгах artistName и imageUrlFull, нужно перебрать 12 000 таких файлов и скачать большие картинки с сортировкой по авторам, знакомый набросал приблезительный скрипт но он чего то не работает в упор, прощу помочь

define('SITE_ROOT', 'http://www.backstagegallery.com');
define('LOCAL_STORAGE_PATH', '/path/to/storage/');
 
for ($i = 1; $i < 18340; $i++) {
// скачали да загрузили в XML
$xmlData = file_get_contents(SITE_ROOT . '/xml/photoGetById.xml?photoId=' . $i);
$xml = simplexml_load_string($xmlData);
// нашли автора в $artist
$result = $xml->xpath('/photolist/list/photo/artistName');
list(, $artist) = each($result);
 
// нашли картинко
$result = $xml->xpath('/photolist/list/photo/imageUrlFull');
list(, $imageUri) = each($result);
 
// создали папку (считаем, что на каждого артиста одна папка и одна фотка)
$imgPath = LOCAL_STORAGE_PATH . $artist;
$cmd = 'mkdir -p ' . $imgPath;
 
имена можешь выдрать оригинальные через $imageUri
while (list(, $imageUri) = each($result)) {
}
// скачать и сохранить
 
// скачали и сохранили картинку под именем 1.jpg
$image = file_get_contents(SITE_ROOT . $imageUri);
$fp = fopen($imgPath' ./$result.jpg','a+');
fwrite($fp, $image);
fclose($fp);
 
}

Первое что состряпалось. Кладешь скрипт в директорию, где лежат твои xmlные файлы.

#!/bin/bash
 
ls *.xml | xargs curl --silent | \
grep "artistName"\|"imageUrlFull" | sed -e "s/ <artistName>//" | \
sed -e "s/<\/artistName>//" | sed -e "s/<imageUrlFull>//" | \
sed -e "s/<\/imageUrlFull>//" | \
while read line ; do printf "%s" $line ; done >> tmp_file ; printf "\n" >> tmp_file

После запуска скрипта в директоии появится файлик tmp_file
С ним можно поступить вот так:

cat tmp_file | sort > new_tmp_file

Появится new_tmp_file, в котором будет отсортированный список имен и ссылок на файлы.

Если все вышеперечисленное получится пиши, пойдем дальше (-:

Отправить комментарий

Google Friend Connect (leave a quick comment)
loading...
Содержание этого поля является приватным и не предназначено к показу.