Skip to content

Commit

Permalink
Add restart download workers button to web ui
Browse files Browse the repository at this point in the history
  • Loading branch information
justin025 committed Jan 14, 2025
1 parent ed56cca commit 501e1ee
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 8 deletions.
4 changes: 2 additions & 2 deletions src/onthespot/api/spotify.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ def run(self):
# Circular Import
from ..accounts import get_account_token
while self.is_running:
time.sleep(3)
time.sleep(5)
try:
token = get_account_token('spotify').tokens()
except (AttributeError, IndexError):
Expand Down Expand Up @@ -568,7 +568,7 @@ def spotify_get_track_metadata(token, item_id):

info['release_year'] = track_data.get('tracks', [{}])[0].get('album', {}).get('release_date', '').split("-")[0]
#info['track_number'] = track_data.get('tracks', [{}])[0].get('track_number', '')
info['track_number'] = track_number
info['track_number'] = track_number
info['total_tracks'] = track_data.get('tracks', [{}])[0].get('album', {}).get('total_tracks', '')
info['disc_number'] = track_data.get('tracks', [{}])[0].get('disc_number', '')
info['total_discs'] = sorted([trk.get('disc_number', 0) for trk in album_data.get('tracks', {}).get('items', [])])[-1] if 'tracks' in album_data else 1
Expand Down
2 changes: 1 addition & 1 deletion src/onthespot/downloader.py
Original file line number Diff line number Diff line change
Expand Up @@ -326,7 +326,7 @@ def run(self):
).json()

try:
print(track_data)
logger.debug(track_data)
url = track_data['data'][0]['media'][0]['sources'][0]['url']
except KeyError as e:
# Fallback to lowest quality
Expand Down
13 changes: 13 additions & 0 deletions src/onthespot/resources/web/download_queue.html
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
<div style="display: flex; align-items: center;">
<p id="queue-status-message" style="margin-right: 10px;">Total Items: 0 | Progress: 0%</p>
<button onclick="clearItems()">Clear Completed Items</button>
<button class="hide-on-mobile" onclick="restartWorkers()">Restart Workers</button>
</div>

<table>
Expand Down Expand Up @@ -218,6 +219,18 @@
});
}

function restartWorkers() {
fetch('/restart_workers', {
method: 'POST'
})
.then(response => response.json())
.then(data => {
if (data.success) {
console.log('Clear completed successful');
}
});
}

function handleDelete(local_id) {
fetch(`/delete/${local_id}`, {
method: 'DELETE',
Expand Down
1 change: 1 addition & 0 deletions src/onthespot/resources/web/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ th {

button {
padding: 12px 20px;
margin-left: 10px;
border: none;
border-radius: 10px;
background-color: #1DB954;
Expand Down
3 changes: 3 additions & 0 deletions src/onthespot/runtimedata.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@
pending_lock = threading.Lock()
download_queue_lock = threading.Lock()

queue_workers = []
download_workers = []

init_tray = False


Expand Down
28 changes: 23 additions & 5 deletions src/onthespot/web.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
from .downloader import DownloadWorker, RetryWorker
from .otsconfig import config_dir, config
from .parse_item import parsingworker, parse_url
from .runtimedata import get_logger, account_pool, pending, download_queue, download_queue_lock, pending_lock
from .runtimedata import get_logger, account_pool, pending, download_queue, download_queue_lock, pending_lock, download_workers, queue_workers
from .search import get_search_results

logger = get_logger("web")
Expand Down Expand Up @@ -173,6 +173,22 @@ def clear_items():
return jsonify(success=True)


@app.route('/restart_workers', methods=['POST'])
@login_required
def restart_workers():
for download_worker in download_workers:
download_worker.stop()

download_workers.clear()

for i in range(config.get('maximum_download_workers')):
download_worker = DownloadWorker()
download_worker.start()
download_workers.append(download_worker)

return jsonify(success=True)


@app.route('/download_queue')
@login_required
def download_queue_page():
Expand Down Expand Up @@ -267,13 +283,15 @@ def main():
thread.daemon = True
thread.start()

for i in range(config.get('maximum_queue_workers')):
for _ in range(config.get('maximum_queue_workers')):
queue_worker = QueueWorker()
queue_worker.start()
queue_workers.append(queue_worker)

for i in range(config.get('maximum_download_workers')):
downloadworker = DownloadWorker()
downloadworker.start()
for _ in range(config.get('maximum_download_workers')):
download_worker = DownloadWorker()
download_worker.start()
download_workers.append(download_worker)

if config.get('enable_retry_worker'):
retryworker = RetryWorker()
Expand Down

0 comments on commit 501e1ee

Please sign in to comment.