Недавно решил наконец-то перенести все свои подписки на YouTube со старого Google-аккаунта на актуальный.
Но оказалось, что у Гугла такого инструмента нет...
Что делать и какие варианты у нас есть?
Плагины для браузеров
Ручной режим
Самописный скрипт на Python с использованием YouTube API
Плагины для браузеров
Были рассмотрены плагины только для Chrome
YouTube Subscription Exporter & Importer
По своей сути, это обычный парсер. Он откроет youtube.com/feed/channels, прокрутит страницу до самого конца и сделает экспорт всех каналов.
Затем создаст группу вкладок со всеми экспортированными каналами, и по очереди будет подписываться.
Крайне долгое выполнение. Экстеншен смог сделать экспорт, импорт не осилил.
Subscriptions Importer For Youtube
Все тот же парсер, но с лимитом в 50 подписок и платным премиум тарифом до 1000 подписок. Экспорт не работает, импорт также создает группу вкладок, но отваливается по таймауту.
Это два популярных экстеншена с 2.000 и 10.000 пользователей соответственно.
Ни один из них у меня нормально не отработал.
Позволяет моментально сделать экспорт всех оформленных подписок в буфер обмена.
Формат: Имя_Канала https://youtube.com/channel
Можно скопипастить в какой-нибудь файл, подписываться, переходя по ссылке и нажимая на кнопку подписки. Согласитесь, процесс не самый приятный.
Ручной режим
Тапаем хомяка подписки
Нашел статью на Medium (Доступ только через VPN) от 25 декабря 2023 года, где нам предлагают сделать все наши подписки публичными, переключиться на новый аккаунт, перейти на старый канал с публичными подписками и прожать руками подписки на все каналы.
Работа руками нам не подходит. Да и светить своими подписками не всем захочется.
Самописный скрипт на Python с использованием YouTube API
От безысходности и скуки пятничного вечера я решил поизучать, как же это можно реализовать через API. Бегло нагуглил примеры решения, но они либо нерабочие, либо не совсем подходят по функционалу и требуют доработки.
Я хочу залогиниться в старый аккаунт, залогиниться в новый и увидеть оформленные подписки.
Спойлер: все получилось, но есть некоторое "но".
Для работы нам понадобится только настроенный YouTube API v3 и скрипт, который я успел написать - github.com/sdnv0x4d/transfer-yt-subs
Клонируем себе репозиторий, устанавливаем зависимости:
└> git clone https://github.com/sdnv0x4d/transfer-yt-subs.git
└> cd transfer-yt-subs
└> pip3 install -r req.txt
Настройка YouTube API
Логинимся в console.cloud.google.com, создаем проект через
Select a project
в левом верхнем углу.
Задаем любое имя проекта, организацию можно не трогать.
Выбираем проект после его создания через ту же кнопкуSelect a project
Нажимаем на
APIs & Services
с главного экрана.
Переходим на вкладкуLibrary
, в поиске вводимyoutube data api v3
.
Переходим на найденное API и жмемEnable
.
Нас перекинет на страницу управления этого API.
ВыбираемCreate Credentials
в правом верхнем углу:Credential Type: отмечаем
User Data
, прожимаемNext
OAuth Consent Screen: Указываем любое имя приложения, свою почту в поле поддержки и разработчика
Scopes: Жмем кнопку
Add or remove scopes
и отмечаем скоуп.../auth/youtube
OAuth Client ID: Выбираем
Web Application
из выпадающего списка, даем имя нашему клиенту, вAuthorized redirect URIs
указываемhttp://localhost:8080/
иhttp://localhost:8081/
По этим адресам у нас локально будут запускаться окна авторизации в Google-аккаунты для экспорта подписок и импортаYour Credentials: На последнем шаге обязательно скачиваем наши креды через
Download
, складываем скачанный файл в директорию со скриптом и переименовываем его вclient_secret.json
, прожимаемDone
на странице Google Cloud
Переходим на вкладку
OAuth consent screen
, пролистываем доTest Users
и нажимаемAdd Users
, добавляем туда почты аккаунтов между которыми будут переноситься подписки, сохраняем
Процесс переноса подписок
Если у вас ~200 подписок и более - скрипт упадет с ошибкой 403 по причине превышения квоты 10000 запросов в день (1 запрос с подпиской стоит 50 единиц квоты)
Можно запустить этот скрипт повторно когда квоты обновятся или абузить приложения API с разных Google-аккаунтов.
Квоты можно посмотреть на вкладкеEnabled API & Services/Quotas & System Limits
Я переносил 192 подписки и моя квота достигла 9621
Запускаем скрипт -
python3 transfer-yt-subs.py
, открывается окно авторизации в Google-аккаунтВыбираем аккаунт, с которого будем переносить подписки
Гугл оповещает нас о том, что приложение не проверено - жмем
Продолжить
, затем предоставляем права нашему приложению к аккаунту Google нажав еще разПродолжить
Сейчас произошла выгрузка всех имеющихся подписок. Теперь необходимо войти в аккаунт куда будем импортировать подписки
Повторяем шаг 3
При успешном завершении скрипт напишет сколько подписок он оформил - идем проверять, что все подписки перенеслись
Таким образом я перенес в общей сложности 597 подписок между своими аккаунтами. Надеюсь, что и вам поможет такой способ.
Больше я пишу о селфхостинге, системном и сетевом администрировании, а также делюсь своими небольшими инструментами в Telegram-канале - t.me/sdnv_funkhole
Там много заметок, которые не подходят для формата статей.