- Регистрация
- 04.04.2015
- Сообщения
- 3 835
- Благодарностей
- 3 552
- Баллы
- 113
Фотостоки – это отличный источник качественных изображений по Вашим запросам. Поиск по ключевым словам на стоках дает куда более приближенный к реальности (к запросу) результат, нежели поиск в Яндекс или Google картинках, за счет обильного количества описательных меток и иного подхода к публикации изображений – все-таки это специализированное место, упор идет на качество.
Средняя стоимость одного изображения колеблется в районе 0.5$. По текущему курсу ЦБ это 33.4 рубля.
Рассмотрим Shutterstock.
Возьмем за основу тариф базовый, 350 изображений в месяц – 199$.
Итого с нас возьмут 0.56$ за одну пикчу.
Люди ежечасно покупают изображения и публикуют их в интернете, так почему бы нам этим и не воспользоваться? Риторический вопрос.
Итак, что же нам потребуется для того, чтобы стрясти со стоков немного халявы:
1. Парсинг миниатюр;
2. Поиск по изображению;
3. Получение ссылки на оригинал без водяных знаков в случае успеха.
Заходим на shutterstock.com и вбиваем в поисковую строку наш запрос, пусть это будет couple (пара). На выходе у нас будет ссылка:
Где {-Variable.searchImage-} наш поисковый запрос.
Отлично, у нас 1 492 807 результатов.
Теперь необходимо получить прямые ссылки на миниатюры, размер которых колеблется в районе 400px по ширине. Опытным путем определяем, что все стоковые изображения загружены на поддомен thumb*.shutterstock.com. Готовим регулярку:
Складываем все это добро в список и при необходимости переходим на следующую страницу и повторяем операцию. Чтобы нам не уйти в бесконечный цикл, установим максимум, за который будет отвечать переменая parsing_img_count во входных настройках.
Добавим немного обработок, проверок, любви и 1 из 2 логических блоков готов.
Первая часть работает на GET запросах, а вот 2-ой этап, к сожалению, пришлось реализовать на браузере т.к. иначе мне просто не хватило бы времени для завершения статьи в рамках конкурса, может быть чуть позже выложу обновленную версию, работающую без использования браузера.
Собрали тестовый список на 100 изображений.
Теперь необходимо его прочекать. Отправляемся в Google, переходим в раздел «Картинки», далее щелкаем по иконке фотоаппарата, которая отвечает за функционал поиска по картинке и указываем ссылку на изображение из списка.
Как только мы совершим запрос, нас будет интересовать самый первый блок, в частности ссылка, указывающая на размер изображения «Большие».
Если нам встречается нечто подобное этому:
Или сообщение о том, что ничего не найдено – проходим мимо, это не наш клиент!
А вот пример ниже нам подходит идеально:
Переходим по ссылке «Большие» и забираем самое первое изображение. Можно сделать алгоритм по-хитрее, но для примера сойдет и так Чтобы получить полный URL на изображение, необходимо было нажать на кнопку «Открыть в полном размере», но она оказалась «геморойной» по части единственно-определяющего её признака, поэтому я просто вытащил его из кода страницы регуляркой:
Поздравляю с экономией! Кладем сие добро в список и продолжаем гонять сей процесс в цикле, пока лист не опустеет.
За несколько минут работы на 1IP с минимальными таймаутами 1-2 секунды было найдено 23 изображения из 100 возможных. Это 23%.
А наша экономия составила 11.5$.
Для больших объемов нужно будет подкрутить таймауты, анти-каптчу и прокси, иначе Google нас завалит проверками.
У нас на выходе получился файл good.txt со ссылками на найденные оригиналы изображений без водяных знаков фотостока. Теперь необходимо выбрать подходящие и скачать, но не щелкать же так каждую ссылку – р-у-у-у-у-у-у-у-у-у-тина.
Я предлагаю решить это 2 способами:
Всё это мы будем делать на основе второго мини-шаблона, а в конце статьи будет так же прикреплен шаблон «PicMonsterDownload», в котором всё это будет объединено.
Вариант первый: создаем галерею.
Недолго думая, я остановился на варианте с HTML страничкой и выгрузки ссылок в <img> теги.
Но опять же есть момент, что выставить их плотными рядами будет проблематично в силу того, что они имеют разное разрешение и поэтому всё будет съезжать. Присвоить всем <img> объектам одинаковый width и height мы тоже не можем, иначе некоторые фотографии будут сплющены.
Благо нам не придется ломать голову или изобретать велосипед, ведь есть JS плагин под названием Isotope (isotope.metafizzy.co), который способен фильтровать и сортировать слои волшебным образом, например, так:
То, что нам нужно!
Так-с, знаете, верстать мне сейчас тоже лень. Нужен готовый вариант, который мы немного отредактируем под свои нужды. Где же его найти? Верно, Demo. Заходим в Demos -> Images (на сайте разработчика) и перед нами красота:
Нужно всего лишь убрать левый сайдбар, да текст сверху. Поехали. Сохраняем страницу и включаем режим «верстальщика», если в Вашей черепной коробке такого функционала нет – не переживайте, готовое решение будет в конце статьи, в виде шаблона
Итак, что мы имеем: набор ссылок и слои <div class="photo"><img src="ССЫЛКА” /></div>, которые делают «красиво». Что ж, нам нужно регулярочка!
Отправляем все содержимое файла good.txt в переменную и обрабатываем Regex заменой.
Что искать:
На что заменить:
Сохраняем в переменную OUTPUT.
Теперь все это дело, нужно встроить в нашу страницу и сохранить.
Сохранять будем в файл imagelist_%дата%.html
Но так как у меня не работает {-TimeNow.Date[Format]-} т.к. установлена старая версия ZP, я воспользуюсь C# кодом и сохраню в переменную time:
Откроем полученный HTMLфайл:
Ляпота
Для того, чтобы сохранить изображение на компьютер достаточно сделать 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
Жмем правой кнопкой мыши на «Мой компьютер» -> Свойства -> Дополнительные параметры системы -> Дополнительно. И в этом окошке мы кликаем по кнопке «Переменные среды».
В открывшемся окне выбираем PATHи кликаем на «Изменить».
В строке «Значение переменной» в самом конце ставим «;» (без кавычек) и прописываем путь к утилите wget. У меня это выглядит так:
Подтверждаем свои действия, нажатием кнопки «ОК».
Возвращаемся в ProjectMaker и напишем код для C# кубика, который будем взаимодействовать с утилитой wget:
В переменной command пишем:
Так же доступен альтернативный вариант через Свой код -> Запуск программы.
Исполняемый файл: C:\Windows\System32\cmd.exe
Параметры запуска: /c cd {-Project.Directory-} && wget -P img -i good.txt
Время закачки зависит от скорости Вашего соединения и объема данных.
О шаблонах:
PicMonster - шаблон для парсинга оригинальных стоковых изображений без водяных знаков.
PicDownload - шаблон для скачивания изображений и создания галереи.
PicMonsterDownload v1.1- обновленный шаблон, который включает в себя все вышеперечисленные функции.
Средняя стоимость одного изображения колеблется в районе 0.5$. По текущему курсу ЦБ это 33.4 рубля.
Рассмотрим Shutterstock.
Возьмем за основу тариф базовый, 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=
Отлично, у нас 1 492 807 результатов.
Теперь необходимо получить прямые ссылки на миниатюры, размер которых колеблется в районе 400px по ширине. Опытным путем определяем, что все стоковые изображения загружены на поддомен thumb*.shutterstock.com. Готовим регулярку:
Код:
(?<=img\ src=")http://thumb[^"]+(?="[^>]+)
Добавим немного обработок, проверок, любви и 1 из 2 логических блоков готов.
Первая часть работает на GET запросах, а вот 2-ой этап, к сожалению, пришлось реализовать на браузере т.к. иначе мне просто не хватило бы времени для завершения статьи в рамках конкурса, может быть чуть позже выложу обновленную версию, работающую без использования браузера.
Собрали тестовый список на 100 изображений.
Теперь необходимо его прочекать. Отправляемся в Google, переходим в раздел «Картинки», далее щелкаем по иконке фотоаппарата, которая отвечает за функционал поиска по картинке и указываем ссылку на изображение из списка.
Как только мы совершим запрос, нас будет интересовать самый первый блок, в частности ссылка, указывающая на размер изображения «Большие».
Если нам встречается нечто подобное этому:
Или сообщение о том, что ничего не найдено – проходим мимо, это не наш клиент!
А вот пример ниже нам подходит идеально:
Переходим по ссылке «Большие» и забираем самое первое изображение. Можно сделать алгоритм по-хитрее, но для примера сойдет и так Чтобы получить полный URL на изображение, необходимо было нажать на кнопку «Открыть в полном размере», но она оказалась «геморойной» по части единственно-определяющего её признака, поэтому я просто вытащил его из кода страницы регуляркой:
Код:
(?<=ou":")[^"]+
За несколько минут работы на 1IP с минимальными таймаутами 1-2 секунды было найдено 23 изображения из 100 возможных. Это 23%.
А наша экономия составила 11.5$.
Для больших объемов нужно будет подкрутить таймауты, анти-каптчу и прокси, иначе Google нас завалит проверками.
У нас на выходе получился файл good.txt со ссылками на найденные оригиналы изображений без водяных знаков фотостока. Теперь необходимо выбрать подходящие и скачать, но не щелкать же так каждую ссылку – р-у-у-у-у-у-у-у-у-у-тина.
Я предлагаю решить это 2 способами:
- Создать галерею, где мы сможем визуально оценить сразу весь материал и сохранить подходящие варианты.
- Скачать всё сразу.
Всё это мы будем делать на основе второго мини-шаблона, а в конце статьи будет так же прикреплен шаблон «PicMonsterDownload», в котором всё это будет объединено.
Вариант первый: создаем галерею.
Недолго думая, я остановился на варианте с HTML страничкой и выгрузки ссылок в <img> теги.
Но опять же есть момент, что выставить их плотными рядами будет проблематично в силу того, что они имеют разное разрешение и поэтому всё будет съезжать. Присвоить всем <img> объектам одинаковый width и height мы тоже не можем, иначе некоторые фотографии будут сплющены.
Благо нам не придется ломать голову или изобретать велосипед, ведь есть JS плагин под названием Isotope (isotope.metafizzy.co), который способен фильтровать и сортировать слои волшебным образом, например, так:
То, что нам нужно!
Так-с, знаете, верстать мне сейчас тоже лень. Нужен готовый вариант, который мы немного отредактируем под свои нужды. Где же его найти? Верно, Demo. Заходим в Demos -> Images (на сайте разработчика) и перед нами красота:
Нужно всего лишь убрать левый сайдбар, да текст сверху. Поехали. Сохраняем страницу и включаем режим «верстальщика», если в Вашей черепной коробке такого функционала нет – не переживайте, готовое решение будет в конце статьи, в виде шаблона
Итак, что мы имеем: набор ссылок и слои <div class="photo"><img src="ССЫЛКА” /></div>, которые делают «красиво». Что ж, нам нужно регулярочка!
Отправляем все содержимое файла good.txt в переменную и обрабатываем Regex заменой.
Что искать:
Код:
(https?://[^\s]+)
Код:
<div class="photo"><img src="$1" /></div>
Теперь все это дело, нужно встроить в нашу страницу и сохранить.
Сохранять будем в файл imagelist_%дата%.html
Но так как у меня не работает {-TimeNow.Date[Format]-} т.к. установлена старая версия ZP, я воспользуюсь C# кодом и сохраню в переменную time:
Код:
return DateTime.Now.ToString("MM.dd.yyyy hh:mm:ss");
Откроем полученный HTMLфайл:
Ляпота
Для того, чтобы сохранить изображение на компьютер достаточно сделать 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
Жмем правой кнопкой мыши на «Мой компьютер» -> Свойства -> Дополнительные параметры системы -> Дополнительно. И в этом окошке мы кликаем по кнопке «Переменные среды».
В открывшемся окне выбираем PATHи кликаем на «Изменить».
В строке «Значение переменной» в самом конце ставим «;» (без кавычек) и прописываем путь к утилите wget. У меня это выглядит так:
Подтверждаем свои действия, нажатием кнопки «ОК».
Возвращаемся в 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;
Код:
wget -P img -i good.txt
Исполняемый файл: C:\Windows\System32\cmd.exe
Параметры запуска: /c cd {-Project.Directory-} && wget -P img -i good.txt
Время закачки зависит от скорости Вашего соединения и объема данных.
О шаблонах:
PicMonster - шаблон для парсинга оригинальных стоковых изображений без водяных знаков.
PicDownload - шаблон для скачивания изображений и создания галереи.
PicMonsterDownload v1.1- обновленный шаблон, который включает в себя все вышеперечисленные функции.
- v.1.1 Добавлена проверка стоп-сайтов.
Благодарю за внимание!
- Тема статьи
- Другое
- Номер конкурса статей
- Пятый конкурс статей
Вложения
-
76,2 КБ Просмотры: 736
-
33,3 КБ Просмотры: 640
-
88,6 КБ Просмотры: 775
Для запуска проектов требуется программа ZennoPoster или ZennoDroid.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...
Для того чтобы запустить шаблон, откройте нужную программу. Нажмите кнопку «Добавить», и выберите файл проекта, который хотите запустить.
Подробнее о том, где и как выполняется проект.
Последнее редактирование: