You've already forked amazing-ytdlp-archive
Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
20e5793cd8 | ||
![]() |
282b895170 | ||
![]() |
38f6f04260 |
@@ -2,7 +2,7 @@ from flask import Blueprint, render_template, request, redirect, url_for, flash,
|
||||
from ..nosql import get_nosql
|
||||
from ..dlp import checkChannelId, getChannelInfo
|
||||
from ..decorators import login_required
|
||||
from ..tasks import test_sleep, websub_subscribe_callback, websub_unsubscribe_callback, video_download, video_queue
|
||||
from ..tasks import test_sleep, websub_subscribe_callback, websub_unsubscribe_callback, video_download, video_queue, playlist_to_queue
|
||||
from datetime import datetime
|
||||
from secrets import token_urlsafe
|
||||
|
||||
@@ -30,28 +30,35 @@ def channels():
|
||||
generic = {}
|
||||
|
||||
if request.method == 'POST':
|
||||
channelId = request.form.get('channel_id', None)
|
||||
originalName = request.form.get('original_name', None)
|
||||
addedDate = request.form.get('added_date', None)
|
||||
task = request.form.get('task', None)
|
||||
|
||||
if task == 'subscribe-websub':
|
||||
channelId = request.form.get('channel_id', None)
|
||||
originalName = request.form.get('original_name', None)
|
||||
addedDate = request.form.get('added_date', None)
|
||||
|
||||
### add some validation
|
||||
|
||||
addedDate = datetime.strptime(addedDate, '%Y-%m-%d')
|
||||
|
||||
if checkChannelId(channelId) is False:
|
||||
channelId, originalName = getChannelInfo(channelId, ('channel_id', 'uploader'))
|
||||
|
||||
if not get_nosql().insert_new_channel(channelId, originalName, addedDate):
|
||||
flash('Error inserting new channel, you probably made a mistake somewhere')
|
||||
return redirect(url_for('admin.channels'))
|
||||
### add some validation
|
||||
|
||||
addedDate = datetime.strptime(addedDate, '%Y-%m-%d')
|
||||
|
||||
if checkChannelId(channelId) is False:
|
||||
channelId, originalName = getChannelInfo(channelId, ('channel_id', 'uploader'))
|
||||
|
||||
if not get_nosql().insert_new_channel(channelId, originalName, addedDate):
|
||||
flash('Error inserting new channel, you probably made a mistake somewhere')
|
||||
return redirect(url_for('admin.channels'))
|
||||
|
||||
return redirect(url_for('admin.channel', channelId=channelId))
|
||||
return redirect(url_for('admin.channel', channelId=channelId))
|
||||
|
||||
elif task == 'playlist-queue':
|
||||
task = playlist_to_queue.delay()
|
||||
flash(f'Task playlist-queue has been queued: {task.id}')
|
||||
|
||||
generic['currentDate'] = datetime.utcnow()
|
||||
channelIds = get_nosql().list_all_channels()
|
||||
|
||||
for channelId in channelIds:
|
||||
channels[channelId] = get_nosql().get_channel_info(channelId)
|
||||
channels[channelId] = get_nosql().get_channel_info(channelId, limited=True)
|
||||
channels[channelId]['video_count'] = get_nosql().get_channel_videos_count(channelId)
|
||||
|
||||
return render_template('admin/channels.html', channels=channels, generic=generic)
|
||||
|
@@ -11,7 +11,7 @@ def base():
|
||||
channelIds = get_nosql().list_all_channels()
|
||||
|
||||
for channelId in channelIds:
|
||||
channel = get_nosql().get_channel_info(channelId)
|
||||
channel = get_nosql().get_channel_info(channelId, limited=True)
|
||||
channel['video_count'] = get_nosql().get_channel_videos_count(channelId)
|
||||
channels.append(channel)
|
||||
|
||||
|
@@ -168,8 +168,12 @@ class Mango:
|
||||
ids.append(video['id'])
|
||||
return tuple(ids)
|
||||
|
||||
def get_channel_info(self, channelId):
|
||||
return self.channels.find_one({'id': channelId})
|
||||
def get_channel_info(self, channelId, limited=False):
|
||||
projection = {}
|
||||
if limited:
|
||||
projection['playlist'] = 0
|
||||
|
||||
return self.channels.find_one({'id': channelId}, projection)
|
||||
|
||||
|
||||
def update_channel_key(self, channelId, key, value):
|
||||
@@ -420,8 +424,7 @@ class Mango:
|
||||
return False
|
||||
|
||||
# add to queue
|
||||
self.download_queue.insert_one({'id': videoId, 'endpoint': endpointId, 'created_time': current_time(object=True), 'status': 'queued'}).inserted_id
|
||||
return True
|
||||
return self.download_queue.insert_one({'id': videoId, 'endpoint': endpointId, 'created_time': current_time(object=True), 'status': 'queued'}).inserted_id
|
||||
|
||||
def queue_deleteQueue(self, videoId):
|
||||
if self.download_queue.delete_one({'id': videoId}):
|
||||
@@ -445,6 +448,7 @@ class Mango:
|
||||
return None
|
||||
elif self.check_exists(queueItem['id']):
|
||||
self.queue_deleteQueue(queueItem['id'])
|
||||
continue
|
||||
self.download_queue.update_one({'id': queueItem['id']}, {'$set': {'status': 'working'}})
|
||||
return queueItem
|
||||
|
||||
|
@@ -164,6 +164,19 @@ def websub_renew_expiring(hours=6):
|
||||
if count >= 256:
|
||||
break
|
||||
|
||||
@shared_task()
|
||||
def playlist_to_queue():
|
||||
from .nosql import get_nosql
|
||||
|
||||
channels = get_nosql().list_all_channels(active=True)
|
||||
|
||||
for channel in channels:
|
||||
info = get_nosql().get_channel_info(channel)
|
||||
|
||||
for item in info['playlist']['entries']:
|
||||
videoId = item['id']
|
||||
get_nosql().queue_insertQueue(videoId, 'Playlist mirroring')
|
||||
|
||||
##########################################
|
||||
# TASK MODULES #
|
||||
##########################################
|
||||
|
@@ -15,6 +15,18 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col s12 l4 m-4">
|
||||
<div class="card">
|
||||
<div class="card-content">
|
||||
<span class="card-title">Direct actions</span>
|
||||
<form class="mt-4" method="post">
|
||||
<button class="btn mb-2 green" type="submit" name="task" value="playlist-queue">Playlist to Queue</button>
|
||||
<br>
|
||||
<span class="supporting-text">Forcerun playlist to queue task</span>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col s12 l4 m-4">
|
||||
<div class="card">
|
||||
<div class="card-content">
|
||||
@@ -38,7 +50,7 @@
|
||||
});
|
||||
</script>
|
||||
</div>
|
||||
<button class="btn mt-4" type="submit" name="action" value="add_channel">Add</button>
|
||||
<button class="btn mt-4" type="submit" name="task" value="add_channel">Add</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
@@ -22,6 +22,9 @@
|
||||
<div class="col s12 m-4">
|
||||
<h5>Reserved tasks per worker</h5>
|
||||
<p>Usually 4 tasks per worker</p>
|
||||
{% if reserved is none %}
|
||||
<h6>No workers with reserved tasks, are there any workers with stuck tasks or are they even online?</h6>
|
||||
{% else %}
|
||||
{% for worker in reserved %}
|
||||
<span>{{ worker }}</span>
|
||||
<table class="striped highlight responsive-table" style=" border: 1px solid black;">
|
||||
@@ -43,9 +46,13 @@
|
||||
</tbody>
|
||||
</table>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="col s12 m-4">
|
||||
<h5>Current workers and processing tasks</h5>
|
||||
{% if tasks is none %}
|
||||
<h6>No workers with running tasks, are there any workers with stuck tasks or are they even online?</h6>
|
||||
{% else %}
|
||||
{% for worker in tasks %}
|
||||
<span>{{ worker }}</span>
|
||||
<table class="striped highlight responsive-table" style=" border: 1px solid black;">
|
||||
@@ -67,6 +74,7 @@
|
||||
</tbody>
|
||||
</table>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
@@ -3,6 +3,8 @@
|
||||
flask
|
||||
flask-caching
|
||||
flask-limiter
|
||||
flask-sqlalchemy
|
||||
flask-migrate
|
||||
pymongo
|
||||
yt-dlp
|
||||
gunicorn
|
||||
|
Reference in New Issue
Block a user