Несколько лет назад мои друзья‑киноманы посоветовали мне зарегистрироваться в Must. Если кратко — это сервис для любителей кино, где можно собрать свою библиотеку фильмов, ставить просмотренным фильмам оценки, оставлять комментарии и все в таком духе. Так вот, все эти годы я успешно пользовался сервисом, библиотека моих фильмов росла, и вопрос «что посмотреть вечером» практически полностью отпал, потому что всегда можно глянуть, что там смотрели твои друзья, а ты еще нет. В общем, жил да не тужил. И этой статьи, вероятно, никогда бы и не было, если бы в какой‑то день я не решил сменить телефон.
Кроме самого телефона, я переходил на другую ОС и мне было лень заморачиваться с переносом приложений с одной платформы на другую, особенно учитывая, что в старом телефоне была куча ненужных мне приложений. «Просто скачаю только то, что мне нужно», — подумал я.
И если во всех приложениях я успешно авторизовался, то Must решил устроить мне очень неприятную подлянку. Изначально регистрировался я по номеру телефона, но вот восстановить доступ к аккаунту используя номер, по каким‑то неизвестным мне причинам, больше нельзя.
На форумах пишут, что разработчики забили на поддержку приложения и часть функций больше не работает. Не берусь судить, но 2 письма, которые я отправил на указанную разработчиками контактную почту в надежде, что мне помогут восстановить доступ, остались без ответа.
Первая моя мысль — бросить пользоваться приложением. Но терять коллекцию из более чем тысячи просмотренных фильмов и сериалов мне было грустно (особенно учитывая, что все друзья продолжали активно пользоваться сервисом), поэтому очень скоро я пришел ко второй мысли.

Нохотелось конечно немного быстрее, чем brick for brick. Поэтому вспомнив, что я все же какой‑никакой программист, я решил, что добавлять все по новой вручную — так себе идея и необходимо придумать, как ускорить процесс.
Оговорюсь сразу, что у Must есть встроенный функционал переноса библиотеки фильмов из Кинопоиска, IMDB и подобных сервисов, но для этого нужно иметь файл с импортом данных из этого стороннего сервиса. Такого у меня не было, да и задача стояла чуть иначе: собрать все фильмы/сериалы вместе с их оценками с одного аккаунта и перенести их в другой внутри одного приложения, а не импортировать из другого.
К счастью когда‑то давно я уже писал парсер, который собирает информацию о просмотренных фильмах с Must для другого моего pet‑проекта, тоже связанного с кино. Но проблема в том, что прошлая реализация проекта только собирала данные и сохраняла в базу (а не добавляла их для нового акка), и работала с помощью Selenium. То есть по сути это был парсер, которые эмулировал действия пользователя в браузере и собирал информацию со страницы просмотренных фильмов. Работало все это медленно и неэффективно — но терпимо, когда тебе нужно спарсить пару страниц. Мне же нужно было собрать всю информацию, в том числе о просмотренных сериалах. А это значит сэмулировать заход на страницу каждого сериала, пройтись по вкладкам всех сезонов и спарсить все это — а это долго.
Иными словами — никаких плюсов, только минусы. Поэтому я подумал воспользоваться запросами напрямую к API, минуя браузер. Документации к своей апишке Must не предоставляет (по крайней мере я не нашел), поэтому пришлось отправлять запросы в браузере и в DevTools смотреть, куда они летят.
Изрядно поковырявшись в запросах Изучив функционал, я и написал код, который автоматизирует весь процесс переноса данных со старого аккаунта на новый.
Итак. Что нам требуется:
-
Зарегистрировать новый аккаунт (с авторизацией НЕ ПО НОМЕРУ ТЕЛЕФОНА, иначе есть шанс потерять и этот акк) и получить для него токен и user_id. Самый простой способ узнать токен — это отправить какой‑нибудь запрос через браузер с вашего нового аккаунта (например, на добавление в «просмотренные» или «посмотрю» какого‑нибудь фильма) и посмотреть нужные нам данные через DevTools.
Кроме токена будет нужен и айдишник — он будет указан в пути отправленного нами запроса. -
Помимо этого потребуется username пользователя (то есть username вашего прошлого аккаунта, откуда нам нужно перенести данные).
ВАЖНО! Чтобы удалось забрать данные вы должны не только знать username вашего аккаунта, но и сам аккаунт должен быть публичным (большинство аккаунтов в Must — публичные, такими они и являются по умолчанию при первичной регистрации). Если вы сделали аккаунт приватным — собрать с него данные, к сожалению, не выйдет 🙁
Если вы не помните Username вашего старого аккаунта, но вы были подписаны на ваших друзей/они на вас. Можно просто попросить кого‑нибудь перейти на ваш акк и посмотреть его. Он находится…

-
Этой информации нам достаточно, чтобы перенести всю библиотеку фильмов/сериалов. Дальше все по классике — клонируем репозиторий, создаем и активируем виртуальное окружение, заполняем файл.env по примеру и пользуемся)
Подробные инструкции, как запустить проект и перенести данные — находятся в Readme репозитория.
Сам проект реализует две функциональности, вам нужна только вторая: парсит данные из разделов «Посмотрю», «Просмотрены» и «Сериалы» и добавляет их в ваш новый аккаунт…
Продублирую сюда описание работы режимов, которые собственно и реализуют весь необходимый функционал:
-
Режим must_want — добавление в новый аккаунт всех фильмов из старого аккаунта из раздела «Посмотрю».
-
Режим must_watched — добавление в новый аккаунт всех фильмов из старого аккаунта из раздела «Просмотрены».
-
Режим must_shows — добавление в новый аккаунт всех фильмов из старого аккаунта из раздела «Сериалы».
Послезапуска кода ваша библиотека фильмов/сериалов вместе с оценками будет полностью перенесена на новый аккаунт. Я намеренно не добавил в функционал переноса комментариев, т. к. мне показалось, что дублировать те же комментарии под новым пользователем — это немного странно.
Вот и вся история о том, как мне удалось не потерять ценные для меня данные и продолжить пользоваться сервисом. Если вдруг вы попали в такую же неприятную ситуацию, что и я — мой небольшой проект поможет вам практически безболезненно (за исключением горечи утраты основного акка) перенести все ваши данные в новый аккаунт.

ссылка на оригинал статьи https://habr.com/ru/articles/900380/
Добавить комментарий