Как выбрать фильм используя силу компуктера?
TLDR
Данные с сайта с фильмами REZKA, украдены, отфильтрованы, завернуты в телеграм и поданы в виде 3 фильмов в день случайным образом, рейтинг фильмов немножко перевернут, так как между 9.8 и 9.9 разница по сути в 2 раза ссылка на результат https://t.me/django_watch
Часть 0
Не знаю что посмотреть, а рейтинг IMDB уже надоел
Часть 1 – обнаружение проблемы
Вы тоже замечали что кинокритики часто недооценивают фильмы?
К примеру «Святые из Бундока» -
Фильм в основном получил негативные отзывы от критиков, получил 44 балла из 100 на сайте Metacritic
Зато народу нравится, и таких примеров много – тысячи их
Короче есть в интернете такой сайт как HDrezka, годный сайт – много фильмов, своя студия озвучки, куча зеркал и регистрация в аргентинской бухте прямо таки стандарт среди пиратов
При посещении данного сайта, можно заметить один интересный феномен, его рейтинг фильмов очень точный, ибо:
- Его ставят люди которые действительно смотрят это кино
- Сайт резка не настолько популярен (как ротен томатос или метакритик) и крупным студиям и маркетологам и в голову не приходит – накручивать рейтинг на резке
- Сайт достаточно крупный (крупнейший из пиратских) что бы там было огромное количество фильмов (как выяснилось больше 30-ти тысяч)
- И самое главное – по этому рейтингу нельзя отсортировать фильмы что исключает внесение искажений
+ Не возможность отсортировать и самому выбрать действительно годные фильмы – что и стало причиной дальнейших действий
(дракон со златом охраняет рейтинг резки)
Часть 2 Как «стырить» данные?
И так навыки персонажа которому все это пришло в голову:
- Понимание школьной математики
- Программирование на уровне хобби, из языков знает немного знает Python (но без всяких сложных штук типа миксинов/дескрипторов)
Первым делом стал исследование какие технологии «воровства» данных изобрело человечество
После недолгих поисков было обнаружено 3 основные технологии
- Selenium (что то вроде эмулятора браузера)
- BeautifulSoup (легковесная библиотечка для работы с HTML – ты ей текст – а она тебе облегчает поиск всяких штук в этом тексте)
- Scrapy (целый фреймворк, хоть я до сих пор и не понимаю это слово, но это как большая библиотека, настолько большая что когда ней пользуешься ты ей даешь команды – а она создает целый проект с кучей файлов и папок, всякими настройками), по ходу именно такими технологии пользуются в промышленном программировании всякие компании
Короче после недолгих раздумий решил попробовать использовать Scrapy
От Selenium отказался ибо он используется для сложных сайтов типа amazon linkedin, а у нас тут сайт очень простой
Ну и BeautifulSoup решил использовать в случае если какие то куски странички будут слишком неудобно парсить с помощью Scrapy
И так, закатываем рукава, едем в бой:
Часть 3 – учим Scrapy и воруем
Первым делом находим видео с объяснениями как им пользоваться (желательно что бы объяснял Индус – у них каким то магическим образом все влезает в 5 минут видео)
Может тоже кому надо будет – – четко объясняет и быстро
+ на Хинглише :)
И так после нескольких часов получилось накидать несложный код что тырит интересующие нас данные, используя удобный инструмент что нам подсказал человек из Индии
Далее становится интересной секция «комментарии» - ведь некоторые шедевры народного искусства явно стоят того что бы их прочесть
Почитав исходный HTML оказалось что в нем нет комментариев
Хмм, возник вопрос как так, после небольшого чтения мануалов, оказалось что данные иногда находятся не в самом коде страницы, а подгружаются «динамически» используя javascript
Мда, плохи дела подумал я, еще с джаваскриптом разбираться, а судя по мемам, ждет меня увлекательное приключение
Но не так страшен черт как его малюют
Оказалось что нужно лишь отследить куда именно идет запрос на очередную пачку комментариев
Оказалось что у браузеров есть супер крутые инструменты разработчика (сколько же всего придумало человечество)
Там нужно нажать на вкладку Networking, далее отключить кеш что бы запросы заново шли каждый раз а не доставались из памяти браузера
Потом вкладка XHR что расшифровывается как XMLHttpRequest – короче тут отслеживаются все запросы что делает страничка куда то
Далее нажимая на запрос – видим куда он делается :
А перейдя на вкладку Response можно увидеть что ответил сервер
После не долгого ковыряния в полученом ответе оказалось что это JSON специальный такой формат данных для общения между сервером и браузером
Если еще проще то это просто текст, слегка отформатированный что бы его компу было легче читать
Почитав еще оказалось что этим JSONом возращается HTML то есть не сам текст комментариев, а сразу целые странички с древовидной структурой
Чисто с эстетической точки зрения конечно как то странно выглядит, но чисто с практической работает же – да и сервер наверное не сильно грузит, так что все окей
Тут нам и пригодится вторая библиотечка – BeautifulSoup – мы ей скормим HTML достаный из JSON а она нам вернет комментарии
Так и произшло, никаких эксцесов не возникло (что удивительно)
Разве что пришлось почитать немного туториалов как этим всем пользоваться
После небольших настроек, с VPN через Японию, что бы не забанили наш основной IP с которого мы смотрим пиратские фильмы
А так же прикрутки модуля модуля к Scrapy что генерирует фейковые личности (юзер агенты) для каждого запроса
Далее запускаем процесс «воровства» и ждем
72 часа спустя, процесс завершается, мы счастливы!
На выходе получается файл
Если 1 байт это 1 символ – то достаточно много данных
Если человек может читать примерно 1000 символов в минуту, то все это на неделю где то на неделю беспрерывного чтения
Выглядит все это как то так
Часть 4 – присобачиваем интерфейс к этим всем данным
Логичным решением было использовать телеграм, так как он позволяет хранить фото/видео/текст не на локальном компьютере, как пришлось бы делать в случае с сайтом, а в собственном облаке, что очень удобно
+ не нужно покупать доменное имя (адресс сайта), а просто ник в телеге
+ не нужно платить провайдеру что бы он удерживал у меня белый IP – который не менялся бы каждый день, что бы специальная служба DNS (превращает имя сайта в IP и наоборот) работала корректно
+ не надо парится за безопасность (если кого это интересует) ибо перед тем как взломать условно мой бот, нужно сначала взломать телеграм, а это сложно
Имя канала решил выбрать в честь моего любимого персонажа – Джанго освобожденного, который спасал свою любимую из лап злодея
В загашнике валяется Raspberry PI 4
Это такой по сути полноценный компьютер на Linux с 4 Гб оперативки, разве что без вентилятора и не гудит, немножко греется когда что то сложное делает
Пишем небольшой бот, прикручиваем к нему базу данных что бы он как то аккуратно хранил список фильмов что уже запостил, а так же те которые планирует постить, немножко причесываем вывод информации
Охапку дров и бот готов :)
В общем кто дочитал до конца – СПАСИБО!
Хотелось с кем-то поделится!
Вот ссылка на канал, может быть вам тоже понравится, и сможете выбрать что посмотреть в свободное время
А рейтинг критиков... кто блядь вообще смотрит рейтинги критиков?