add option to import youtube subscriptions

This commit is contained in:
0ihgk1uVBLlTBzVo7F9B 2020-09-04 14:57:45 +02:00
parent c572662112
commit ae7aefb5c2
2 changed files with 14 additions and 2 deletions

View File

@ -12,6 +12,7 @@ from werkzeug.urls import url_parse
from youtube_dl import YoutubeDL
from numerize import numerize
from bs4 import BeautifulSoup
from xml.dom import minidom
from app import app, db
from re import findall
import random, string
@ -440,12 +441,14 @@ def importdata():
if file.filename == '':
flash('No selected file')
return redirect(request.referrer)
if file and allowed_file(file.filename):
if file and allowed_file(file.filename) or 'subscription_manager' in file.filename:
option = request.form['import_format']
if option == 'yotter':
importYotterSubscriptions(file)
elif option == 'newpipe':
importNewPipeSubscriptions(file)
elif option == 'youtube':
importYoutubeSubscriptions(file)
return redirect(request.referrer)
return redirect(request.referrer)
@ -465,6 +468,12 @@ def importNewPipeSubscriptions(file):
for acc in data['subscriptions']:
r = followYoutubeChannel(re.search('(UC[a-zA-Z0-9_-]{22})|(?<=user\/)[a-zA-Z0-9_-]+', acc['url']).group())
def importYoutubeSubscriptions(file):
filename = secure_filename(file.filename)
itemlist = minidom.parse(file).getElementsByTagName('outline')
for item in itemlist[1:]:
r = followYoutubeChannel(re.search('UC[a-zA-Z0-9_-]{22}', item.attributes['xmlUrl'].value).group())
def allowed_file(filename):
return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS

View File

@ -47,8 +47,11 @@
<label class="radio-inline">
<input type="radio" name="import_format" id="newpipe" value="newpipe"> NewPipe
</label>
<label class="radio-inline">
<input type="radio" name="import_format" id="youtube" value="youtube"> Youtube
</label>
</form>
<div class="description">Import from JSON export.</div>
<div class="description">Import subscription data.</div>
</div>
</div>