pull/109/head
Mr Chen 6 years ago
parent 25564240b8
commit ff8cd695b0
  1. 8
      plugins/mysql/js/mysql.js
  2. 31
      plugins/qbittorrent/index.py
  3. 108
      plugins/qbittorrent/js/qbittorrent.js
  4. 45
      route/static/app/public.js

@ -459,11 +459,11 @@ function showHidePass(obj){
function copyPass(password){
var clipboard = new ClipboardJS('#bt_copys');
clipboard.on('success', function (e) {
layer.msg({msg:'复制成功',icon:1});
layer.msg('复制成功',{icon:1,time:2000});
});
clipboard.on('error', function (e) {
layer.msg({msg:'复制失败,浏览器不兼容!',icon:2});
layer.msg('复制失败,浏览器不兼容!',{icon:2,time:2000});
});
$("#bt_copys").attr('data-clipboard-text',password);
$("#bt_copys").click();
@ -912,9 +912,9 @@ function myLogs(){
var rdata = $.parseJSON(data.data);
var limitCon = '<p class="conf_p">\
<span class="f14 c6 mr20">'+ lan.soft.mysql_log_bin + ' </span><span class="f14 c6 mr20">' + toSize(rdata.msg) + '</span>\
<span class="f14 c6 mr20">二进制日志 </span><span class="f14 c6 mr20">' + toSize(rdata.msg) + '</span>\
<button class="btn btn-success btn-xs btn-bin va0">'+ (rdata.status ? lan.soft.off : lan.soft.on) + '</button>\
<p class="f14 c6 mtb10" style="border-top:#ddd 1px solid; padding:10px 0">'+ lan.soft.mysql_log_err + '<button class="btn btn-default btn-clear btn-xs" style="float:right;" >' + lan.soft.mysql_log_close + '</button></p>\
<p class="f14 c6 mtb10" style="border-top:#ddd 1px solid; padding:10px 0">错误日志<button class="btn btn-default btn-clear btn-xs" style="float:right;" >清空</button></p>\
<textarea readonly style="margin: 0px;width: 100%;height: 440px;background-color: #333;color:#fff; padding:0 5px" id="error_log"></textarea>\
</p>'
$(".soft-man-con").html(limitCon);

@ -236,14 +236,39 @@ def pQbClient():
def qbList():
args = getArgs()
# data = checkArgs(args, ['type'])
# if not data[0]:
# return data[1]
args_type = ''
if 'type' in args:
args_type = args['type']
f = ['downloading', 'completed']
tfilter = ''
if args_type in f:
tfilter = args['type']
try:
qb = pQbClient()
torrents = qb.torrents()
return public.returnJson(True, 'ok', torrents)
torrents = qb.torrents(filter=tfilter)
data = {}
data['type'] = tfilter
data['torrents'] = torrents
return public.returnJson(True, 'ok', data)
except Exception as e:
return public.returnJson(False, str(e))
def qbDel():
args = getArgs()
data = checkArgs(args, ['hash'])
if not data[0]:
return data[1]
qb = pQbClient()
data = qb.delete(args['hash'])
return public.returnJson(True, '操作成功!', data)
def test():
qb = pQbClient()
# magnet_link = "magnet:?xt=urn:btih:57a0ec92a61c60585f1b7a206a75798aa69285a5"
@ -278,6 +303,8 @@ if __name__ == "__main__":
print getRunLog()
elif func == 'qb_list':
print qbList()
elif func == 'qb_del':
print qbDel()
elif func == 'test':
print test()
else:

@ -30,55 +30,115 @@ function qbPost(method, args, callback){
});
}
function qbList(page,search){
var _data = {};
if (typeof(page) =='undefined'){
var page = 1;
}
function showHideHash(obj){
var a = "glyphicon-eye-open";
var b = "glyphicon-eye-close";
_data['page'] = page;
_data['page_size'] = 10;
if($(obj).hasClass(a)){
$(obj).removeClass(a).addClass(b);
$(obj).prev().text($(obj).prev().attr('data-pw'))
} else{
$(obj).removeClass(b).addClass(a);
$(obj).prev().text($(obj).attr('data-pw'));
}
}
function copyText(password){
var clipboard = new ClipboardJS('#bt_copys');
clipboard.on('success', function (e) {
layer.msg('复制成功',{icon:1,time:2000});
});
clipboard.on('error', function (e) {
layer.msg('复制失败,浏览器不兼容!',{icon:2,time:2000});
});
$("#bt_copys").attr('data-clipboard-text',password);
$("#bt_copys").click();
}
function getLocalTime(nS) {
return new Date(parseInt(nS) * 1000).toLocaleString().replace(/:\d{1,2}$/,' ');
}
function qbAdd(type){
}
function qbDel(hash){
qbPost('qb_del', {hash:hash}, function(data){
var rdata = $.parseJSON(data.data);
if (rdata['status']){
layer.msg(rdata.msg,{icon:1,time:2000,shade: [0.3, '#000']});
} else {
layer.msg(rdata.msg,{icon:2,time:2000,shade: [0.3, '#000']});
}
});
}
function qbListFind(){
var qbs = $('#qb_selected').val();
if ( qbs == '0' ){
qbList();
} else {
qbList(qbs);
}
}
function qbList(search){
var _data = {};
_data['test'] ='yes';
if(typeof(search) != 'undefined'){
_data['search'] = search;
_data['type'] = search;
}
qbPost('qb_list', _data, function(data){
var rdata = $.parseJSON(data.data);
if (!rdata['status']){
layer.msg(rdata.msg,{icon:0,time:2000,shade: [0.3, '#000']});
return;
}
console.log(rdata);
content = '';
// content += '<button class="btn btn-success btn-sm" onclick="csvnUserFind();">查找</button></div>';
content = '<select id="qb_selected" class="bt-input-text mr20" style="width:30%;margin-bottom: 3px;">'+
'<option value="0">所有</option>' +
'<option value="completed">已下载</option>' +
'<option value="downloading">下载中</option>' +
'</select>';
content += '<button class="btn btn-success btn-sm" onclick="qbListFind();">查找</button></div>';
content += '<div class="divtable" style="margin-top:5px;"><table class="table table-hover" width="100%" cellspacing="0" cellpadding="0" border="0">';
content += '<thead><tr>';
content += '<th>种子(hash)</th>';
content += '<th>状态</th>';
content += '<th>操作(<a class="btlink" onclick="csvnAddUser();">添加</a> | <a class="btlink" onclick="">管理</a>)</th>';
content += '<th>添加时间</th>';
content += '<th>操作(<a class="btlink" onclick="qbAdd();">添加</a> | <a class="btlink" onclick="">管理</a>)</th>';
content += '</tr></thead>';
content += '<tbody>';
ulist = rdata.data;
ulist = rdata.data.torrents;
for (i in ulist){
content += '<tr><td>'+ulist[i]['hash']+'</td>'+
'<td>'+'下载中'+'</td>'+
'<td><a class="btlink" onclick="csvnDelUser(\''+ulist[i]+'\')">删除</a></td></tr>';
content += '<tr><td>'+
'<span class="password" data-pw="'+ulist[i]['hash']+'">'+ulist[i]['hash'].substr(0,3)+'</span>' +
'<span onclick="showHideHash(this)" data-pw="'+ulist[i]['hash'].substr(0,3)+'" class="glyphicon glyphicon-eye-open cursor pw-ico" style="margin-left:10px"></span>'+
'<span class="ico-copy cursor btcopy" style="margin-left:10px" title="复制种子hash" onclick="copyText(\''+ulist[i]['hash']+'\')"></span>'+
'</td>'+
'<td>'+getLocalTime(ulist[i]['added_on'])+'</td>'+
'<td><a class="btlink" onclick="qbDel(\''+ulist[i]['hash']+'\')">删除</a></td></tr>';
}
content += '</tbody>';
content += '</table></div>';
// page = '<div class="dataTables_paginate paging_bootstrap pagination" style="margin-top:0px;"><ul id="softPage" class="page"><div>';
// page += rdata.list;
// page += '</div></ul></div>';
// content += page;
$(".soft-man-con").html(content);
var type = rdata.data.type;
if (type == ''){
$("#qb_selected option[value='0']").attr("selected", true);
} else {
$("#qb_selected option[value='"+type+"']").attr("selected", true);
}
});
}

@ -22,6 +22,9 @@ function toSizeM(byteLen) {
return a || 0;
}
function randomStrPwd(b) {
b = b || 32;
var c = "AaBbCcDdEeFfGHhiJjKkLMmNnPpRSrTsWtXwYxZyz2345678";
@ -345,36 +348,8 @@ function aotuHeight() {
var a = $("body").height() - 40;
$(".main-content").css("min-height", a)
}
$(function() {
aotuHeight()
});
$(window).resize(function() {
aotuHeight()
});
function showHidePwd() {
var a = "glyphicon-eye-open",
b = "glyphicon-eye-close";
$(".pw-ico").click(function() {
var g = $(this).attr("class"),
e = $(this).prev();
if(g.indexOf(a) > 0) {
var h = e.attr("data-pw");
$(this).removeClass(a).addClass(b);
e.text(h)
} else {
$(this).removeClass(b).addClass(a);
e.text("**********")
}
var d = $(this).next().position().left;
var f = $(this).next().position().top;
var c = $(this).next().width();
$(this).next().next().css({
left: d + c + "px",
top: f + "px"
})
})
}
function showMsg(msg, callback ,icon, time){
@ -700,7 +675,7 @@ function ActionTask() {
})
}
function RemoveTask(b) {
function removeTask(b) {
var a = layer.msg(lan.public.the_del, {
icon: 16,
time: 0,
@ -1590,4 +1565,12 @@ function pluginLogs(_name, version, func, line){
},'json');
},'json');
}
/*** 其中功能,针对插件通过库使用 end ***/
/*** 其中功能,针对插件通过库使用 end ***/
$(function() {
aotuHeight();
});
$(window).resize(function() {
aotuHeight();
});
Loading…
Cancel
Save