Created
December 23, 2020 03:27
-
-
Save JackKuo-tw/4f0a85bc90a527a80046b64b01c208af to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from PySide2.QtUiTools import QUiLoader | |
from PySide2.QtWidgets import QApplication, QLineEdit, QPushButton, QLabel, QTextEdit, QTextBrowser, QMainWindow, QWidget, QGridLayout | |
from PySide2.QtCore import QFile, QObject, Signal, QThread, Slot, QCoreApplication, Qt | |
import sys | |
import ilmsdump | |
import asyncio | |
import threading | |
from datetime import datetime | |
from qtui import Ui_Dialog | |
courses = [] | |
target_path = '.' | |
def addTextBrowser(text_browser, text): | |
text_browser.setText(text_browser.toPlainText() + text) | |
async def get_enrolled_courses(client, log): | |
global courses | |
tmp_courses = [] | |
try: | |
await [tmp_courses.append(i) async for i in client.get_enrolled_courses()] | |
except: | |
pass | |
courses = tmp_courses | |
for i in tmp_courses: | |
log(i.name + '\n') | |
log('\n == finish == \n\n') | |
#class Form(QObject): | |
class MainWindow(QMainWindow): | |
def __init__(self, parent=None): | |
super(MainWindow, self).__init__(parent=parent) | |
self.window = Ui_Dialog() | |
self.window.setupUi(self) | |
widget = QWidget() | |
layout = QGridLayout() | |
self.setLayout(layout) | |
self.loop = asyncio.get_event_loop() | |
# init string | |
self.fileName = "" | |
self.progress_value = 0 | |
self.result = dict() | |
self.loop = asyncio.get_event_loop() | |
# bind widget | |
self.logBrowser = self.window.log | |
self.account = self.window.account | |
self.password = self.window.password | |
self.test_login_btn = self.window.testLoginBtn | |
self.show_enrolled_btn = self.window.showEnrolledBtn | |
self.download_btn = self.window.downloadBtn | |
# connect | |
self.test_login_btn.clicked.connect(self.test_login) | |
self.show_enrolled_btn.clicked.connect(self.show_enrolled) | |
self.download_btn.clicked.connect(self.download) | |
self.client = ilmsdump.Client(target_path) | |
def test_login(self): | |
self.client = ilmsdump.Client(target_path) | |
account = self.account.text() | |
password = self.password.text() | |
try: | |
self.loop.run_until_complete(self.client.login_with_username_and_password(account, password)) | |
self.log('login success\n') | |
return True | |
except: | |
self.log('login fail\n') | |
return False | |
def show_enrolled(self): | |
self.log('== showing the enrolled courses == \n') | |
try: | |
if not self.test_login(): return | |
self.loop.run_until_complete( get_enrolled_courses(self.client, self.log) ) | |
except: | |
pass | |
def log(self, text): | |
addTextBrowser(self.logBrowser, text) | |
self.logBrowser.verticalScrollBar().setValue( self.logBrowser.verticalScrollBar().maximum() ) | |
def download(self): | |
self.show_enrolled() | |
self.log(f"download is starting... {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\n") | |
self.logBrowser.repaint() | |
d = ilmsdump.Downloader(client=self.client) | |
print(courses) | |
self.loop.run_until_complete( d.run(list(courses), []) ) | |
self.log(f"download finished. {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\n") | |
if __name__ == "__main__": | |
QCoreApplication.setAttribute(Qt.AA_ShareOpenGLContexts) | |
app = QApplication(sys.argv) | |
form = MainWindow() | |
form.show() | |
# form = Form("ilmsdump.ui") | |
sys.exit(app.exec_()) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment