Skip to content

Commit

Permalink
refactor: refactor for code regulation with pycharm
Browse files Browse the repository at this point in the history
  • Loading branch information
itsHenry35 committed Jul 12, 2023
1 parent 3dfa383 commit 38e0306
Show file tree
Hide file tree
Showing 10 changed files with 194 additions and 130 deletions.
2 changes: 1 addition & 1 deletion .idea/ledu.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 8 additions & 4 deletions gui/download1.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from tkinter.filedialog import askdirectory
import tkinter.messagebox as mb


def get_course(uid, token):
url = "https://course-api-online.saasp.vdyoo.com/course/v1/student/course/list"
headers = {
Expand All @@ -24,12 +25,15 @@ def get_course(uid, token):
response = requests.get(url, headers=headers)
return response.json()


def select_path():
global path
path = askdirectory()


def download1(uid, token):
global path

def submit():
count = 0
for i, widget in enumerate(widgetlist):
Expand All @@ -39,13 +43,12 @@ def submit():
returnlist[count]['courseid'] = idlist[numlist[i]]
returnlist[count]['name'] = numlist[i]
returnlist[count]['extensiveornot'] = 'True' if var.get() == 1 else 'False'
count+=1
count += 1
if count == 0:
mb.showwarning(title='警告', message='未选择课程')
else:
root.destroy()


root = ttk.Window(title='乐读视频下载器-下载', themename="morph")
root.geometry("")
data = get_course(uid, token)
Expand All @@ -69,8 +72,9 @@ def submit():
extensiveornot.pack(anchor='w')
submit = ttk.Button(text='提交', bootstyle="primary", command=submit)
submit.pack(anchor='w')
selectpath = ttk.Button(text='选择自定义路径(可不选,默认为程序所在目录)', bootstyle="primary-outline-toolbutton", command=select_path)
selectpath = ttk.Button(text='选择自定义路径(可不选,默认为程序所在目录)', bootstyle="primary-outline-toolbutton",
command=select_path)
selectpath.pack(anchor='w')
root.mainloop()
importlib.reload(ttk.style)
return returnlist, path
return returnlist, path
56 changes: 36 additions & 20 deletions gui/download2.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
from tkinter.ttk import Progressbar
from ttkbootstrap.constants import *
import requests
import os, sys
import ctypes
import importlib
import inspect
import os
import subprocess
from pyaria2 import Aria2RPC
import ttkbootstrap as ttk, tkinter
import time
import sys
import threading
import importlib
import inspect, ctypes
import time
import tkinter

import requests
import ttkbootstrap as ttk
from pyaria2 import Aria2RPC


def _async_raise(tid, exctype):
Expand All @@ -21,9 +23,12 @@ def _async_raise(tid, exctype):
elif res != 1:
ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, None)
raise SystemError("PyThreadState_SetAsyncExc failed")


def stop_thread(thread):
_async_raise(thread.ident, SystemExit)


def get_lecturers(course_list, user_id, access_token):
url = "https://course-api-online.saasp.vdyoo.com/course/v1/student/course/user-live-list"
global course_id, class_id, subject_id, tutor_id, lecturer_id, course_name
Expand All @@ -49,6 +54,7 @@ def get_lecturers(course_list, user_id, access_token):
lecturer_id = lecturers_data[0]['lecturerId']
return lecturers_data


def get_download_url(lecture, user_id, access_token):
live_type = lecture['liveTypeString']
headers = {
Expand Down Expand Up @@ -102,6 +108,7 @@ def get_download_url(lecture, user_id, access_token):
"errmsg": error_message,
}


def get_cram_class(course, user_id, access_token):
url = "https://classroom-api-online.saasp.vdyoo.com/classroom/basic/v1/real-record/init/auth"
if "tasks" not in course:
Expand Down Expand Up @@ -142,15 +149,18 @@ def get_cram_class(course, user_id, access_token):
"errmsg": error_message,
}


def download2(course_list, user_id, access_token, aria2_path, custom_down_path, final):
global aria2process
if custom_down_path == '':
custom_down_path = "乐读-下载"
gid_group = {}

def aria2_download(link, path, filename):
options = {"dir": path, "out": filename}
download_ = jsonrpc.addUri([link], options=options)
gid_group[filename] = download_

def update_download_status():
global aria2process
while True:
Expand All @@ -160,10 +170,13 @@ def update_download_status():
if stat['status'] != 'complete':
stat = jsonrpc.tellStatus(str(gid_group[filename]))
if int(stat['totalLength']) != 0 and int(stat['completedLength']) != 0:
tkinterlist[filename]['progress']['value'] = int(stat['completedLength']) / int(stat['totalLength']) * 100
tkinterlist[filename]['progress']['value'] = int(stat['completedLength']) / int(
stat['totalLength']) * 100
tkinterlist[filename]['progress'].update()
tkinterlist[filename]['percentage'].configure(text=str("%.2f"%((int(stat['completedLength']) / int(stat['totalLength']) * 100))) + '%')
tkinterlist[filename]['speed'].configure(text='下载速度:' + str(round(int(stat['downloadSpeed'])/1024/1024, 2)) + 'MB/s')
tkinterlist[filename]['percentage'].configure(
text=str("%.2f" % ((int(stat['completedLength']) / int(stat['totalLength']) * 100))) + '%')
tkinterlist[filename]['speed'].configure(
text='下载速度:' + str(round(int(stat['downloadSpeed']) / 1024 / 1024, 2)) + 'MB/s')
all_success = False
if stat['status'] == 'complete':
tkinterlist[filename]['progress']['value'] = 100
Expand All @@ -178,10 +191,13 @@ def update_download_status():
aria2process.terminate()
stop_thread(thread)
time.sleep(0.1)

root = ttk.Window(title='乐读视频下载器-下载', themename="morph")
root.geometry("")
if not final:
aria2process = subprocess.Popen(aria2_path + ' --enable-rpc --rpc-listen-port=6800 --max-connection-per-server=16 --file-allocation=none --max-concurrent-downloads=64', shell=True)
aria2process = subprocess.Popen(
aria2_path + ' --enable-rpc --rpc-listen-port=6800 --max-connection-per-server=16 --file-allocation=none --max-concurrent-downloads=64',
shell=True)
time.sleep(1)
jsonrpc = Aria2RPC()
lecturers = get_lecturers(course_list, user_id, access_token)
Expand Down Expand Up @@ -222,16 +238,16 @@ def update_download_status():
if not os.path.exists(download_path):
os.makedirs(download_path)
open_path_button = ttk.Button(text='打开下载目录', command=lambda: os.startfile(download_path))
open_path_button.grid(row=count+1, column=0)
open_path_button.grid(row=count + 1, column=0)
for filename in download_urls:
if download_urls[filename]['success'] == 'True':
aria2_download(download_urls[filename]['url'], download_path, filename)
else:
tkinterlist[filename]['percentage'].configure(text='下载失败')
tkinterlist[filename]['speed'].configure(text=download_urls[filename]['errmsg'])
if download_urls[filename]['success'] == 'True':
aria2_download(download_urls[filename]['url'], download_path, filename)
else:
tkinterlist[filename]['percentage'].configure(text='下载失败')
tkinterlist[filename]['speed'].configure(text=download_urls[filename]['errmsg'])
thread = threading.Thread(target=update_download_status)
thread.start()
root.mainloop()
importlib.reload(ttk.style)
importlib.reload(tkinter)
return
return
58 changes: 32 additions & 26 deletions gui/login1.py
Original file line number Diff line number Diff line change
@@ -1,69 +1,75 @@
import ttkbootstrap as ttk
from ttkbootstrap.constants import *
import importlib
import tkinter.messagebox as mb
import sys
import tkinter.messagebox as mb

import ttkbootstrap as ttk


def switchshowpwd(password):
def password_privacy_switch(password):
if password['show'] == '':
password['show'] = '*'
else:
password["show"] = ''
def switchtosms(username, root):


def switch_to_sms_login(username, root):
global username_value, sms, exitbool
exitbool = False
sms = 'True'
username_value = username.get().replace('\r','').replace('\n','').replace('\t','')
username_value = username.get().replace('\r', '').replace('\n', '').replace('\t', '')
root.destroy()


def nextpage(username, password, root):
global username_value, password_value, sms, exitbool
sms = 'False'
username_value = username.get().replace('\r','').replace('\n','').replace('\t','')
password_value = password.get().replace('\r','').replace('\n','').replace('\t','')
username_value = username.get().replace('\r', '').replace('\n', '').replace('\t', '')
password_value = password.get().replace('\r', '').replace('\n', '').replace('\t', '')
if not username_value or not password_value:
mb.showwarning("警告", "请填写用户名与密码!")
else:
exitbool = False
root.destroy()


def login1(username_default=""):
global exitbool
exitbool = True
root = ttk.Window(title = '乐读视频下载器-登陆', themename="morph")
root = ttk.Window(title='乐读视频下载器-登陆', themename="morph")
root.geometry("")
title = ttk.Label(text = '登陆', font = ('等线 (Body Asian)', 20))
title.grid(row = 0, column = 0)
text1 = ttk.Label(text = '用户名(手机号或学员编号等):')
title = ttk.Label(text='登陆', font=('等线 (Body Asian)', 20))
title.grid(row=0, column=0)
text1 = ttk.Label(text='用户名(手机号或学员编号等):')
text1.grid(row=1)
username = ttk.Entry(bootstyle="primary")
username.grid(row=1,column=1)
username.grid(row=1, column=1)
username.insert(0, username_default)
smsswitch = ttk.Button(text='短信验证码登陆', bootstyle="default-outline", command=lambda: switchtosms(username, root))
smsswitch.grid(row=1,column=2)
text2 = ttk.Label(text = '密码:')
smsswitch = ttk.Button(text='短信验证码登陆', bootstyle="default-outline",
command=lambda: switch_to_sms_login(username, root))
smsswitch.grid(row=1, column=2)
text2 = ttk.Label(text='密码:')
text2.grid(row=2)
password = ttk.Entry(bootstyle="primary", show="*")
password.grid(row=2,column=1)
showpwd = ttk.Button(text='显示/隐藏密码', bootstyle="defaulte", command=lambda: switchshowpwd(password))
showpwd.grid(row=2,column=2)
password.grid(row=2, column=1)
showpwd = ttk.Button(text='显示/隐藏密码', bootstyle="defaulte", command=lambda: password_privacy_switch(password))
showpwd.grid(row=2, column=2)
submit = ttk.Button(text='提交', bootstyle="primary", command=lambda: nextpage(username, password, root))
submit.grid(row=3, column=2)
root.mainloop()
importlib.reload(ttk.style)
if exitbool:
sys.exit()
if sms == 'False':
return {'pwdlogin' : 'True',
'usrname':username_value,
'pwd':password_value,
}
return {'pwdlogin': 'True',
'usrname': username_value,
'pwd': password_value,
}
if sms == 'True':
return {
'pwdlogin' : 'False',
'phonenum' : username_value
'pwdlogin': 'False',
'phonenum': username_value
}


if __name__ == '__main__':
print(login1())
print(login1())
Loading

0 comments on commit 38e0306

Please sign in to comment.