diff --git a/auto_pt/urls.py b/auto_pt/urls.py index f26eb8e..4d10e61 100644 --- a/auto_pt/urls.py +++ b/auto_pt/urls.py @@ -12,5 +12,7 @@ urlpatterns = [ path(r'do_restart', views.do_restart, name='do_restart'), path(r'do_update', views.do_update, name='do_update'), path(r'import_from_ptpp', views.import_from_ptpp, name='import_from_ptpp'), + path(r'page_downloading', views.page_downloading, name='page_downloading'), + path(r'downloading', views.get_downloading, name='downloading'), path(r'do_sql', views.do_sql, name='do_sql'), ] diff --git a/auto_pt/views.py b/auto_pt/views.py index 01f1024..c21040f 100644 --- a/auto_pt/views.py +++ b/auto_pt/views.py @@ -5,11 +5,12 @@ from datetime import datetime import docker import git +import qbittorrentapi from django.http import JsonResponse from django.shortcuts import render from pt_site import views as tasks -from pt_site.models import SiteStatus, MySite, Site +from pt_site.models import SiteStatus, MySite, Site, Downloader from pt_site.views import scheduler, pt_spider from ptools.base import CommonResponse, StatusCodeEnum @@ -81,6 +82,41 @@ def do_sql(request): return JsonResponse('ok', safe=False) +def page_downloading(request): + return render(request, 'auto_pt/downloading.html') + + +def get_downloading(request): + downloader_list = Downloader.objects.all() + tasks = [] + for downloader in downloader_list: + qb_client = qbittorrentapi.Client(host=downloader.host, + port=downloader.port, + username=downloader.username, + password=downloader.password) + try: + qb_client.auth_log_in() + t_list = qb_client.torrents_info() + print(len(t_list)) + torrents = [] + for torrent in t_list: + # torrent.to_dict() + torrents.append(dict(torrent)) + tasks.append({ + 'downloader': { + 'name': downloader.name, + 'host': 'http://{}:{}'.format(downloader.host, downloader.port) + }, + 'torrents': torrents, + # 'torrents': t_list, + }) + except Exception as e: + print(e) + continue + print(tasks) + return JsonResponse(CommonResponse.success(data=json.dumps(tasks)).to_dict(), safe=False) + + def import_from_ptpp(request): if request.method == 'GET': return render(request, 'auto_pt/import_ptpp.html') @@ -116,7 +152,7 @@ def import_from_ptpp(request): 'msg': message, 'tag': 'warning' }) - raise + # raise return JsonResponse(CommonResponse.success(data={ 'messages': message_list }).to_dict(), safe=False) diff --git a/ptools/settings.py b/ptools/settings.py index e78a7e4..d04adb0 100644 --- a/ptools/settings.py +++ b/ptools/settings.py @@ -201,7 +201,7 @@ SIMPLEUI_CONFIG = { 'models': [{ 'name': '任务管理', 'icon': 'fa fa-user', - 'url': '/downloader/downloading/index' + 'url': '/tasks/page_downloading' }, { 'name': '查询种子', 'icon': 'fa fa-user', diff --git a/templates/auto_pt/downloading.html b/templates/auto_pt/downloading.html new file mode 100644 index 0000000..865484a --- /dev/null +++ b/templates/auto_pt/downloading.html @@ -0,0 +1,86 @@ +{% load static %} + + +
+ +