From 70ae74dcbb6db4d3002539db3bd94a6bdf3f1153 Mon Sep 17 00:00:00 2001 From: H1K0 Date: Mon, 24 Aug 2020 00:06:33 +0300 Subject: [PATCH] Added notification dialogs --- GUI/NotificationDialog.ui | 76 +++++++++++++++++++++++++++++++++++++++ GUI/ProgressDialog.ui | 3 ++ NGAudioDownloader.py | 68 ++++++++++++++++++++--------------- README.md | 6 +++- 4 files changed, 124 insertions(+), 29 deletions(-) create mode 100644 GUI/NotificationDialog.ui diff --git a/GUI/NotificationDialog.ui b/GUI/NotificationDialog.ui new file mode 100644 index 0000000..3618756 --- /dev/null +++ b/GUI/NotificationDialog.ui @@ -0,0 +1,76 @@ + + + Dialog + + + + 0 + 0 + 400 + 150 + + + + ACHTUNG! + + + + ../icon.ico../icon.ico + + + + + 30 + 30 + 331 + 61 + + + + + Century Gothic + 16 + + + + TextLabel + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + true + + + 0 + + + + + + 280 + 100 + 81 + 31 + + + + + Cooper Black + 14 + + + + PointingHandCursor + + + OK! + + + Return + + + + + + diff --git a/GUI/ProgressDialog.ui b/GUI/ProgressDialog.ui index c5b5605..1aaf5f6 100644 --- a/GUI/ProgressDialog.ui +++ b/GUI/ProgressDialog.ui @@ -63,6 +63,9 @@ 25 + + BusyCursor + 100 diff --git a/NGAudioDownloader.py b/NGAudioDownloader.py index 225d331..15a10d1 100644 --- a/NGAudioDownloader.py +++ b/NGAudioDownloader.py @@ -16,17 +16,16 @@ class GUI(QMainWindow): super().__init__() loadUi('GUI/MainWindow.ui',self) self.dlbtn.clicked.connect(self.download) - self.inprocess=False def download(self): - self.inprocess=True # Validating input songID=self.input.text() page=parse(load(f'https://www.newgrounds.com/audio/listen/{songID}').text,'html.parser') if page.find(id='pageerror') is not None: - self.input.clear() + self.notification=NotificationDialog('Incorrect input or the song doesn\'t exist!') + self.notification.exec() return - songTitle=page.find('title').text + self.songTitle=page.find('title').text # Getting download link link='http://audio.ngfiles.com/' page=str(page) @@ -35,23 +34,21 @@ class GUI(QMainWindow): if page[i]!='\\': link+=page[i] i+=1 # Locating file - dist=QFileDialog.getSaveFileName(self,'Save File', + self.dist=QFileDialog.getSaveFileName(self,'Save File', link.split('/')[-1], 'MP3 Audio File (*.mp3)')[0] - if not dist: return + if not self.dist: return # Downloading - file=load(link,stream=True) - global progress - progress.label.setText(f'Downloading "{songTitle}"...') - progress.setWindowTitle(f'Downloading "{songTitle}"...') - progress.bar.setValue(0) - progress.show() - self.thread=DownloadThread(file,dist) - self.thread.got_chunk.connect(lambda done:progress.bar.setValue(done)) - self.thread.finished.connect(self.thread.finish) - self.thread.start() - self.input.clear() - self.inprocess=False + self.file=load(link,stream=True) + self.progress=ProgressDialog() + self.progress.label.setText(f'Downloading "{self.songTitle}"...') + self.progress.setWindowTitle(f'Downloading "{self.songTitle}"...') + self.progress.bar.setValue(0) + self.progress.exec() + + def keyPressEvent(self,event): + if event.key()==16777216: + self.close() class ProgressDialog(QDialog): @@ -59,37 +56,52 @@ class ProgressDialog(QDialog): super().__init__() loadUi('GUI/ProgressDialog.ui',self) self.setWindowFlags(self.windowFlags()&~QtCore.Qt.WindowCloseButtonHint) + self.thread=DownloadThread() + self.thread.got_chunk.connect(lambda done:self.bar.setValue(done)) + self.thread.finished.connect(self.thread.finish) + self.thread.start() class DownloadThread(QThread): got_chunk=pyqtSignal(object) - def __init__(self,file,dist): - super().__init__() - self.file,self.dist=file,dist + def __init__(self): super().__init__() def run(self): - global progress - total=self.file.headers.get('content-length') + total=ngad.file.headers.get('content-length') if total is None: total=-1 else: total=int(total) downloaded=0 - with open(self.dist,'wb') as out: - for data in self.file.iter_content(chunk_size=max(total//100,1024)): + with open(ngad.dist,'wb') as out: + for data in ngad.file.iter_content(chunk_size=max(total//100,1024)): downloaded+=len(data) out.write(data) self.got_chunk.emit(100*downloaded//total) def finish(self): - global progress - progress.hide() + global ngad + ngad.progress.hide() + ngad.notification=NotificationDialog(f'"{ngad.songTitle}" has been downloaded successfully!') + ngad.notification.exec() self.deleteLater() +class NotificationDialog(QDialog): + def __init__(self,msg): + super().__init__() + loadUi('GUI/NotificationDialog.ui',self) + self.label.setText(msg) + self.setWindowFlags(self.windowFlags()&~QtCore.Qt.WindowCloseButtonHint) + self.btn.clicked.connect(self.accept) + + def accept(self): + ngad.input.clear() + self.close() + + if __name__ == '__main__': from sys import argv app=QApplication(argv) ngad=GUI() - progress=ProgressDialog() ngad.show() sys.exit(app.exec_()) \ No newline at end of file diff --git a/README.md b/README.md index 1853b6e..8c5c08b 100644 --- a/README.md +++ b/README.md @@ -22,4 +22,8 @@ It's easy as pie. You just run the downloader, enter your song ID and your file ![Start screen shot](https://i.ibb.co/rFGPM8x/2020-08-23-23-10-48-Newgrounds-Audio-Downloader.png) -![ProgressBar dialog](https://i.ibb.co/6tV9cjH/2020-08-23-23-12-03-Downloading-Mysterious-Planet.png) \ No newline at end of file +![ProgressBar dialog](https://i.ibb.co/6tV9cjH/2020-08-23-23-12-03-Downloading-Mysterious-Planet.png) + +![Download completion notification](https://i.ibb.co/bbsTVDH/2020-08-23-23-59-51-ACHTUNG.png) + +![Incorrect input / ERROR 404 notification](https://i.ibb.co/LzygXPd/2020-08-24-00-01-48-ACHTUNG.png) \ No newline at end of file