PicMonster – качаем изображения с фотостоков бесплатно

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 542
Баллы
113
Фотостоки – это отличный источник качественных изображений по Вашим запросам. Поиск по ключевым словам на стоках дает куда более приближенный к реальности (к запросу) результат, нежели поиск в Яндекс или Google картинках, за счет обильного количества описательных меток и иного подхода к публикации изображений – все-таки это специализированное место, упор идет на качество.

Средняя стоимость одного изображения колеблется в районе 0.5$. По текущему курсу ЦБ это 33.4 рубля.

Рассмотрим Shutterstock.
Shutterstock_2012_logo.png


Возьмем за основу тариф базовый, 350 изображений в месяц – 199$.
Итого с нас возьмут 0.56$ за одну пикчу.

Люди ежечасно покупают изображения и публикуют их в интернете, так почему бы нам этим и не воспользоваться? :-) Риторический вопрос.

Итак, что же нам потребуется для того, чтобы стрясти со стоков немного халявы:
1. Парсинг миниатюр;
2. Поиск по изображению;
3. Получение ссылки на оригинал без водяных знаков в случае успеха.

Заходим на shutterstock.com и вбиваем в поисковую строку наш запрос, пусть это будет couple (пара). На выходе у нас будет ссылка:

Код:
http://www.shutterstock.com/cat.mhtml?autocomplete_id=&language=ru&lang=ru&search_source=&safesearch=1&version=llv1&searchterm={-Variable.searchImage-}&media_type=images&media_type2=images&searchtermx=&photographer_name=&people_gender=&people_age=&people_ethnicity=&people_number=&color=
Где {-Variable.searchImage-} наш поисковый запрос.
2016-05-20_18-08-13.png


Отлично, у нас 1 492 807 результатов.

Теперь необходимо получить прямые ссылки на миниатюры, размер которых колеблется в районе 400px по ширине. Опытным путем определяем, что все стоковые изображения загружены на поддомен thumb*.shutterstock.com. Готовим регулярку:
Код:
(?<=img\ src=")http://thumb[^"]+(?="[^>]+)
Складываем все это добро в список и при необходимости переходим на следующую страницу и повторяем операцию. Чтобы нам не уйти в бесконечный цикл, установим максимум, за который будет отвечать переменая parsing_img_count во входных настройках.

Добавим немного обработок, проверок, любви и 1 из 2 логических блоков готов.
2016-05-20_18-18-33.png


Первая часть работает на GET запросах, а вот 2-ой этап, к сожалению, пришлось реализовать на браузере т.к. иначе мне просто не хватило бы времени для завершения статьи в рамках конкурса, может быть чуть позже выложу обновленную версию, работающую без использования браузера.

Собрали тестовый список на 100 изображений.

Теперь необходимо его прочекать. Отправляемся в Google, переходим в раздел «Картинки», далее щелкаем по иконке фотоаппарата, которая отвечает за функционал поиска по картинке и указываем ссылку на изображение из списка.
2016-05-20_18-23-29.png


Как только мы совершим запрос, нас будет интересовать самый первый блок, в частности ссылка, указывающая на размер изображения «Большие».

Если нам встречается нечто подобное этому:
2016-05-20_18-27-11.png


Или сообщение о том, что ничего не найдено – проходим мимо, это не наш клиент!

А вот пример ниже нам подходит идеально:
2016-05-20_18-39-17.png


Переходим по ссылке «Большие» и забираем самое первое изображение. Можно сделать алгоритм по-хитрее, но для примера сойдет и так :-) Чтобы получить полный URL на изображение, необходимо было нажать на кнопку «Открыть в полном размере», но она оказалась «геморойной» по части единственно-определяющего её признака, поэтому я просто вытащил его из кода страницы регуляркой:

Код:
(?<=ou":")[^"]+
Поздравляю с экономией! :-) Кладем сие добро в список и продолжаем гонять сей процесс в цикле, пока лист не опустеет.
2016-05-20_08-11-45.png


За несколько минут работы на 1IP с минимальными таймаутами 1-2 секунды было найдено 23 изображения из 100 возможных. Это 23%.
2016-05-21_20-25-51.png


А наша экономия составила 11.5$.

Для больших объемов нужно будет подкрутить таймауты, анти-каптчу и прокси, иначе Google нас завалит проверками.

У нас на выходе получился файл good.txt со ссылками на найденные оригиналы изображений без водяных знаков фотостока. Теперь необходимо выбрать подходящие и скачать, но не щелкать же так каждую ссылку – р-у-у-у-у-у-у-у-у-у-тина.

Я предлагаю решить это 2 способами:
  1. Создать галерею, где мы сможем визуально оценить сразу весь материал и сохранить подходящие варианты.
  2. Скачать всё сразу.

Всё это мы будем делать на основе второго мини-шаблона, а в конце статьи будет так же прикреплен шаблон «PicMonsterDownload», в котором всё это будет объединено.

Вариант первый: создаем галерею.
Недолго думая, я остановился на варианте с HTML страничкой и выгрузки ссылок в <img> теги.

Но опять же есть момент, что выставить их плотными рядами будет проблематично в силу того, что они имеют разное разрешение и поэтому всё будет съезжать. Присвоить всем <img> объектам одинаковый width и height мы тоже не можем, иначе некоторые фотографии будут сплющены.
2016-05-21_13-34-58.png

Благо нам не придется ломать голову или изобретать велосипед, ведь есть JS плагин под названием Isotope (isotope.metafizzy.co), который способен фильтровать и сортировать слои волшебным образом, например, так:
2016-05-21_13-31-02.png

То, что нам нужно!

Так-с, знаете, верстать мне сейчас тоже лень. Нужен готовый вариант, который мы немного отредактируем под свои нужды. Где же его найти? Верно, Demo. Заходим в Demos -> Images (на сайте разработчика) и перед нами красота:
2016-05-21_13-42-40.png

Нужно всего лишь убрать левый сайдбар, да текст сверху. Поехали. Сохраняем страницу и включаем режим «верстальщика», если в Вашей черепной коробке такого функционала нет – не переживайте, готовое решение будет в конце статьи, в виде шаблона :-)

Итак, что мы имеем: набор ссылок и слои <div class="photo"><img src="ССЫЛКА” /></div>, которые делают «красиво». Что ж, нам нужно регулярочка!

Отправляем все содержимое файла good.txt в переменную и обрабатываем Regex заменой.

Что искать:
Код:
(https?://[^\s]+)
На что заменить:
Код:
<div class="photo"><img src="$1" /></div>
Сохраняем в переменную OUTPUT.
Теперь все это дело, нужно встроить в нашу страницу и сохранить.
Сохранять будем в файл imagelist_%дата%.html

Но так как у меня не работает {-TimeNow.Date[Format]-} т.к. установлена старая версия ZP, я воспользуюсь C# кодом и сохраню в переменную time:
Код:
return DateTime.Now.ToString("MM.dd.yyyy hh:mm:ss");
2016-05-21_14-22-50.png

Откроем полученный HTMLфайл:
2016-05-21_16-07-37.png

Ляпота :-)

Для того, чтобы сохранить изображение на компьютер достаточно сделать 2 простых телодвижения: правый клик мыши -> сохранить картинку как.

Вариант второй: Качаем всё сразу!
Воспользуемся потрясающей консольной утилитой Wget для загрузки файлов по сети. Поддерживает протоколы HTTP, FTP и HTTPS, а также работу через HTTP прокси-сервер. Если в процессе работы сетевое соединение оборвется, утилита возобновит работу с того места, где она была прервана – это одно из преимуществ. Так же поддерживает закачку по списку в фоновом режиме – супер, то что нам нужно.

Скачать: http://gnuwin32.sourceforge.net/packages/wget.htm Вам нужен «Complete package, except sources»

Я очень скудно описал возможности этой утилиты, но уверяю Вас их огромное количетво. С мануалом можете ознакомиться здесь: http://www.opennet.ru/man.shtml?topic=wget&category=1 или http://www.gnu.org/software/wget/manual/wget.html

Думаю, что ни у кого не возникнет трудностей со скачиванием дистрибутива и прохождением мастера установки.

Далее нам нужно добавить путь Wget’a к системному пути, да бы мы смогли вызвать из командной строки без указания пути к ней. Копируем путь, где установлена программа, у меня это: C:\ProgramFiles (x86)\GnuWin32\bin

Жмем правой кнопкой мыши на «Мой компьютер» -> Свойства -> Дополнительные параметры системы -> Дополнительно. И в этом окошке мы кликаем по кнопке «Переменные среды».
2016-05-21_18-36-36.png

В открывшемся окне выбираем PATHи кликаем на «Изменить».
2016-05-21_18-38-28.png

В строке «Значение переменной» в самом конце ставим «;» (без кавычек) и прописываем путь к утилите wget. У меня это выглядит так:
2016-05-21_18-42-40.png

Подтверждаем свои действия, нажатием кнопки «ОК».

Возвращаемся в ProjectMaker и напишем код для C# кубика, который будем взаимодействовать с утилитой wget:
Код:
var process = new System.Diagnostics.Process {
    StartInfo = new System.Diagnostics.ProcessStartInfo {
     UseShellExecute = false,
     //CreateNoWindow = true,
     RedirectStandardError = true,
     RedirectStandardInput = true,
     RedirectStandardOutput = true,
     FileName = "cmd.exe",
     WorkingDirectory = project.Directory,
     Arguments = @"/c "+project.Variables["command"].Value
     }
};
process.Start();
string output = process.StandardOutput.ReadToEnd();
process.WaitForExit();
process.Close();
process.Dispose();
return output;
В переменной command пишем:
Код:
wget -P img -i good.txt
Так же доступен альтернативный вариант через Свой код -> Запуск программы.
2016-05-21_19-32-00.png

Исполняемый файл: C:\Windows\System32\cmd.exe
Параметры запуска: /c cd {-Project.Directory-} && wget -P img -i good.txt

Время закачки зависит от скорости Вашего соединения и объема данных.

О шаблонах:
PicMonster - шаблон для парсинга оригинальных стоковых изображений без водяных знаков.
PicDownload - шаблон для скачивания изображений и создания галереи.
PicMonsterDownload v1.1- обновленный шаблон, который включает в себя все вышеперечисленные функции.
  • v.1.1 Добавлена проверка стоп-сайтов.
Благодарю за внимание!
 
Тема статьи
Другое
Номер конкурса статей
Пятый конкурс статей

Вложения

Для запуска проектов требуется программа ZennoPoster или ZennoDroid.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...

Для того чтобы запустить шаблон, откройте нужную программу. Нажмите кнопку «Добавить», и выберите файл проекта, который хотите запустить.
Подробнее о том, где и как выполняется проект.

Последнее редактирование:

seoBB

Client
Регистрация
07.09.2010
Сообщения
130
Благодарностей
20
Баллы
18
Короче, топик про то, как воровать чужой труд.
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 542
Баллы
113
Короче, топик про то, как воровать чужой труд.
Это смотря из чего исходить, из фактов или моральных соображений.
Фактически фотоматериал находится в свободном доступе, скачать - не своровать, мы же не присваиваем авторство.
Если чисто по человечески, отчасти соглашусь, что тема немного серовата, но цель статьи сугубо образовательный - показать как ZP может взаимодействовать с другими интересными технологиями.
 
  • Спасибо
Реакции: Clover69 и masterLomaster

MasterX

Client
Регистрация
11.12.2015
Сообщения
89
Благодарностей
19
Баллы
8
Отличная статья спасибо. Картинки постоянно требуются.
 
  • Спасибо
Реакции: ibred

kuppyc

Client
Регистрация
13.06.2015
Сообщения
27
Благодарностей
1
Баллы
3
Спасибо за статью!
Может у вас завалялся шаблон на поиск одной картинки ? по номеру изображения )
Не хватает только сверки разрешения с тем, что мы могли бы купить на сайте )
 
  • Спасибо
Реакции: ibred

deninsto

Client
Регистрация
21.09.2015
Сообщения
25
Благодарностей
7
Баллы
3
Короче, топик про то, как воровать чужой труд.
имхо большинство zennoposter используют для двух функций:
  1. Постинг
  2. Парсинг
Так что наверное 99% владельцев zennoposter'a "воруют" чужой труд. Мне больше по душе используют цифровую информацию в своих целях. Вообще я противник копирайта и мне нравится "пиратский" подход к распространению информации.
Спасибо. Интересное решение
Полностью поддерживаю. Нестандартный подход к решению конкретной задачи.
 
  • Спасибо
Реакции: ibred

deninsto

Client
Регистрация
21.09.2015
Сообщения
25
Благодарностей
7
Баллы
3
@ibred можете добавить внутрь С# кода для shutterstock сортировку по количеству купленных(или две сортировки: новые и купленные), тогда вероятность нахождения больших изображений выше - и "нагрузка на карман " (прокси капчи) меньше. спс
 
  • Спасибо
Реакции: pix и Konrod_m

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 542
Баллы
113
Отличная статья спасибо. Картинки постоянно требуются.
Нестандартный подход к решению конкретной задачи.
Спасибо. Интересное решение
Благодарю!
Спасибо за статью!
Может у вас завалялся шаблон на поиск одной картинки ? по номеру изображения )
Не хватает только сверки разрешения с тем, что мы могли бы купить на сайте )
Спасибо за спасибо :-)
Такого к сожалению нету, но для одной картинки можно сделать и руками или речь идет все-таки о массовой обработке по номерам?
Разрешение впринципе можно прикрутить, возможно, добавлю в шаблон и перезалью тогда.
@ibred можете добавить внутрь С# кода для shutterstock сортировку по количеству купленных(или две сортировки: новые и купленные), тогда вероятность нахождения больших изображений выше - и "нагрузка на карман " (прокси капчи) меньше. спс
Не нашел на shutterstock'e фильтр по количеству купленных.
Там только новое, популярное (по-умолчанию), релевантное и неизвестное. Ткните пальцем, пожалуйста :-)
 

AloneSlamer

Client
Регистрация
29.01.2013
Сообщения
1 404
Благодарностей
362
Баллы
83

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с AloneSlamer какие-либо сделки.

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 542
Баллы
113

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 542
Баллы
113
Так-с, немного обновил статью.
Дополнение начинается со слов: "У нас на выходе получился файл good.txt..."
И ещё чуть позже (в течение дня) добавлю второе дополнение, а так же обновлю шаблон.
 

AloneSlamer

Client
Регистрация
29.01.2013
Сообщения
1 404
Благодарностей
362
Баллы
83

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с AloneSlamer какие-либо сделки.

16 результатов - не густо :-)
Учитывая, что речь шла о точечном поиске тематических изображений - торрент не подходит.
И опять же соль статьи была в другом, о чем уже писал в 3-м посте.
Там есть полная база картинок без ватермарка
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 542
Баллы
113
Там есть полная база картинок без ватермарка
Дата этих торрентов варьируется с 2009 по 2014 год, и всего один - 2015 г., да и то они весит 2.97Gb. О какой "полной базе" идет речь? Вопрос риторический ибо продолжать этот спор нет желания, в силу того, что он бессмысленный.
 

AloneSlamer

Client
Регистрация
29.01.2013
Сообщения
1 404
Благодарностей
362
Баллы
83

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с AloneSlamer какие-либо сделки.

Дата этих торрентов варьируется с 2009 по 2014 год, и всего один - 2015 г., да и то они весит 2.97Gb. О какой "полной базе" идет речь? Вопрос риторический ибо продолжать этот спор нет желания, в силу того, что он бессмысленный.
Если поищите хорошо то вполне находятся и более новые дампы и не одним стоком едины.
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 542
Баллы
113
Если поищите хорошо то вполне находятся и более новые дампы и не одним стоком едины.
Уважаемый, поймите, что даже если найти свежий дамп стока - это ж сколько он весить будет? :-)
Одна фотография (качественная) весит порядка 5Mb, связка из 25000 фотографий займет 250Gb, а на одном только shutterstock'e 6 миллионов фотографий по запросу sky. В этих дампах может не быть того, что ищете, да и к тому, же они содержат много лишнего (того, что не требуется, а качать придется). И...
и не одним стоком едины.
Впринципе, описанный мной механизм в данной статьей можно применить не только в отношении фотостоков ;-) Поэтому давайте не будем зацикливаться.
 

AloneSlamer

Client
Регистрация
29.01.2013
Сообщения
1 404
Благодарностей
362
Баллы
83

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с AloneSlamer какие-либо сделки.

Уважаемый, поймите, что даже если найти свежий дамп стока - это ж сколько он весить будет? :-)
Одна фотография (качественная) весит порядка 5Mb, связка из 25000 фотографий займет 250Gb, а на одном только shutterstock'e 6 миллионов фотографий по запросу sky. В этих дампах может не быть того, что ищете, да и к тому, же они содержат много лишнего (того, что не требуется, а качать придется). И...

Впринципе, описанный мной механизм в данной статьей можно применить не только в отношении фотостоков ;-) Поэтому давайте не будем зацикливаться.
Вам же не нужно качать все разделы можно вполне скачать 1 нужный вашей тематики.
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 542
Баллы
113
Обновил статью!
Дописал текст для подраздела "Вариант второй: Качаем всё сразу!".
 
  • Спасибо
Реакции: deninsto

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 941
Благодарностей
4 333
Баллы
113
Тема нужная, спасибо. Картинки постоянно требуются и именно тематические, в хорошем качестве и без всяких надписей и водяных знаков.
Так-то обычно через поиск находишь или через порталы типа allday.com, но там приходится качать всю пачку, притом через файлообменники с их ограничениями и рекламой, так что нужно попробовать этот метод.
 
  • Спасибо
Реакции: ibred

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 542
Баллы
113
Итак-с, добавил последние коррективы в статью и загрузил 2 новых шаблона.
Тема нужная, спасибо. Картинки постоянно требуются и именно тематические, в хорошем качестве и без всяких надписей и водяных знаков.
Так-то обычно через поиск находишь или через порталы типа allday.com, но там приходится качать всю пачку, притом через файлообменники с их ограничениями и рекламой, так что нужно попробовать этот метод.
Спасибо за отзыв! :-)
 

deninsto

Client
Регистрация
21.09.2015
Сообщения
25
Благодарностей
7
Баллы
3

kuppyc

Client
Регистрация
13.06.2015
Сообщения
27
Благодарностей
1
Баллы
3
Благодарю!

Спасибо за спасибо :-)
Такого к сожалению нету, но для одной картинки можно сделать и руками или речь идет все-таки о массовой обработке по номерам?
Угу, по номерам было бы вообще идеально ) выбрал нужные и ищешь 1 или 10 фоточек )
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 542
Баллы
113
:bw:сильно удивился не обнаружив такого фильтра... Все-таки ресурс продающий, но наверное им виднее)
Впринципе фильтр популярное косвенно отвечает за продажи.
Так же частенько попадаются фотографии средних размеров ~1000px по ширине, без водяных знаков, но и в тоже время там много мусора - криво кропнутые, обработанные, с наложенным текстом. Если сообразить, как этот хлам отсеять, то можно настроить парсинг и на "Средних" размеров изображения.
Угу, по номерам было бы вообще идеально ) выбрал нужные и ищешь 1 или 10 фоточек )
Реализовать это не сложно, так что сделаю :-)
 
Последнее редактирование:
  • Спасибо
Реакции: Konrod_m

kuppyc

Client
Регистрация
13.06.2015
Сообщения
27
Благодарностей
1
Баллы
3
Впринципе фильтр популярное косвенно отвечает за продажи.
Так же частенько попадаются фотографии средних размеров ~1000px по ширине, без водяных знаков, но и в тоже время там много мусора - криво кропнутые, обработанные, с наложенным текстом. Если сообразить, как этот хлам отсеять, то можно настроить парсинг и на "Средних" размеров изображения.

Реализовать это не сложно, так что сделаю :-)
А шаблон находит всегда максимальное разрешение ( максимально возможное из предлагаемых на стоке ) ?
Нужно как то понимать что тебе нашло ) без использования других программ )
 

AlexGoodWeb

Client
Регистрация
08.04.2015
Сообщения
206
Благодарностей
51
Баллы
28
Как - то у меня ... дважды запускал ... попадаются и с водяными знаками часто ... галерею не захотел создать шаблон
069308f3-e4e8-4148-bf3d-ec3ba25b5ecb
 

alex_shv

Client
Регистрация
31.03.2015
Сообщения
50
Благодарностей
20
Баллы
8
Короче, топик про то, как воровать чужой труд.
"Тихо спиздил и ушёл - называется нашёл!" ©
Интересно, зачем моралистам Zenno?
Прикидывается браузером, а сам - не-е...
Сплошной обман!
 
  • Спасибо
Реакции: in-touch

alex_shv

Client
Регистрация
31.03.2015
Сообщения
50
Благодарностей
20
Баллы
8
@ibred можете добавить внутрь С# кода для shutterstock сортировку по количеству купленных(или две сортировки: новые и купленные), тогда вероятность нахождения больших изображений выше - и "нагрузка на карман " (прокси капчи) меньше. спс
Отличная идея!
 

alex_shv

Client
Регистрация
31.03.2015
Сообщения
50
Благодарностей
20
Баллы
8
Интересная статья! Зачот!
 
  • Спасибо
Реакции: ibred

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 542
Баллы
113
А шаблон находит всегда максимальное разрешение ( максимально возможное из предлагаемых на стоке ) ?
Нужно как то понимать что тебе нашло ) без использования других программ )
Код:
Переходим по ссылке «Большие» и забираем самое первое изображение. Можно сделать алгоритм по-хитрее, но для примера сойдет и так :-)
Интересная статья! Зачот!
Благодарю!

Как - то у меня ... дважды запускал ... попадаются и с водяными знаками часто ... галерею не захотел создать шаблон
069308f3-e4e8-4148-bf3d-ec3ba25b5ecb
Извиняюсь, оказывается коррективы, что я вносил в шаблон не сохранились.
Прикрепил к посту обновленные версии, сам проверил - все работает, проверьте и Вы :-)
* Исправил ошибку с сохранением галереи и стоп-сайтами (теперь с водяными знаками не должны попадаться).

Код:
О шаблонах:
PicMonster - шаблон для парсинга оригинальных стоковых изображений без водяных знаков.
PicDownload - шаблон для скачивания изображений и создания галереи.
PicMonsterDownload v1.1 - обновленный шаблон, который включает в себя все вышеперечисленные функции.
 

Вложения

  • Спасибо
Реакции: AlexGoodWeb и Fantomass

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 542
Баллы
113
Голосование началось.
Кому понравилась данная статья, идея, подход или он извлек что-то полезное для себя после прочтения - проголосуйте за неё, Вам не сложно, а мне приятно :-)

Так же у меня есть вторая статья, если кто-то не видел: Пакетная обработка файлов: Поиск и замена, архивация
 
  • Спасибо
Реакции: AlexGoodWeb и Sz5

Кто просматривает тему: (Всего: 3, Пользователи: 0, Гости: 3)