Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Программирование на PHP

  Все выпуски  

RFpro.ru: Программирование на PHP


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

vladisslav
Статус: 5-й класс
Рейтинг: 1073
∙ повысить рейтинг »
Волков Алексей aka Lupo
Статус: 5-й класс
Рейтинг: 330
∙ повысить рейтинг »
Палян Александр Михайлович
Статус: 6-й класс
Рейтинг: 319
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / PHP

Номер выпуска:1186
Дата выхода:26.12.2009, 22:00
Администратор рассылки:Товарищ Бородин, Модератор
Подписчиков / экспертов:640 / 194
Вопросов / ответов:1 / 1
IRC-канал по теме:#php

Вопрос № 175498: Доброе время суток) Есть ли у кого-то скрипт который скачивает больше 1го файла(т.е все картинки) с определенной страницы (как пример -- http://nnm.ru/blogs/malecat/k_130-letiyu_i_v_stalina/#cut) и закачивает из на определенный адрес в инете. С...



Вопрос № 175498:

Доброе время суток)
Есть ли у кого-то скрипт который скачивает больше 1го файла(т.е все картинки) с определенной страницы (как пример -- http://nnm.ru/blogs/malecat/k_130-letiyu_i_v_stalina/#cut) и закачивает из на определенный адрес в инете.
Спасибо)

Отправлен: 21.12.2009, 21:30
Вопрос задал: Zolotarevsky, Посетитель
Всего ответов: 1
Страница вопроса »


Отвечает Волков Алексей aka Lupo, 5-й класс :
Здравствуйте, Zolotarevsky.
Код:

<?php
// Пишем функцию для сбора ссылок
function harvest ($link) {
// Открываем файл по линку

/* раскомментировать, если хостинг не поддерживает кУРЛ (ессно, закомментировать секцию кУРЛ
$fd = fopen($link, 'r');
echo $fd."\n";
$buffer = "";
while (!feof($fd)) {
$buffer .= fgets($fd, 4096);
}
fclose($fd);
*/
// $buffer = file_get_contents ($link); // это ещё один способ получить сурс, крайний случай

$curl = curl_init(); // самый быстрый способ
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($curl, CURLOPT_URL, $link);
$buffer = curl_exec($curl);
curl_close ($curl);

// в буффере хтмл страницы

// пишем регэксп для выделения линков

$pattern = "|<img[^(src)]+src[\s]*=[\s]*[\'\"]*([\d\w\.\:\/\,\&\=\-\_\+\%\;\?]+[^\'\"\s>]+)[\'\"\s>]+|i";

preg_match_all ($pattern, $buffer, $matches);

$l = pathinfo($link."?");

foreach ($matches[1] AS &$value) {

$value = trim($value);

if (substr($value, 0, 4) <> "http") $value = $l['dirname']."/".$value;

$picname = basename($value);

if (save_file(scaleImageFileToBlob($value), "harvest/".$picname)) {

echo "$picname saved\n";

} else {

echo "saving $picname failed\n";

};

};
return;

};

function save_file($file, $filename) {

$fd = fopen($filename, 'xb');

if (!$fd) return false;// save_file($file, $filename.rand(0,9));

fwrite($fd, $file);

fclose($fd);

return true;
}

function scaleImageFileToBlob($file) {

$source_pic = $file;
$max_width = 500;
$max_height = 500;

list($width, $height, $image_type) = getimagesize($file);

switch ($image_type)
{
case 1: $src = imagecreatefromgif($file); break;
case 2: $src = imagecreatefromjpeg($file); break;
case 3: $src = imagecreatefrompng($file); break;
default: return ''; break;
}

$x_ratio = $max_width / $width;
$y_ratio = $max_height / $height;

if( ($width <= $max_width) && ($height <= $max_height) ){
$tn_width = $width;
$tn_height = $height;
}elseif ( ($x_ratio * $height) < $max_height){
$tn_height = ceil($x_ratio * $height);
$tn_width = $max_width;
}else{
$tn_width = ceil($y_ratio * $width);
$tn_height = $max_height;
}

$tmp = imagecreatetruecolor($tn_width,$tn_height);

/* Check if this image is PNG or GIF to preserve its transparency */
if(($image_type == 1) OR ($image_type==3))
{
imagealphablending($tmp, false);
imagesavealpha($tmp,true);
$transparent = imagecolorallocatealpha($tmp, 255, 255, 255, 127);
imagefilledrectangle($tmp, 0, 0, $tn_width, $tn_height, $transparent);
}
imagecopyresampled($tmp,$src,0,0,0,0,$tn_width, $tn_height,$width,$height);

/*
* imageXXX() has only two options, save as a file, or send to the browser.
* It does not provide you the oppurtunity to manipulate the final GIF/JPG/PNG file stream
* So I start the output buffering, use imageXXX() to output the data stream to the browser,
* get the contents of the stream, an d use clean to silently discard the buffered contents.
*/
ob_start();

switch ($image_type)
{
case 1: imagegif($tmp); break;
case 2: imagejpeg($tmp, NULL, 100); break; // best quality
case 3: imagepng($tmp, NULL, 0); break; // no compression
default: echo ''; break;
}

$final_image = ob_get_contents();

ob_end_clean();

return $final_image;
};


echo "\n\n==========================================================================\n\n";
harvest("http://nnm.ru/blogs/malecat/k_130-letiyu_i_v_stalina/");
echo "\n\n==========================================================================\n\n";

?>

-----
Всё, что есть хорошего в жизни - либо незаконно, либо аморально, либо ведёт к ожирению...

Ответ отправил: Волков Алексей aka Lupo, 5-й класс
Ответ отправлен: 23.12.2009, 17:51

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 258076 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.12 от 30.11.2009

    В избранное