Недавно решил наконец-то перенести все свои подписки на 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
Там много заметок, которые не подходят для формата статей.
Комментарии (8)
Canep7
02.07.2024 08:57У Гугла с клентоориентированностью совсем беда, они лучше знают что клиенту надо... Такую же задачу решал уже через танцы с бубном... спасибо за полезную информацию, в следующий раз ваш метод буду пробовать.
Есть еще проблема с управлением плейлистами. Крайне скупой сервис, непонятно как скопировать плейлист другому пользователю. Очень неудобное управление плейлистами. Нельзя, к примеру, выделить несколько видео в плейлисте и удалить сразу все или переместить в другой лист. Если есть какие-то программы или плагины, подскажите пожалуйста.
sdnv Автор
02.07.2024 08:57Вот! Сегодня я принялся переносить плейлисты.
По идее, нужно зайти в новый аккаунт, создать новый плейлист с доступом по ссылке, включить возможность добавлять видео в плейлист соавторам, скопировать ссылку для соавторов.
Затем перейти в старый аккаунт, перейти по ссылке соавтора, открыть плейлист который надо перенести и выбрать там пункт "Перенести все в..." и выбрать плейлист нового аккаунта где вы соавтор.
Я делал с ПК все, у меня не заработала ссылка соавтора. На левом аккаунте с телефона ссылка соавтора работает, вероятно надо со старым аккаунтом ссылку соавтора открывать с телефона
sdnv Автор
02.07.2024 08:57Конечно, можно просто со старого аккаунта дать доступ по ссылке и добавить в соавторов новый аккаунт. Но мне хочется абстрагироваться полностью от старого аккаунта.
Были ещё мысли сделать перенос Watch Later и залайканные видео. Может расширю функционал скрипта со временем
PbIXTOP
02.07.2024 08:57А почему не воспользоваться Google takeout для экспорта всех данных?
sdnv Автор
02.07.2024 08:57Вы правы! Метод имеет место быть. Можно выгрузить с помощью него и подписаться ручками.
Также, есть автоматизированный инструмент для импорта из данных google takeout - на первый взгляд принцип действия как у моего скрипта.
https://github.com/bpaczkowski/youtube-takeout-import
Также он умеет импортировать лайки и подписки. Но последний коммит был 7 лет назад, возможно он уже устарел. Алсо, я планировал внедрить такой функционал в своем инструменте
cinme
Можно для русских объяснить - что такое экстеншена?
sdnv Автор
В данном контексте - плагин для браузера