Несколько лет назад мои друзья‑киноманы посоветовали мне зарегистрироваться в 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 — добавление в новый аккаунт всех фильмов из старого аккаунта из раздела «Сериалы».
Послезапуска кода ваша библиотека фильмов/сериалов вместе с оценками будет полностью перенесена на новый аккаунт. Я намеренно не добавил в функционал переноса комментариев, т. к. мне показалось, что дублировать те же комментарии под новым пользователем — это немного странно.
Вот и вся история о том, как мне удалось не потерять ценные для меня данные и продолжить пользоваться сервисом. Если вдруг вы попали в такую же неприятную ситуацию, что и я — мой небольшой проект поможет вам практически безболезненно (за исключением горечи утраты основного акка) перенести все ваши данные в новый аккаунт.
