Перенос подписок YouTube между аккаунтами

d9268b48cca7ec5220bca5d73db7d7a1.JPEG

Недавно решил наконец-то перенести все свои подписки на YouTube со старого Google-аккаунта на актуальный.
Но оказалось, что у Гугла такого инструмента нет…

Что делать и какие варианты у нас есть?

Плагины для браузеров

Были рассмотрены плагины только для Chrome

YouTube Subscription Exporter & Importer

По своей сути, это обычный парсер. Он откроет youtube.com/feed/channels, прокрутит страницу до самого конца и сделает экспорт всех каналов.
Затем создаст группу вкладок со всеми экспортированными каналами, и по очереди будет подписываться.
Крайне долгое выполнение. Экстеншен смог сделать экспорт, импорт не осилил.

Subscriptions Importer For Youtube

Все тот же парсер, но с лимитом в 50 подписок и платным премиум тарифом до 1000 подписок. Экспорт не работает, импорт также создает группу вкладок, но отваливается по таймауту.

Это два популярных экстеншена с 2.000 и 10.000 пользователей соответственно.
Ни один из них у меня нормально не отработал.

YouTube Subscription Exporter

Позволяет моментально сделать экспорт всех оформленных подписок в буфер обмена.
Формат: Имя_Канала https://youtube.com/channel

Можно скопипастить в какой-нибудь файл, подписываться, переходя по ссылке и нажимая на кнопку подписки. Согласитесь, процесс не самый приятный.

Ручной режим

Тапаем хомяка подписки

Нашел статью на Medium (Доступ только через VPN) от 25 декабря 2023 года, где нам предлагают сделать все наши подписки публичными, переключиться на новый аккаунт, перейти на старый канал с публичными подписками и прожать руками подписки на все каналы.
Работа руками нам не подходит. Да и светить своими подписками не всем захочется.

Самописный скрипт на Python с использованием YouTube API

От безысходности и скуки пятничного вечера я решил поизучать, как же это можно реализовать через API. Бегло нагуглил примеры решения, но они либо нерабочие, либо не совсем подходят по функционалу и требуют доработки.
Я хочу залогиниться в старый аккаунт, залогиниться в новый и увидеть оформленные подписки.
Спойлер: все получилось, но есть некоторое «но».

Для работы нам понадобится только настроенный YouTube API v3 и скрипт, который я успел написать — github.com/sdnv0×4d/transfer-yt-subs

Клонируем себе репозиторий, устанавливаем зависимости:

└> git clone https://github.com/sdnv0x4d/transfer-yt-subs.git
└> cd transfer-yt-subs
└> pip3 install -r req.txt

Настройка YouTube API

  1. Логинимся в console.cloud.google.com, создаем проект через Select a project в левом верхнем углу.
    Задаем любое имя проекта, организацию можно не трогать.
    Выбираем проект после его создания через ту же кнопку Select a project

  2. Нажимаем на APIs & Services с главного экрана.
    Переходим на вкладку Library, в поиске вводим youtube data api v3.
    Переходим на найденное API и жмем Enable.
    Нас перекинет на страницу управления этого API.
    Выбираем Create Credentials в правом верхнем углу:

    1. Credential Type: отмечаем User Data, прожимаем Next

    2. OAuth Consent Screen: Указываем любое имя приложения, свою почту в поле поддержки и разработчика

    3. Scopes: Жмем кнопку Add or remove scopes и отмечаем скоуп .../auth/youtube

    4. OAuth Client ID: Выбираем Web Application из выпадающего списка, даем имя нашему клиенту, в Authorized redirect URIs указываем http://localhost:8080/ и http://localhost:8081/
      По этим адресам у нас локально будут запускаться окна авторизации в Google-аккаунты для экспорта подписок и импорта

    5. Your Credentials: На последнем шаге обязательно скачиваем наши креды через Download, складываем скачанный файл в директорию со скриптом и переименовываем его в client_secret.json, прожимаем Done на странице Google Cloud

  3. Переходим на вкладку OAuth consent screen, пролистываем до Test Users и нажимаем Add Users, добавляем туда почты аккаунтов между которыми будут переноситься подписки, сохраняем

Процесс переноса подписок

Если у вас ~200 подписок и более — скрипт упадет с ошибкой 403 по причине превышения квоты 10000 запросов в день (1 запрос с подпиской стоит 50 единиц квоты)

Можно запустить этот скрипт повторно когда квоты обновятся или абузить приложения API с разных Google-аккаунтов.
Квоты можно посмотреть на вкладке Enabled API & Services/Quotas & System Limits

Я переносил 192 подписки и моя квота достигла 9621

  1. Запускаем скрипт — python3 transfer-yt-subs.py, открывается окно авторизации в Google-аккаунт

  2. Выбираем аккаунт, с которого будем переносить подписки

  3. Гугл оповещает нас о том, что приложение не проверено — жмем Продолжить, затем предоставляем права нашему приложению к аккаунту Google нажав еще раз Продолжить

  4. Сейчас произошла выгрузка всех имеющихся подписок. Теперь необходимо войти в аккаунт куда будем импортировать подписки

  5. Повторяем шаг 3

  6. При успешном завершении скрипт напишет сколько подписок он оформил — идем проверять, что все подписки перенеслись

Таким образом я перенес в общей сложности 597 подписок между своими аккаунтами. Надеюсь, что и вам поможет такой способ.

Больше я пишу о селфхостинге, системном и сетевом администрировании, а также делюсь своими небольшими инструментами в Telegram-канале — t.me/sdnv_funkhole
Там много заметок, которые не подходят для формата статей.

Habrahabr.ru прочитано 1179 раз