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

-
\ No newline at end of file
+
+
+
+
+
\ No newline at end of file