mirror of
https://github.com/ngfchl/ptools
synced 2023-07-10 13:41:22 +08:00
继续测试任务管理器
This commit is contained in:
@@ -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'),
|
||||
]
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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',
|
||||
|
||||
86
templates/auto_pt/downloading.html
Normal file
86
templates/auto_pt/downloading.html
Normal file
@@ -0,0 +1,86 @@
|
||||
{% load static %}
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>任务管理</title>
|
||||
{% include 'admin/includes/css-part.html' %}
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
<div id="app">
|
||||
<el-tabs type="border-card" style="height: 200px;" v-for="task in tasks">
|
||||
<el-tab-pane label="task.downloader.name" id="task.downloader.id">
|
||||
<el-table
|
||||
:data="task.torrents"
|
||||
height="250"
|
||||
border
|
||||
style="width: 100%">
|
||||
<el-table-column
|
||||
prop="date"
|
||||
label="日期"
|
||||
width="180">
|
||||
</el-table-column>
|
||||
<el-table-column prop="name"
|
||||
label="种子名称" width="180"></el-table-column>
|
||||
<el-table-column prop="name"
|
||||
label="大小" width="180"></el-table-column>
|
||||
<el-table-column prop="name"
|
||||
label="已下载"></el-table-column>
|
||||
<el-table-column prop="name"
|
||||
label="已上传"></el-table-column>
|
||||
<el-table-column prop="name"
|
||||
label="下载速度"></el-table-column>
|
||||
<el-table-column prop="name"
|
||||
label="上传速度"></el-table-column>
|
||||
<el-table-column prop="name"
|
||||
label="下载进度"></el-table-column>
|
||||
<el-table-column prop="name"
|
||||
label="保存路径"></el-table-column>
|
||||
<el-table-column prop="name"
|
||||
label="分享率"></el-table-column>
|
||||
<el-table-column prop="name"
|
||||
label="做种时间"></el-table-column>
|
||||
<el-table-column prop="name"
|
||||
label="当前状态"></el-table-column>
|
||||
<el-table-column prop="name"
|
||||
label="最后活动"></el-table-column>
|
||||
<el-table-column prop="name"
|
||||
label="分类"></el-table-column>
|
||||
<el-table-column prop="name"
|
||||
label="服务器"></el-table-column>
|
||||
</el-table>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
|
||||
</div>
|
||||
|
||||
{% include 'admin/includes/js-part.html' %}
|
||||
<script src="{% static 'admin/simpleui-x/js/axios.min.js' %}"></script>
|
||||
<script>
|
||||
const vm = new Vue({
|
||||
// 配置选项(option)
|
||||
// element: 指定用vue来管理页面中的哪个标签区域
|
||||
el: '#app',
|
||||
data: {
|
||||
tasks: ''
|
||||
},
|
||||
created() {
|
||||
this.get_downloading()
|
||||
},
|
||||
watch: {},
|
||||
methods: {
|
||||
get_downloading() {
|
||||
axios.get(
|
||||
"{% url "downloading" %}"
|
||||
).then(res => {
|
||||
console.log(res.data)
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user