парсер

Подписчиков:
8
Постов:
19

Скачивалка картинок с плашками

Короче захотелось мне в связи со всеми этими последними событиями, и тем к чему они могут привести, коечего качнуть с реактора. Чтобы было, на всякий пожарный. Задал вопрос тут http://joyreactor.cc/post/5114496#comment25031878 и получил ответы. Смог воспользоваться одним из них и таки накачал чего хотел. Но пока разбирался с этим делом немного поматерился неудобности обоих способов, и параллельно процессу поковырялся над своим вариантом "на коленках". И вот теперь думаю, что он тоже имеет право на жизнь. Плюсы: удобность и простота. Минусы: плашки на картинках и ненастраевоемость.
В общем вот, представляю вам Joyloader
joyloader.exe - скомпилированный програмусик
joyloader.py - исходный кодик, если вам стремно запускать чужие экзешники (что оправдано), то вот компилируйте сами и пользуйтесь, заодно решается проблема с настраиваемостью, настраивайте.
Кто-то скажет, блин там писят строчек кода, нафик ты это принес? А я отвечу - а вот.
Для примера скрин с рабочей прогой.
Пишите замечания, благодарности, ругательства.
п.с Качает не только посты по тегам, но и просто фендомы, и даже комментарии пользователя, в общем походу все, где есть картинки и постраничность.
Выкатил новую версию с небольшими изменениями:
https://github.com/mnocard/reactor-crwUI/releases/tag/v.0.1.1

____________________________________________________________
r-crw-ui - это программа оболочка для запуска исполняемого файла через командную строку с какими-нибудь атрибутами. Изначально планировалась как оболочка для реакторовского парсера (https://github.com/reactor-joy/reactor-crw/releases), но сейчас с помощью этой оболочки можно запускать любые программы.

Краткое руководство:
1) По кнопке с иконкой папки выбираете исполняемый файл, который хотите запустить из командной строки;
2) По кнопке с иконкой плюса добавляете строку ключ-значение. Значение всегда вводится в кавычках. Значение вводить необязательно, можно использовать только ключ;
3) Справа от слова "Разделитель" можно ввести символ или строку разделитель, который будет подставляться между каждой парой ключ-значение;
4) По кнопке с иконкой стрелка вниз можно загрузить список атрибутов из файла в формате json;
5) По кнопке с иконкой стрелка вверх можно сохранить список атрибутов в файл формата json для дальнейшего использования в будущем;
6) По кнопке с иконкой стрелка вправо запускаете командную строку с атрибутами, указанными в строке слева.
7) Строка редактируемая и запуск происходит именно с неё, а не из списка атрибутов. Это значит, что можно ручками исправить то, что не нравится, но в списке атрибутов эти изменения не сохранятся, а значит сохранить в файл из не удастся.

____________________________________________________________
Решил больше не выкладывать cut-версии, так как они особой популярностью не пользуются. Все будущие версии буду full.

Изменения:
- Добавлен символ-разделитель между ключом и значением. По умолчанию разделитель - пробел. Можно использовать не только символ, но и любую строку, которая будет подставляться в каждую пару между ключом и значением.
- При сохранении конфигурационного файла, теперь сохраняются и настройки программы: путь к исполняемому файлу и символ-разделитель.
- При запуске программы она ищет в текущей папке последний сохраненный конфигурационный файл и автоматически загружает его. Если в файле отсутствует значение для параметра "Путь к исполняемому файлу" или полностью отсутствует конфигурационный файл , но при этом в папке есть другие исполняемые файлы, то выбирает для запуска первый в алфавитном порядке.

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

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

Парсер меняется и после очередного (да, ненадолго меня хватило) изменения атрибутов мне стало влом клепать новую оболочку.
Теперь я сделал кое-что другое: новая оболочка подходит для запуска командной строки с любыми атрибутами, а значит подойдет для любой версии парсера. И вообще для любой программы, которую необходимо запускать из командной строки с атрибутами.


Для тех кто не знает, но заинтересовался:
1) По кнопке с иконкой папки выбираете исполняемый файл, который хотите запустить из командной строки;
2) По кнопке с иконкой плюса добавляете строку ключ-значение. Значение всегда вводится в кавычках. Значение вводить необязательно, можно использовать только ключ;
3) По кнопке с иконкой стрелка вниз можно загрузить список атрибутов из файла в формате json;
4) По кнопке с иконкой стрелка вверх можно сохранить список атрибутов в файл формата json для дальнейшего использования в будущем;
5) По кнопке с иконкой стрелка вправо запускаете командную строку с атрибутами, указанными в строке слева.
6) Строка редактируемая и запуск происходит именно с неё, а не из списка атрибутов. Это значит, что можно ручками исправить то, что не нравится, но в списке атрибутов эти изменения не сохранятся, а значит сохранить в файл из не удастся.


Изменения в текущей версии: Написано на авалонии, так что по идее, её можно собрать и для какой-нибудь абстрактной убунты, но это в будущем, потому что терминал там запускается явно по другому. В общем, если кому-то сильно надо, то пишите, я ускорюсь.



https://github.com/mnocard/reactor-crwUI/releases



PS: у парсера вышла версия 0.3.0.

reactor-crw v0.1.0

Добрейший вечерочек. Новая версия reactor-crw и в ней уже используется graphql API реактора. Тот самый, на который, с недавних пор, переехала мобильная версия сайта. Ссылка на API.
Выглядит это следующим образом:
На данный момент reactor-crw поддерживает два парсера, HTML и API. Оба доступны в виде подкоманд:
- ./reactor-crw html -p "http://joyreactor.cc/tag/Photo+art" - HTML версия
- ./reactor-crw api -t "Photo Art"  - API версия
Ограничения
Внимательный читатель заметил, что этап получения ссылок происходит дольше самого скачивания файлов. Хотя по идее мы ничего не парсим а сразу получаем нужный результат. Так происходит потому что у реактора довольно жесткие лимиты по запросам на API. Собственно, у меня получилось заблочить себя даже в плейграунде.
Таким образом, каждый новый запрос на API происходит с таймаутом в 2 секунды.
Что позволяет API парсер
На данный момент, только пакетное выкачивание тегов. По умолчания API отдает абсолютно все, что связано с тегом, поэтому, была добавлена поддержка заблокированных тегов и подписок пользователя. 
./reactor-crw api -t "Photo Art" -с "строка с куками"
Это уберет из результата все что у вас заблокировано. Но так же отфильтрует контент, на который нужно явно подписаться, что бы видеть. Куки нужно брать мобильной версии сайта.
Список всех флагов и их описание на странице github.
Изменения в версии 0.0.2
- Была добавлена поддержка socks5 и прокси (работает для HTML и API). Пример:
./reactor-crw api -t "tag name" --socks5 "socks5://127.0.0.1:9050"
- Значительно повысилась скорость обработки файлов. Теги, которые качались по 10-12 минут, сейчас тащатся за 2-3.
Скачать последнюю версию здесь. Если обнаружили ошибку или есть идея для нового функционала - создайте issue.
p.s. да, мы все знаем про Kelly.
Адаптация к парсеру версии 0.0.3.
Добавлено логирование.
Добавлена строка для отображения и редактирования аргументов в реальном времени.
Фикс бага, при котором приложение могло стартовать без указания парсера.

https://github.com/mnocard/reactor-crwUI/releases
Добавлена возможность сохранения настроек в json файл и загрузка из него.
Добавлена иконка приложения.
Иконка предоставлена уважаемым Ray513
Для лучшего понимания контекста см. этот пост 
Вдохновившись парой поддержавших меня анонов и многоуважаемым avpretty, я сделал для его парсера графическую оболочку - https://github.com/mnocard/reactor-crwUI.
Она написана на WPF, поэтому работает только на windows. Скачать можно здесь: https://github.com/mnocard/reactor-crwUI/releases
Для работы оболочки нужен парсер, который вы можете скачать здесь https://github.com/reactor-joy/reactor-crw/releases
Оболочка выполняет единственную функцию - печатает за вас аргументы и передает в запускаемую командную строку. Всё остальное делает сам парсер. Для минимальной работы нужно указать только путь к парсеру и адрес страницы. 
Остальные настройки соответствуют аргументам парсера. Единственное, что я позволил себе - переименовать workers в приоритет загрузки и установить максимальное ограничение в 4 единицы.
Знаю, что внешний вид довольно вырвиглазный, если кого-нибудь будет слишком сильно тошнить, могу включить стандартный вид windows приложений. Если будут предложения по изменению внешнего вида, с радостью выслушаю.
FAQ:
q: Зочем?
q: В чем различия версий cut и full?
a: Full-версия содержит необходимые для запуска приложения элементы .net (по этой же причине такая большая разница в размерах файлов). Есть высокая вероятность, что они уже установлены у вас, поэтому попробуйте сначала cut-версию. Если не взлетит, пробуйте full. Если и full не взлетит, то пишите, что бы я встроил логгер, потом будем разбираться
q: У меня есть предложение.
a: Не держи всё в себе, поделись со мной любым удобным для тебя способом. Лучше публичным.
q: Не парсит!
a: Парсинг зависит только от парсера, представленная программа - лишь оболочка для него. Всего лишь пакетик, в который вы заворачиваете свой хлебушек.
q: Скачай одно, скачай другое... Почему нельзя всё в одном?
a: Есть определенные сложности с тем, чтобы связать приложение на C# и Golang. Как только и если мы с avpretty их преодолеем, так сразу сделаем (наверное) приложение 2 в 1.
PS: У приложения нет иконки. Было бы круто, если бы кто-нибудь нарисовал иконку 50*50 пикселей  в стиле реактора.

reactor-crw v0.0.2

Для лучшего понимания контекста см. пост reactor-crw.
Вдохновившись отзывами, комментариями и замечаниями к первой версии краулера, я постарался исправить почти все упомянутые проблемы и выкатил новый релиз. Далее приведен список наиболее критичных исправлений:
- отслеживание уже скачанных файлов. Теперь при приостановке клиента (по любой причине), имеющиеся файлы не будут перекачиваться заново.
- поддержка парсинга результатов поиска на реакторе. В предыдущей версии нельзя было передать страницу формата http://joyreactor.cc/search?q=games&user=&tags=pc%2C.
-
пофикшен баг при котором нельзя было скачивать теги с одной страницей (без указания флага -o, --single-page).
-  добавлена поддержка 32-битных версий windows.
- обновил readme с более подробными примерами и FAQ.
Большое спасибо всем кто обратил внимание на баги и отписал в комментарии или даже создал issue на странице проекта, а так же всем, кто просто попробовал эту поделку. Если у вас есть идеи/пожелания/замечания - создайте issue.
p.s. ну и тег добавил, что бы его можно было заблочить.
Воспользовавшись избытком свободного времени и неисправимой привычкой лепить велосипеды, решил реализовать удобный, хотя бы для себя, способ выкачивания годноты с реактора. Плюс иметь возможность спасти то, что возможно уже завтра будет потерто копирастами или другими "обеспокоенными".
Я видел несколько схожих решений и они либо не уже поддерживаются, либо являются подключаемыми библиотеками. Какие-то generic решения я не искал (см. пункт про велосипеды).

Что это?

Это CLI crawler, для выкачивания изображений (включая фул), gif, mp4, webm из страницы, которую вы укажите и сохранит все куда скажете. Если crawler найдет на странице пагинацию, то он попытается выкачать каждую страницу. Хотя вы можете указать так не делать.
Ссылка на проект на github.

Как начать?

Скачайте билд и запустите его из командной строки (для windows тоже). Windows может ругаться потому как это хрен пойми чей билд. Мак может ругаться потому что не может проверить поставщика. Линуксу насрать. Выполните .\reactor-crw_0.0.1_Windows_64bit.exe --help (либо ознакомьтесь с доступными флагами на странице github).
Пример запуска на windows:
,парсер,сделал сам,нарисовал сам, сфоткал сам, написал сам, придумал сам, перевел сам,песочница,reactor-crw

Краткий FAQ

В:Какие страницы можно передавать?
О:Любые. Передайте ссылку на тег и будет выкачан весь контент по нему. Или ссылку на закладки. Если передать ссылку на конкретный пост, не забудьте указать флаг -o (--single-page).
В:Почему некоторые изображения не скачались?
О:Если качаете NSFW, то не забудьте указать флагом свои куки (посмотреть куки можно в браузере).
В:Что делает флаг -w (--workers)?
О: Насколько шустро все отработает. Укажите слишком большое значение и реактор вас накажет. Для тега в ~4500 изображений я ставил 3.
В:Ничего не работает/не качает. Какая-то ошибка и все.
О:Текущая версия далека от идеала. Если поделитесь деталями ошибки - буду весьма признателен.
В:Можно ли человеческий UI для всего этого?
О:Можно. Если кто-то умеет в UI, то я только за.
Если остались вопросы, постараюсь ответить в комментариях.
Здесь мы собираем самые интересные картинки, арты, комиксы, мемасики по теме парсер (+19 постов - парсер)