Спасаем картинки с radikal.ru

Многие уже знают, что скоро фотовидеохостинг навсегда удалит все картинки и закончит своё существование.


Спасаем картинки с radikal.ru

Цитата с сайта:

ВНИМАНИЕ!

10.03.2022 сайт прекращает свою работу.
С указанной даты видео и картинки не будут доступны.
Чтобы не потерять свой контент, сохраните его себе на диск.

На многих сайтах (как и на Хлебопечка.pу) много лет пользователи добавляли свои размещенные на радикале фотографии. Например, у нас их тысячи и тысячи.
Руками всё сохранить нет никакой возможности.

Поэтому «на коленке» состряпал небольшой скрипт, который не даст пропасть всему, что «нажито непосильным трудом».

Пользуйтесь.

<?php

// отключаем остановку выполнения скрипта
set_time_limit(0);

// <здесь стандартное подключение к базе данных через драйвер PDO>

/* 
* body – это поле, в котором есть код (обычно – поле с основным контентом)
* id – это идентификатор записи (в основном он Примари)
* content – это таблица с контентом
* Если много записей в базе – не забываем менять диапазон BETWEEN (здесь – каждые полмиллиона, можете установить свой).
* Т. е. после «первого захода» надо поменять на BETWEEN 500000 AND 1000000 (и так далее).
* Если мало записей – можно вообще обойтись без WHERE
*/

$sth $dbh->prepare("
 SELECT body, id
 FROM content
 WHERE id BETWEEN 1 AND 500000
 ORDER BY id"
);

$sth->execute();

$list $sth->fetchAll(PDO::FETCH_ASSOC);

// цикл

foreach($list as $row) {

 
/* 
* Если используется bbcode – оставляем пока [/img], чтобы не путать с ссылкой (иногда картинка обёрнута ссылкой). Можно и по-другому.
* Если в таблице данные хранятся в html-код, то вместо.jpg\[\/img\] используем.jpg"
* Тогда в цикле вместо замены [/img] на пусто делаем замену.jpg" на.jpg
*/

 
preg_match_all("/http[^\s]*radikal[^\s]*\.jpg\[\/img\]/i"$row['body'], $match);

 foreach(
$match[0] as $link) {

// Убираем [/img] и делаем превью большими
 
$link str_replace(array('[/img]','t.jpg'), array('','.jpg'), $link);

// Создаем переменную с именем файла
 
$name basename($link);

 
$file file_get_contents($link);

// Сохраняем файл в выбранную папку
 
file_put_contents('ПУТЬ_К_ПАПКЕ_СОХРАНЕНИЯ'$name$file);
 }

}

?>

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

<?php

// Это грубая и быстрая замена. По-хорошему, надо поубирать ссылки (если они есть) и прочее. Но это всегда можно сделать потом.
$content preg_replace('/http[^\s]*radikal\.ru\/[^\s]*\/[^\s]*\/([^\s]*\.jpg)\[\/img\]/i''https://site.ru/ПУТЬ_К_ПАПКЕ_СОХРАНЕНИЯ/$1[/img]'$content);
?>

Это глупый скрипт. Правильно – сразу делать замену в базе данных на правильную новую ссылку.
Но в то же самое время – это быстрый, оперативный способ. Остальное всегда можно доделать в спокойной обстановке.

У кого есть сайт и кто пользовался фотохостингом – поспешите, не потеряйте изображения.

Похожие темы


Mams
Шеф, обратите внимание на хостинг Там такая же ситуация с картинками. Пока они не закрываются, но предупреждение уже дали. Новые картинки туда УЖЕ загрузить нельзя. А этим хостингом народ тоже широко пользуется.

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

Шеф
Ольга, благодарю за предупреждение. Тогда тоже скачаю.

 Как Вы понимаете, скрипт универсален – меняем radikal на другой домен и смотрим, как поменять превью на полную картинку. И лучше в отдельную папку скачивать.

Mams
Да, я так и поняла. Хорошо, что можно спасти картинки Все-таки радикал очень много лет использовали.

Еще один хостинг. Не знаю, видели или нет – айфотки отожгли. Вместо всех картинок – экстремистская картинка. Пришлось его вообще заблокировать. Надеюсь, временно.

Шеф
Не знаю, видели или нет
Да, говорил уже об этом. Вы ещё и imageshack заблокируйте.

Mams
Спасибо, пошла закрывать и этого.

Шеф
Чтобы повторно не загружать файлы (на что требуются значительные ресурсы), сделал проверку их наличия в конечной папке.
Надо
$file = file_get_contents($link);

// Сохраняем файл в выбранную папку
file_put_contents('ПУТЬ_К_ПАПКЕ_СОХРАНЕНИЯ'. $name, $file);
заменить на
if (!file_exists('ПОЛНЫЙ_ПУТЬ_К_ПАПКЕ_СОХРАНЕНИЯ'. $name)) {
$file = file_get_contents($link);

// Сохраняем файл в выбранную папку
file_put_contents('ПУТЬ_К_ПАПКЕ_СОХРАНЕНИЯ'. $name, $file);
}

Шеф
Можно запускать несколько shell с разными файлами, в которых разные диапазоны.
У нас сейчас работают шесть скриптов (через командную строку), которые охватывают все сообщения на форуме (от 1 до полмиллиона уже были скачаны):
WHERE id BETWEEN 500000 AND 1000000
WHERE id BETWEEN 1000000 AND 1500000
WHERE id BETWEEN 1500000 AND 2000000
WHERE id BETWEEN 2000000 AND 2500000
WHERE id BETWEEN 2500000 AND 3000000
WHERE id BETWEEN 3000000 AND 4000000

Скорость скачивания при таком распараллеливании сильно увеличилась.

Поторопитесь, час Х уже близко.

Шеф
К вопросу о том, как заблокировать экстремистские фотохостинги. Один из самых простых вариантов – сделать автозамену в файле, отвечающем за вывод контента.

Например, вот так (в случае с bbcode):

$content = preg_replace('/\[img\swidth=[\d]*\sheight=[\d]*\]([^\s]*)(imageshack|ifotki|i-fotki|rimg\.info|piccy\.info)([^\s]*)\[\/img\]/ims', '', $content);Здесь уже вписаны замеченные в экстремизме фотохостинги. И список будет пополняться.

Шеф
Итак, что касается нашего форума.

Всего в сообщениях форума было размещено 159 500 фотографий с фотохостинга .
Из них за эти годы перестали существовать 56 986 картинок (удалением радикал грешил постоянно).
А 102 514 изображения успешно сохранены вышепредставленным скриптом.

Mams
Итак, что касается нашего форума.

Всего в сообщениях форума было размещено 159 500 фотографий с фотохостинга .
Из них за эти годы перестали существовать 56 986 картинок (удалением радикал грешил постоянно).
А 102 514 изображения успешно сохранены вышепредставленным скриптом.

Нам пришлось докупить 50 гигов на хостинге, чтобы все разместить. Я с трудом представляю, сколько места все это занимало в хранилищах радикала. Там было более 800 миллионов фото..

Все, радикал выключился.

Шеф
Отлично, что успели!
Да, если бы мы в своё время не перешли на внутреннюю Галерею, на радикале у нас было бы во много раз больше фото.



Интересное в разделе «Улежненькая дняфочка»

Новое на сайте