S
Sasha3I8I2
Original poster
Привет уважаемый читатель!
Сегодня, я расскажу тебе, как я решил задачу по переносу подписок в аккаунте YouTube.
Первым делом хочу сказать, что данный способ не для рядового пользователя, который знает только, что такое Word'дик, Excel'чик, YouTube'чик, Вконтактик и Однокласснички, а для продвинутого юзера, хотя с другой стороны разобраться можно, если захотеть, сложностей особых нет...
Так же хочу отметить, что я не программист(это важно... ), мне нравится сам процесс создания автоматизированных вещей, как говорится Лень - двигатель прогресса...
Если у вас количество подписок ~30. то заморачиватся с этим не стоит, у меня же их было 130(не скажу, что много но у некоторых и по 1 000 есть), сервис YouTube сделал экспорт подписок, но не сделал их импорт и мне не хотелось открывать один аккаунт, копировать url канал, открывать другой браузер, логинится там под другим аккаунтом, переходить по ранее скопированному линку, нажимать кнопку "Подписаться", и все это повторять 130 раз... Погуглил я на предмет "Импорта/Экспорта подписок YouTube" ничего нет, уныло как то...
Вспомнилось мне, что есть некий инструмент позволяющий автоматизировать действия в браузере, загуглил, нашел!
Выдержка из вики:
Приступим...
Первым делом нам потребуется Python, берем его . С установкой проблем возникнуть не должно... далее нам необходим сам модуль Selenium
Открываем меню Пуск->Выполнить, либо нажимаем клавиши Win+R в появившемся окне вводим "cmd" без кавычек, запустится Коммандная строка, вводим туда:
тем самым мы установим модуль Selenium для Python, после этого нам необходимо скачать драйвер Selenium для Chrome(именно через хром мы будем проводить все манипуляции), скачать можно или , на момент написания статьи, версия была 2.16
Скачиваем архив, распаковываем в какую нибудь папку, например C:\Selenium, далее открываем браузер логинемся на YouTube по старым логином с которого мы будем забирать подписки и переходим по ссылке , проматываем страницу в самый низ, там есть кнопка "Экспортировать подписки", жмем ее и скачиваем файл subscription_manager.xml в папку C:\Selenium, выходим из аккаунта YouTube и логинемся снова, но уже под другим аккаунтом в который мы будем импортировать подписки, закрываем все открытые вкладки, что бы ничего нам не мешало, после последней закрытой вкладки , закроется и сам Chrome, то что нам нужно...
В папке C:\Selenium создаем новый текстовый файл и называем его import.py, открываем его в блокноте и вставляем туда следующее:
Внимание! Если вы не знакомы языком Python, то у вас могут возникнуть(и скорее всего возникнут)проблемы после копирования ниже указанного текста, лучше скачайте прикрепленный архив с готовым файлом, дабы избежать проблем!
Очень важно!!! В строке options.add_argument('--user-data-dir=C:/Users/ВАШ_ПОЛЬЗОВАТЕЛЬ/AppData/Local/Google/Chrome/User Data') в параметре "--user-data-dir=" необходимо указать путь к вашему профилю браузера, это нужно для того, чтобы запустился браузер с вашими настройками и с вашим аккаунтом YouTube
сохраняем и запускаем его двойным щелчком мыши, скрипт запустится и если все хорошо, то вы увидите строки с названием канала и символы "+++" - канал добавлен в подписки, либо "---" подписка уже была оформлена.
Работает это так:
Посмотреть вложение 8712
Всем спасибо!
Ссылка на готовый архив:
Сегодня, я расскажу тебе, как я решил задачу по переносу подписок в аккаунте YouTube.
Первым делом хочу сказать, что данный способ не для рядового пользователя, который знает только, что такое Word'дик, Excel'чик, YouTube'чик, Вконтактик и Однокласснички, а для продвинутого юзера, хотя с другой стороны разобраться можно, если захотеть, сложностей особых нет...
Так же хочу отметить, что я не программист(это важно... ), мне нравится сам процесс создания автоматизированных вещей, как говорится Лень - двигатель прогресса...
Если у вас количество подписок ~30. то заморачиватся с этим не стоит, у меня же их было 130(не скажу, что много но у некоторых и по 1 000 есть), сервис YouTube сделал экспорт подписок, но не сделал их импорт и мне не хотелось открывать один аккаунт, копировать url канал, открывать другой браузер, логинится там под другим аккаунтом, переходить по ранее скопированному линку, нажимать кнопку "Подписаться", и все это повторять 130 раз... Погуглил я на предмет "Импорта/Экспорта подписок YouTube" ничего нет, уныло как то...
Вспомнилось мне, что есть некий инструмент позволяющий автоматизировать действия в браузере, загуглил, нашел!
Выдержка из вики:
Selenium - это Java-приложение, которое может анализировать файлы определенной структуры для того, чтобы находить в них команды для манипуляции браузером и команды для выполнения определенных действий и проверок.
Selenium поддерживается Microsoft Internet Explorer, Google Chrome, Mozilla Suite и Mozilla Firefox для Microsoft Windows, Linux и Apple Macintosh.
Приступим...
Первым делом нам потребуется Python, берем его . С установкой проблем возникнуть не должно... далее нам необходим сам модуль Selenium
Открываем меню Пуск->Выполнить, либо нажимаем клавиши Win+R в появившемся окне вводим "cmd" без кавычек, запустится Коммандная строка, вводим туда:
Код:
C:\Users\admin> easy_install selenium
Скачиваем архив, распаковываем в какую нибудь папку, например C:\Selenium, далее открываем браузер логинемся на YouTube по старым логином с которого мы будем забирать подписки и переходим по ссылке , проматываем страницу в самый низ, там есть кнопка "Экспортировать подписки", жмем ее и скачиваем файл subscription_manager.xml в папку C:\Selenium, выходим из аккаунта YouTube и логинемся снова, но уже под другим аккаунтом в который мы будем импортировать подписки, закрываем все открытые вкладки, что бы ничего нам не мешало, после последней закрытой вкладки , закроется и сам Chrome, то что нам нужно...
В папке C:\Selenium создаем новый текстовый файл и называем его import.py, открываем его в блокноте и вставляем туда следующее:
Внимание! Если вы не знакомы языком Python, то у вас могут возникнуть(и скорее всего возникнут)проблемы после копирования ниже указанного текста, лучше скачайте прикрепленный архив с готовым файлом, дабы избежать проблем!
Python:
# coding=utf-8
from selenium import webdriver
from xml.dom import minidom
import re, time, sys
options = webdriver.ChromeOptions()
options.add_argument('--user-data-dir=C:/Users/user/AppData/Local/Google/Chrome/User Data')
driver = webdriver.Chrome(chrome_options = options)
def subscription(id):
#Открываем URL канала
url = u'https://www.youtube.com/channel/' + id[0]
driver.get(url)
#Находим кнопку подписки
button = driver.find_element_by_xpath('//*[@id="c4-primary-header-contents"]/div/span/button[1]')
#Если на кнопке нет атрибута 'data-is-subscribed="true"' - значит подписка не оформлена
if button.get_attribute('data-is-subscribed') == None:
#то кликаем на кнопку
button.click()
#Засыпаем на три секунды что-бы клик успел отработать, необходим при медленном интернете
time.sleep(3)
sys.stdout.write(" +++\r\n")
else:
#Иначе пишем:
sys.stdout.write(" ---\r\n")
### Парсим XML файл подписок subscription_manager.xml берем здесь https://www.youtube.com/subscription_manager
### в самом низу страницы, есть кнопка "Экспортировать подписки", кладем его рядом с этим скриптом
xmldoc = minidom.parse('subscription_manager.xml')
itemlist = xmldoc.getElementsByTagName('outline')
#Печатаем количество подписок
print(len(itemlist))
#Цикл обработки XML документа
for s in itemlist:
try:
feed_url = s.attributes['xmlUrl'].value
#Находим ID канала регулярным выражением
p = re.compile('channel_id=(.*)$')
m = p.findall(feed_url)
#Печатаем название канала
sys.stdout.write(s.attributes['title'].value)
#Вызываем функцию подписки
subscription(m)
except:
pass
Очень важно!!! В строке options.add_argument('--user-data-dir=C:/Users/ВАШ_ПОЛЬЗОВАТЕЛЬ/AppData/Local/Google/Chrome/User Data') в параметре "--user-data-dir=" необходимо указать путь к вашему профилю браузера, это нужно для того, чтобы запустился браузер с вашими настройками и с вашим аккаунтом YouTube
сохраняем и запускаем его двойным щелчком мыши, скрипт запустится и если все хорошо, то вы увидите строки с названием канала и символы "+++" - канал добавлен в подписки, либо "---" подписка уже была оформлена.
Работает это так:
Посмотреть вложение 8712
Всем спасибо!
Ссылка на готовый архив: