add option to import newpipe subscriptions

This commit is contained in:
0ihgk1uVBLlTBzVo7F9B 2020-09-04 14:42:35 +02:00
parent 214500e707
commit c572662112
2 changed files with 20 additions and 3 deletions

View File

@ -441,12 +441,16 @@ def importdata():
flash('No selected file') flash('No selected file')
return redirect(request.referrer) return redirect(request.referrer)
if file and allowed_file(file.filename): if file and allowed_file(file.filename):
importAccounts(file) option = request.form['import_format']
if option == 'yotter':
importYotterSubscriptions(file)
elif option == 'newpipe':
importNewPipeSubscriptions(file)
return redirect(request.referrer) return redirect(request.referrer)
return redirect(request.referrer) return redirect(request.referrer)
def importAccounts(file): def importYotterSubscriptions(file):
filename = secure_filename(file.filename) filename = secure_filename(file.filename)
data = json.load(file) data = json.load(file)
for acc in data['twitter']: for acc in data['twitter']:
@ -455,6 +459,12 @@ def importAccounts(file):
for acc in data['youtube']: for acc in data['youtube']:
r = followYoutubeChannel(acc['channelId']) r = followYoutubeChannel(acc['channelId'])
def importNewPipeSubscriptions(file):
filename = secure_filename(file.filename)
data = json.load(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 allowed_file(filename): def allowed_file(filename):
return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS

View File

@ -40,7 +40,14 @@
<form action = "{{ url_for('importdata') }}" method = "POST" enctype = "multipart/form-data"> <form action = "{{ url_for('importdata') }}" method = "POST" enctype = "multipart/form-data">
<input type = "file" name = "file"/> <input type = "file" name = "file"/>
<input type = "submit"/> <input type = "submit"/>
</form> <br>
<label class="radio-inline">
<input type="radio" name="import_format" id="yotter" value="yotter" checked> Yotter
</label>
<label class="radio-inline">
<input type="radio" name="import_format" id="newpipe" value="newpipe"> NewPipe
</label>
</form>
<div class="description">Import from JSON export.</div> <div class="description">Import from JSON export.</div>
</div> </div>
</div> </div>