X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> С удалёного сервера загрузить фотографии
Djadka
сообщение 2011-08-18, 17:16
Сообщение #1
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 463
Регистрация: 2010-10-17

Репутация:   нет  
Всего: нет


При копирование материал с других сайтов копируешь и фотографии, вы не думайте что плагиатом занимаюсь, когда вставляешь в Тину МЦЕ там бывает порядко от 10 и более фоток, если рухнет другой сайт то фоточки которые были на том сайте не будут и показываться и на моём сайте, так вот в чём вопрос может быть кто то встречал скрипт который будет парсить контент скачивать фотки к себе и заменять урлы на уже нашего хостинга?
Перейти в начало страницы
+Цитировать сообщение
Jon
сообщение 2011-08-18, 21:31
Сообщение #2
Любитель
Иконка группы

Группа: Бета-тестеры
Сообщений: 282
Регистрация: 2009-07-12
Из: Москва

Репутация:   нет  
Всего: 0


Хороший вопрос, кстати.
Перейти в начало страницы
+Цитировать сообщение
Djadka
сообщение 2011-08-18, 21:33
Сообщение #3
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 463
Регистрация: 2010-10-17

Репутация:   нет  
Всего: нет


Нашёл решения на днях буду писать парсинг. Осталось только прикрутить к Эли
Перейти в начало страницы
+Цитировать сообщение
KeSSLeR
сообщение 2011-08-19, 5:47
Сообщение #4
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 483
Регистрация: 2010-02-11
Версия системы: RC5

Репутация:   нет  
Всего: нет


Djadka, в паблик выложишь? Вещь полезная на самом деле) Вручную загружать так муууторноо
Перейти в начало страницы
+Цитировать сообщение
Loader
сообщение 2011-08-19, 8:34
Сообщение #5
Профессионал
Иконка группы

Группа: Eleanor user
Сообщений: 1 161
Регистрация: 2010-04-19

Репутация:   нет  
Всего: нет


Сколько копипастеров... :o
Перейти в начало страницы
+Цитировать сообщение
Djadka
сообщение 2011-08-19, 10:19
Сообщение #6
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 463
Регистрация: 2010-10-17

Репутация:   нет  
Всего: нет


Как бы тут дело даже не копи паста, так тут делаю сайт одному человеку у него контент будет на нескольких языках, то есть специально платит переводчиком исходная одна статья а другие переводиться на два языка. А если переносишь контент свой же и у тебя основной сайт есть с которого берёшь новости. Тут дело даже не в копи пасте.

Если сделаю то выложу
Перейти в начало страницы
+Цитировать сообщение
Djadka
сообщение 2011-08-19, 18:45
Сообщение #7
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 463
Регистрация: 2010-10-17

Репутация:   нет  
Всего: нет


Желательно протестировать и по возможности добавить АЯкс ожидаловку, я то не силён в ДжаваСкрипте и пока нет времени разбираться досканально

Топаем \classes\others\class_editor.php
Открываем
Находим примерно 265-268 return $text; и перед ним вставляем $text=$this->DownloadImage($text); выйдет примерно так

$text=$this->DownloadImage($text);
return $text;


Потом добавим в этот класс саму функцию. например на 270 странице вставляем
/*
		Парсим сылки и загружаем картинки если такой нет у нас на хосте
	*/
	public function DownloadImage($text) 
	{
		if (isset($text) && (stristr($text, '<img'))) 
		{
			@set_time_limit(300000);# так как фотки могут на сервер грузиться очень долго
			$this->Mainclass->LoadClass('classes/others/class_uploader.php');
			$pref='ecoauto';#Префикс к фоткам, не обязательно
			$pattern = '/<(img)[^>]*src=([\\"\\\']?)(http[^>]*\.(jpg|gif|png))\2[^>]*>/i';
			preg_match_all($pattern,$text,$images);$i=0;
			foreach ($images[3] as $img) 
			{
				if (!(stristr($img, 'files'))) 
				{	
					$folder=$folderlink='news';#Название папки куда лить
					$folder=$this->Mainclass->Url->DecodeParam($folder);
					$folder=$this->Mainclass->Uploader->DirPath($folder);
					$folder.='/'.'ecoauto-'.basename($img);

					if (!(file_exists($folder))) 
					{	
						#usleep(1000);
						list($width, $height, $type)=getimagesize($img);
					  
						if ($type == 3) 
						{
						  $new_image = imagecreatetruecolor($width, $height);
						  $ref_image = imagecreatefrompng($img);
						  imagecopy($new_image, $ref_image, 0, 0, 0, 0, $width, $height);
						  imagepng($new_image, $folder);
						}
						
						// If JPEG
						if ($type == 2) 
						{
						  $new_image = imagecreatetruecolor($width, $height);
						  $ref_image = imagecreatefromjpeg($img);
						  imagecopy($new_image, $ref_image, 0, 0, 0, 0, $width, $height);
						  imagejpeg($new_image, $folder);
						}

						// if GIF
						if ($type == 1) 
						{
						  $new_image = imagecreate($width, $height);
						  $ref_image = imagecreatefromgif($img);
						  imagecopy($new_image, $ref_image, 0, 0, 0, 0, $width, $height);
						  imagegif($new_image, $folder);
						}
					}

					$text = str_replace($img, ELEANOR_PROTOCOL.$this->Mainclass->domain.$this->Mainclass->site_path.'/'.Mainclass::UPLOADS_DIR.'/'.$folde</span>rlink.'/'.$pref.'-'.basename($img), $text);
				}
			}
		}			
		return $text;
	}


Сообщение отредактировал Djadka - 2011-08-19, 19:56
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2011-08-19, 21:44
Сообщение #8
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


Давайте внесу пару замечаний по коду:

Цитата (Djadka @ 2024-03-29 02:21)
if (isset($text) && (stristr($text, '<img')))

isset - не нужно. Переменная определена. stristr лучше заменить на strpos и !==false, убрать лишние скобки.

Цитата (Djadka @ 2024-03-29 02:21)
$pattern = '/<(img)[^>]*src=([\\"\\\']?)(http[^>]*\.(jpg|gif|png))\2[^>]*>/i';
            preg_match_all($pattern,$text,$images);$i=0;

Лучше избавится от переменной $pattern и записать регулярку сразу в preg_match_all. Кроме того нужно проверить, не вернет ли эта функция 0. Потому что если вернет - в $images ничего не запишется и следующая строка кода вызовет ошибку.

Цитата (Djadka @ 2024-03-29 02:21)
if (!(file_exists($folder)))

Лишние скобки

Цитата (Djadka @ 2024-03-29 02:21)
usleep(1000);

За такое админ сервера может и оторвать может кое-что ;) Не шутите с этим.

Перейти в начало страницы
+Цитировать сообщение
Djadka
сообщение 2011-08-19, 22:01
Сообщение #9
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 463
Регистрация: 2010-10-17

Репутация:   нет  
Всего: нет


Цитата (Alexander @ 2011-08-19, 22:44)
За такое админ сервера может и оторвать может кое-что ;) Не шутите с этим.

Поэтому и закоментил, так как нужды нету.

Сообщение отредактировал Djadka - 2011-08-19, 22:03
Перейти в начало страницы
+Цитировать сообщение

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 
RSS Текстовая версия 0.0329 сек.    11 запросов    GZIP включен    Сейчас: 2024-03-29, 2:21