Skip to content

Instantly share code, notes, and snippets.

@JackKuo-tw
Created December 23, 2020 03:27
Show Gist options
  • Save JackKuo-tw/4f0a85bc90a527a80046b64b01c208af to your computer and use it in GitHub Desktop.
Save JackKuo-tw/4f0a85bc90a527a80046b64b01c208af to your computer and use it in GitHub Desktop.
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