Пример #1
0
    def limitPushButtonPressed(self,button):
        self.limit_pushButton.setEnabled(False)
        if self.limit_comboBox.currentText() == "KB/S" :
            limit = str(self.limit_spinBox.value()) + str("K")
        else :
            limit = str(self.limit_spinBox.value()) + str("M")
#if download was started before , send the limit_speed request to aria2 . else save the request in download_information_file
        if self.status != 'scheduled':
            download.limitSpeed(self.gid , limit)
        else:
            f = Open(download_info_folder + "/" + self.gid) 
            download_info_file_lines = f.readlines()
            f.close()
            add_link_dictionary_str = str(download_info_file_lines[9].strip())
            add_link_dictionary = ast.literal_eval(add_link_dictionary_str) 
            add_link_dictionary['limit'] = limit

            f = Open(download_info_folder + "/" + self.gid , "w")
            for i in range(10):
                if i == 9 :
                    f.writelines(str(add_link_dictionary) + "\n")
                else:
                    f.writelines(download_info_file_lines[i].strip() + "\n")

            f.close()
Пример #2
0
    def okPushButtonPressed(self,button):
        self.setting_dict['max-tries'] = self.tries_spinBox.value()
        self.setting_dict['retry-wait'] = self.wait_spinBox.value()
        self.setting_dict['timeout'] = self.time_out_spinBox.value()
        self.setting_dict['connections'] = self.connections_spinBox.value()
        self.setting_dict['download_path'] = self.download_folder_lineEdit.text()
        self.setting_dict['download_path_temp'] = self.temp_download_lineEdit.text()
        self.setting_dict['sound-volume'] = self.volume_dial.value()
        self.setting_dict['style'] = self.style_comboBox.currentText()
        self.setting_dict['color-scheme'] = self.color_comboBox.currentText()
        self.setting_dict['icons'] = self.icon_comboBox.currentText()
        self.setting_dict['font-size'] = self.font_size_spinBox.value()
#this section  creates temporary download folder and download folder and download sub folders if they did not existed.
        download_path_temp  = self.setting_dict ['download_path_temp']
        download_path = self.setting_dict [ 'download_path']
        folder_list = [download_path_temp , download_path]
        for folder in [ 'Audios' , 'Videos', 'Others','Documents','Compressed' ]:
            folder_list.append(download_path + '/' + folder )

        for folder in folder_list :
            if os.path.isdir(folder) == False :
                os.mkdir(folder)


        if self.enable_notifications_checkBox.isChecked() == True :
            self.setting_dict['sound'] = 'yes'
        else:
            self.setting_dict['sound'] = 'no'

        f = Open(setting_file , 'w')
        f.writelines(str(self.setting_dict))
        f.close()

        self.close()
Пример #3
0
 def afterCheckBoxToggled(self,checkBoxes): 
     if self.after_checkBox.isChecked() == True :
             self.after_frame.setEnabled(True)
     else :
         self.after_frame.setEnabled(False)
         f = Open('/tmp/persepolis/shutdown/' + self.gid , 'w')
         f.writelines('canceled')
         f.close()
Пример #4
0
 def afterCheckBoxToggled(self, checkBoxes):
     if self.after_checkBox.isChecked() == True:
         self.after_frame.setEnabled(True)
     else:
         self.after_frame.setEnabled(False)
         f = Open('/tmp/persepolis/shutdown/' + self.gid, 'w')
         f.writelines('canceled')
         f.close()
Пример #5
0
    def okPushButtonPressed(self, button):
        self.setting_dict['max-tries'] = self.tries_spinBox.value()
        self.setting_dict['retry-wait'] = self.wait_spinBox.value()
        self.setting_dict['timeout'] = self.time_out_spinBox.value()
        self.setting_dict['connections'] = self.connections_spinBox.value()
        self.setting_dict[
            'download_path'] = self.download_folder_lineEdit.text()
        self.setting_dict[
            'download_path_temp'] = self.temp_download_lineEdit.text()
        self.setting_dict['sound-volume'] = self.volume_dial.value()
        self.setting_dict['style'] = self.style_comboBox.currentText()
        self.setting_dict['color-scheme'] = self.color_comboBox.currentText()
        self.setting_dict['icons'] = self.icon_comboBox.currentText()
        self.setting_dict[
            'notification'] = self.notification_comboBox.currentText()
        self.setting_dict['font-size'] = self.font_size_spinBox.value()
        #if user select qt notification  >> enable_system_tray icon
        if self.setting_dict['notification'] == 'QT notification':
            self.enable_system_tray_checkBox.setChecked(True)
#enable_system_tray_checkBox
        if self.enable_system_tray_checkBox.isChecked() == True:
            self.setting_dict['tray-icon'] = 'yes'
            self.parent.system_tray_icon.show()
            self.parent.minimizeAction.setEnabled(True)
            self.parent.trayAction.setChecked(True)
        else:
            self.setting_dict['tray-icon'] = 'no'
            self.parent.system_tray_icon.hide()
            self.parent.minimizeAction.setEnabled(False)
            self.parent.trayAction.setChecked(False)
#after_download_checkBox
        if self.after_download_checkBox.isChecked() == True:
            self.setting_dict['after-dialog'] = 'yes'
        else:
            self.setting_dict['after-dialog'] = 'no'
#this section  creates temporary download folder and download folder and download sub folders if they did not existed.
        download_path_temp = self.setting_dict['download_path_temp']
        download_path = self.setting_dict['download_path']
        folder_list = [download_path_temp, download_path]
        for folder in [
                'Audios', 'Videos', 'Others', 'Documents', 'Compressed'
        ]:
            folder_list.append(download_path + '/' + folder)

        for folder in folder_list:
            if os.path.isdir(folder) == False:
                os.mkdir(folder)

        if self.enable_notifications_checkBox.isChecked() == True:
            self.setting_dict['sound'] = 'yes'
        else:
            self.setting_dict['sound'] = 'no'

        f = Open(setting_file, 'w')
        f.writelines(str(self.setting_dict))
        f.close()

        self.close()
Пример #6
0
    def removeSelected(self,menu):
        global remove_flag
        remove_flag = 1
        while remove_flag != 2 :
            sleep(0.1)

        gid_list = []
        for row in range(self.download_table.rowCount()):
            status = self.download_table.item(row , 1).text() 
            item = self.download_table.item(row , 0)
            if (item.checkState() == 2) and (status == 'complete' or status == 'error' or status == 'stopped' ):
                gid = self.download_table.item(row , 8 ).text()
                gid_list.append(gid)


        for gid in gid_list:        
            for i in range(self.download_table.rowCount()):
                row_gid = self.download_table.item(i , 8).text()
                if gid == row_gid :
                    row = i 
                    break

           
            file_name = self.download_table.item(row , 0).text()
            sleep(0.5)
            self.download_table.removeRow(row)

#remove gid of download from download list file
            f = Open(download_list_file)
            download_list_file_lines = f.readlines()
            f.close()
            f = Open(download_list_file , "w")
            for i in download_list_file_lines:
                if i.strip() != gid:
                    f.writelines(i.strip() + "\n")
            f.close()
#remove gid of download from active download list file
            f = Open(download_list_file_active)
            download_list_file_active_lines = f.readlines()
            f.close()
            f = Open(download_list_file_active , "w")
            for i in download_list_file_active_lines:
                if i.strip() != gid:
                    f.writelines(i.strip() + "\n")
            f.close()
#remove download_info_file
            download_info_file = download_info_folder + "/" + gid
            f = Open(download_info_file)
            f.close()
            f.remove()
#remove file of download form download temp folder
            if file_name != '***' and status != 'complete' :
                file_name_path = temp_download_folder + "/" +  str(file_name)
                os.system('rm "' + str(file_name_path) +'"')
                file_name_aria = file_name_path + str('.aria2')
                os.system('rm "' + str(file_name_aria) +'"')

        remove_flag = 0
Пример #7
0
 def afterCheckBoxToggled(self, checkBoxes):
     if self.after_checkBox.isChecked() == True:
         self.after_frame.setEnabled(True)
     else:
         self.after_frame.setEnabled(False)
         shutdown_file = os.path.join(persepolis_tmp, 'shutdown', self.gid)
         f = Open(shutdown_file, 'w')
         f.writelines('canceled')
         f.close()
Пример #8
0
 def okButtonPressed(self):
     if self.dont_show_checkBox.isChecked() == True:
         f = Open(self.setting_file)
         setting_file_lines = f.readlines()
         f.close()
         setting_dict_str = str(setting_file_lines[0].strip())
         setting_dict = ast.literal_eval(setting_dict_str)
         setting_dict['after-dialog'] = 'no'
         f = Open(self.setting_file, 'w')
         f.writelines(str(setting_dict))
         f.close()
     self.close()
Пример #9
0
    def propertiesCallback(self,add_link_dictionary , gid ):
        download_info_file = download_info_folder + "/" + gid
        f = Open(download_info_file)
        download_info_file_lines = f.readlines()
        f.close()
        f = Open(download_info_file , "w")
        for i in range(10):
            if i == 9 :
                f.writelines(str(add_link_dictionary) + "\n")
            else:
                f.writelines(download_info_file_lines[i].strip() + "\n")

        f.close()
Пример #10
0
    def removeButtonPressed(self,button):
        self.removeAction.setEnabled(False)
        global remove_flag
        if remove_flag !=3 :
            remove_flag = 1
            while remove_flag != 2 :
                sleep(0.1)
        selected_row_return = self.selectedRow()
        if selected_row_return != None:
            gid = self.download_table.item(selected_row_return , 8 ).text()
            file_name = self.download_table.item(selected_row_return , 0).text()
            status = self.download_table.item(selected_row_return , 1).text()
            sleep(0.5)
            self.download_table.removeRow(selected_row_return)

#remove gid of download from download list file
            f = Open(download_list_file)
            download_list_file_lines = f.readlines()
            f.close()
            f = Open(download_list_file , "w")
            for i in download_list_file_lines:
                if i.strip() != gid:
                    f.writelines(i.strip() + "\n")
            f.close()
#remove gid of download from active download list file
            f = Open(download_list_file_active)
            download_list_file_active_lines = f.readlines()
            f.close()
            f = Open(download_list_file_active , "w")
            for i in download_list_file_active_lines:
                if i.strip() != gid:
                    f.writelines(i.strip() + "\n")
            f.close()
#remove download_info_file
            download_info_file = download_info_folder + "/" + gid
            f = Open(download_info_file)
            f.close()
            f.remove()
#remove file of download form download temp folder
            if file_name != '***' and status != 'complete' :
                file_name_path = temp_download_folder + "/" +  str(file_name)
                os.system('rm "' + str(file_name_path) +'"')
                file_name_aria = file_name_path + str('.aria2')
                os.system('rm "' + str(file_name_aria) +'"')
        else:
            self.statusbar.showMessage("Please select an item first!")
        remove_flag = 0
        self.selectedRow()
Пример #11
0
    def removeButtonPressed(self,button):
        self.removeAction.setEnabled(False)
        selected_row_return = self.selectedRow()
        if selected_row_return != None:
            gid = self.download_table.item(selected_row_return , 8 ).text()
            try:
                file_name = self.download_table.item(selected_row_return , 0).text()
            except:
                file_name = None 
            sleep(0.5)
            self.download_table.removeRow(selected_row_return)

#remove gid of download from download list file
            f = Open(download_list_file)
            download_list_file_lines = f.readlines()
            f.close()
            f = Open(download_list_file , "w")
            for i in download_list_file_lines:
                if i.strip() != gid:
                    f.writelines(i.strip() + "\n")
            f.close()
#remove gid of download from active download list file
            f = Open(download_list_file_active)
            download_list_file_active_lines = f.readlines()
            f.close()
            f = Open(download_list_file_active , "w")
            for i in download_list_file_active_lines:
                if i.strip() != gid:
                    f.writelines(i.strip() + "\n")
            f.close()
#remove download_info_file
            download_info_file = download_info_folder + "/" + gid
            f = Open(download_info_file)
            f.close()
            f.remove()
#remove file of download form download temp folder
            if file_name != None :
                file_name_path = temp_download_folder + "/" +  str(file_name)
                os.system('rm "' + str(file_name_path) +'"')
                file_name_aria = file_name_path + str('.aria2')
                os.system('rm "' + str(file_name_aria) +'"')
        else:
            self.statusbar.showMessage("Please select an item first!")
        self.selectedRow()
Пример #12
0
def shutDown(gid, password=None):
    shutdown_notification_file = os.path.join(persepolis_tmp, 'shutdown', gid)
    f = Open(shutdown_notification_file, 'w')
    f.writelines('wait')
    f.close()

    shutdown_notification = "wait"

    while shutdown_notification == "wait":
        sleep(1)

        f = Open(shutdown_notification_file, 'r')
        shutdown_notification_file_lines = f.readlines()
        f.close()

        shutdown_notification = str(
            shutdown_notification_file_lines[0].strip())

    osCommands.remove(shutdown_notification_file)

    if shutdown_notification == "shutdown":

        print("shutdown in 20 seconds")
        logger.sendToLog("Shutting down in 20 seconds", "INFO")
        sleep(20)
        if os_type == 'Linux':
            os.system('echo "' + password + '" |sudo -S poweroff')

        elif os_type == 'Darwin':
            os.system('echo "' + password + '" |sudo -S shutdown -h now ')

        elif os_type == 'Windows':
            CREATE_NO_WINDOW = 0x08000000
            subprocess.Popen(['shutdown', '-S'],
                             shell=False,
                             creationflags=CREATE_NO_WINDOW)

        elif os_type == 'FreeBSD' or os_type == 'OpenBSD':
            os.system('echo "' + password + '" |sudo -S shutdown -p now ')
Пример #13
0
    def callBack(self , add_link_dictionary):
        gid = self.gidGenerator()

        download_info_file_list = ['***','waiting','***','***','***','***','***','***',gid , add_link_dictionary]
        download_info_file = config_folder + "/download_info/" + gid
        os.system("touch " + download_info_file )
         
        writeList(download_info_file , download_info_file_list)
        
        self.download_table.insertRow(0)
        j = 0
        download_info_file_list[9] = str(download_info_file_list[9])
        for i in download_info_file_list :
            item = QTableWidgetItem(i)
            self.download_table.setItem(0,j,item)
            j = j + 1

        if self.selectAction.isChecked() == True:
            item = self.download_table.item(0 , 0)
            item.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled)
            item.setCheckState(QtCore.Qt.Unchecked)
 
        f = Open (download_list_file , "a")
        f.writelines(gid + "\n")
        f.close()


        f = Open (download_list_file_active , "a")
        f.writelines(gid + "\n")
        f.close()
        new_download = DownloadLink(gid)
        self.threadPool.append(new_download)
        self.threadPool[len(self.threadPool) - 1].start()
        self.progressBarOpen(gid) 
        if add_link_dictionary['start_hour'] == None :
            message = "Download Starts"
        else:
            message = "Download Scheduled"
        notifySend(message ,'' , 10000 , 'no', systemtray = self.system_tray_icon )
Пример #14
0
    def limitCheckBoxToggled(self,checkBoxes): 
        if self.limit_checkBox.isChecked() == True :
            self.limit_frame.setEnabled(True)
            self.after_pushButton.setEnabled(True)
        else :
            self.limit_frame.setEnabled(False)
            if self.status != 'scheduled':
                download.limitSpeed(self.gid , "0" )
            else:
                f = Open(download_info_folder + "/" + self.gid) 
                download_info_file_lines = f.readlines()
                f.close()
                add_link_dictionary_str = str(download_info_file_lines[9].strip())
                add_link_dictionary = ast.literal_eval(add_link_dictionary_str) 
                add_link_dictionary['limit'] = '0'

                f = Open(download_info_folder + "/" + self.gid , "w")
                for i in range(10):
                    if i == 9 :
                        f.writelines(str(add_link_dictionary) + "\n")
                    else:
                        f.writelines(download_info_file_lines[i].strip() + "\n")

                f.close()
Пример #15
0
def downloadStop(gid):
    download_info_file = download_info_folder + "/" + gid
    f = Open(download_info_file)
    download_info_file_lines = f.readlines()
    f.close()

    status = download_info_file_lines[1].strip() 
    if status != 'scheduled':
        try :
            answer = server.aria2.remove(gid)
            if status == 'downloading':
                server.aria2.removeDownloadResult(gid)
 
        except :
            answer = str ("None")
        print(answer + " stopped")
    else :
        answer = 'stopped'

    if answer != 'None':
        add_link_dictionary_str = str(download_info_file_lines[9].strip())
        add_link_dictionary = ast.literal_eval(add_link_dictionary_str) 
        add_link_dictionary['start_hour'] = None
        add_link_dictionary['start_minute'] = None
        add_link_dictionary['end_hour'] = None
        add_link_dictionary['end_minute'] = None
        add_link_dictionary['after_download'] = 'None'

        f = Open(download_info_file , "w")
        for i in range(10):
            if i == 1 :
                f.writelines("stopped" + "\n")
            elif i == 9 :
                f.writelines(str(add_link_dictionary) + "\n")
            else:
                f.writelines(download_info_file_lines[i].strip() + "\n")

        f.close()
    return answer
Пример #16
0
    def callBack(self , add_link_dictionary):
        gid = self.gidGenerator()

        download_info_file_list = ['***','waiting','***','***','***','***','***','***',gid , str(add_link_dictionary)]
        download_info_file = config_folder + "/download_info/" + gid
        os.system("touch " + download_info_file )
        f = Open(download_info_file , "w")
        for i in range(10):
            f.writelines(download_info_file_list[i] + "\n")

        f.close()
        
        self.download_table.insertRow(0)
        j = 0
        for i in download_info_file_list :
            item = QTableWidgetItem(i)
            self.download_table.setItem(0,j,item)
            j = j + 1

        f = Open (download_list_file , "a")
        f.writelines(gid + "\n")
        f.close()


        f = Open (download_list_file_active , "a")
        f.writelines(gid + "\n")
        f.close()
        new_download = DownloadLink(gid)
        self.threadPool.append(new_download)
        self.threadPool[len(self.threadPool) - 1].start()
        self.progressBarOpen(gid) 
        if add_link_dictionary['start_hour'] == None :
            message = "Download Starts"
        else:
            message = "Download Scheduled"
        notifySend(message ,'' , 10000 , 'no')
Пример #17
0
    def checkDownloadInfo(self,gid):
        try:
#get download information from download_info_file according to gid and write them in download_table cells
            download_info_file = config_folder + "/download_info/" + gid
            f = Open(download_info_file)
            download_info_file_lines = f.readlines()
            f.close()
#finding row of this gid!
            for i in range(self.download_table.rowCount()):
                row_gid = self.download_table.item(i , 8).text()
                if gid == row_gid :
                    row = i 
                    break

            for i in range(10):
#remove gid of completed download from active downloads list file
                if i == 1 :
                    status = download_info_file_lines[i].strip()
                    status = str(status)
                    status_download_table = str(self.download_table.item(row , 1 ) . text())

                    if status == "complete":
                        f = Open(download_list_file_active)
                        download_list_file_active_lines = f.readlines()
                        f.close()
                        f = Open(download_list_file_active , "w")
                        for line in download_list_file_active_lines :
                            if line.strip() != gid :
                                f.writelines(line.strip() + "\n")
                        f.close()
                    
#update download_table cells
                item = QTableWidgetItem(download_info_file_lines[i].strip())
                self.download_table.setItem(row , i , item)
                self.download_table.viewport().update()
#update progresswindow
            try :
            
                member_number = self.progress_window_list_dict[gid]
                progress_window = self.progress_window_list[member_number]
                #link
                add_link_dictionary_str = str(download_info_file_lines[9].strip())
                add_link_dictionary = ast.literal_eval(add_link_dictionary_str) 
                link = "<b>Link</b> : " +  str(add_link_dictionary ['link'])
                progress_window.link_label.setText(link)
                progress_window.setToolTip(link)

                #Save as
                final_download_path = add_link_dictionary['final_download_path']
                if final_download_path == None :
                    final_download_path = str(add_link_dictionary['download_path'])
                        
                save_as = "<b>Save as</b> : " + final_download_path + "/" + str(download_info_file_lines[0].strip())
                progress_window.save_label.setText(save_as)
                file_name = str(download_info_file_lines[0].strip())
                if file_name != "***":
                    progress_window.setWindowTitle(file_name ) 

                #status
                progress_window.status = download_info_file_lines[1].strip()
                status = "<b>status</b> : " + progress_window.status 
                progress_window.status_label.setText(status)
                if progress_window.status == "downloading":
                    progress_window.resume_pushButton.setEnabled(False)
                    progress_window.stop_pushButton.setEnabled(True)
                    progress_window.pause_pushButton.setEnabled(True)
                elif progress_window.status == "paused":
                    progress_window.resume_pushButton.setEnabled(True)
                    progress_window.stop_pushButton.setEnabled(True)
                    progress_window.pause_pushButton.setEnabled(False)
                elif progress_window.status == "waiting":
                    progress_window.resume_pushButton.setEnabled(False)
                    progress_window.stop_pushButton.setEnabled(False)
                    progress_window.pause_pushButton.setEnabled(False)
                elif progress_window.status == "scheduled":
                    progress_window.resume_pushButton.setEnabled(False)
                    progress_window.stop_pushButton.setEnabled(True)
                    progress_window.pause_pushButton.setEnabled(False)
                elif progress_window.status == "stopped" or progress_window.status == "error" or progress_window.status == "complete" :
                    progress_window.close()
                    self.progress_window_list[member_number] = []
                    del self.progress_window_list_dict[gid]
                    if progress_window.status == "complete":
                        notifySend("Download Complete" ,str(download_info_file_lines[0])  , 10000 , 'ok' )
                    elif progress_window.status == "stopped":
                        notifySend("Download Stopped" , str(download_info_file_lines[0]) , 10000 , 'no')

                    elif progress_window.status == "error":
                        notifySend("Download Error" , str(download_info_file_lines[0]) , 10000 , 'fail')
               
                        add_link_dictionary['start_hour'] = None
                        add_link_dictionary['start_minute'] = None
                        add_link_dictionary['end_hour'] = None
                        add_link_dictionary['end_minute'] = None
                        add_link_dictionary['after_download'] = 'None'

                        f = Open(download_info_file , "w")
                        for i in range(10):
                            if i == 9 :
                                f.writelines(str(add_link_dictionary) + "\n")
                            else:
                                f.writelines(download_info_file_lines[i].strip() + "\n")

                        f.close()
                    
                    if os.path.isfile('/tmp/persepolis/shutdown/' + gid ) == True and progress_window.status != 'stopped':
                        answer = download.shutDown()
                        if answer == 'error':
                            os.system('killall aria2c')
                        f = Open('/tmp/persepolis/shutdown/' + gid , 'w')
                        f.writelines('shutdown')
                        f.close()
                    elif os.path.isfile('/tmp/persepolis/shutdown/' + gid ) == True and progress_window.status == 'stopped':
                        f = Open('/tmp/persepolis/shutdown/' + gid , 'w')
                        f.writelines('canceled')
                        f.close()



             
                #downloaded
                downloaded = "<b>Downloaded</b> : " + str(download_info_file_lines[3].strip()) + "/" + str(download_info_file_lines[2].strip())
                progress_window.downloaded_label.setText(downloaded)

                #Transfer rate
                rate = "<b>Transfer rate</b> : " + str(download_info_file_lines[6].strip())
                progress_window.rate_label.setText(rate)

                #Estimate time left
                estimate_time_left = "<b>Estimate time left</b> : " + str(download_info_file_lines[7].strip()) 
                progress_window.time_label.setText(estimate_time_left)

                #Connections
                connections = "<b>Connections</b> : " + str(download_info_file_lines[5].strip())
                progress_window.connections_label.setText(connections)


                #progressbar
                value = download_info_file_lines[4].strip()
                value = value[:-1]
                progress_window.download_progressBar.setValue(int(value))
            except :
                pass
        except:
            pass
Пример #18
0
def endTime(end_hour , end_minute , gid):
    time.sleep(1)
    print("end time actived")
    sigma_end = sigmaTime(end_hour , end_minute)
    sigma_now = nowTime()
    download_info_file = download_info_folder + "/" + gid

    while sigma_end != sigma_now :
        status_file = 'no'
#wait for start downloading :
        while status_file == 'no':
            time.sleep(0.5)
            try :
                f = Open(download_info_file)
                download_info_file_lines = f.readlines()
                f.close()
                status_file = 'yes'
                status = download_info_file_lines[1].strip() 
            except:
                status_file = 'no'
#check download's status
        if status == 'downloading' or status == 'paused' :
            answer = 'continue'
        else:
            answer = 'end'
            print("Download ended before!")
            break

        sigma_now = nowTime()
        time.sleep(1.1)

    if  answer != 'end':
        print("Time is Up")
        answer = downloadStop(gid)
        i = 0
        while answer == 'None' and (i <= 9):
            time.sleep(1)
            answer = downloadStop(gid)
            i = i + 1
        if answer == 'None':
            os.system("killall aria2c")

        f = Open(download_info_file)
        download_info_file_lines = f.readlines()
        f.close()
        add_link_dictionary_str = str(download_info_file_lines[9].strip())
        add_link_dictionary = ast.literal_eval(add_link_dictionary_str) 
        add_link_dictionary['end_hour'] = None
        add_link_dictionary['end_minute'] = None

        f = Open(download_info_file , "w")
        for i in range(10):
            if i == 1 :
                f.writelines("stopped" + "\n")
            elif i == 9 :
                f.writelines(str(add_link_dictionary) + "\n")
            else:
                f.writelines(download_info_file_lines[i].strip() + "\n")


        f.close()
Пример #19
0
def downloadStatus(gid):
    try :
        download_status = server.aria2.tellStatus(gid ,['status' ,'connections' ,'errorCode' , 'errorMessage' ,'downloadSpeed' , 'connections' , 'dir' , 'totalLength' , 'completedLength','files']  )
    except:
        download_status = {'status': None ,'connections' : None ,'errorCode' : None , 'errorMessage' : None ,'downloadSpeed' : None , 'connections' : None , 'dir' : None , 'totalLength' : None , 'completedLength': None ,'files': None } 
#file_status contains name of download file 
    try:    
        file_status = str(download_status['files'])
        file_status = file_status[1:-1]
        file_status = ast.literal_eval(file_status)
        path = file_status['path']
        file_name = str(path.split("/")[-1])
        if not(file_name):
            file_name = None
    except :
            file_name = None

    for i in download_status.keys():
        if not(download_status[i]):
            download_status[i] = None
    try:
        file_size = float (download_status['totalLength'])
    except:
        file_size = None
    try:    
        downloaded = float (download_status['completedLength'])
    except:
        downloaded = None
           
    if (downloaded != None and file_size != None and file_size != 0):
        file_size_back = file_size
        if int(file_size/1073741824) != 0 :
            file_size = file_size/1073741824
            size_str = str(round(file_size , 2)) + " GB"
        elif int(file_size/1048576) != 0:
            size_str = str(int(file_size/1048576)) + " MB"
        elif int(file_size/1024) != 0:
            size_str = str(int(file_size/1024)) + " KB"
        else:
            size_str = str(file_size)
        downloaded_back = downloaded 
        if int(downloaded/1073741824) != 0:
            downloaded = downloaded/1073741824
            downloaded_str = str(round(downloaded , 2)) + " GB"
        elif int((downloaded/1048576)) != 0:
            downloaded_str = str(int(downloaded/1048576)) + " MB"
        elif int(downloaded/1024) != 0:
            downloaded_str = str(int(downloaded/1024)) + " KB"
        else:
            downloaded_str = str(downloaded)
        file_size = file_size_back
        downloaded = downloaded_back
        percent =  int(downloaded * 100 / file_size)
        percent_str = str(percent) + " %"
    else:
        percent_str = None 
        size_str = None
        downloaded_str = None

    try:
        download_speed = int(download_status['downloadSpeed'])
    except:
        download_speed = 0 

    if (downloaded != None and  download_speed != 0):
        estimate_time_left = int((file_size - downloaded)/download_speed)
        if int((download_speed/1073741824)) != 0:
            download_speed = download_speed/1073741824 
            download_speed_str = str(round(download_speed , 2))+ " GB/S"
        elif int((download_speed/1048576)) != 0:
            download_speed_num = download_speed/1048576
            download_speed_str = str(round(download_speed_num , 2)) + " MB/S"
        elif int((download_speed/1024)) != 0:
            download_speed_str = str(int(download_speed/1024)) + " KB/S"
        else:
            download_speed_str = str(download_speed)

        eta = ""
        if estimate_time_left >= 3600:
            eta = eta + str(int(estimate_time_left/3600)) + "h"
            estimate_time_left = estimate_time_left % 3600
            eta = eta + str(int(estimate_time_left/60)) + "m"
            estimate_time_left = estimate_time_left % 60
            eta = eta + str(estimate_time_left) + "s"
        elif estimate_time_left >= 60:
            eta = eta + str(int(estimate_time_left/60)) + "m"
            estimate_time_left = estimate_time_left % 60
            eta = eta + str(estimate_time_left) + "s"
        else :
            eta = eta + str(estimate_time_left) + "s" 
        estimate_time_left_str = eta

    else:
        download_speed_str = "0" 
        estimate_time_left_str = None


    try:
        connections_str = str(download_status['connections'])
    except:
        connections_str = None

    try :
        status_str = str(download_status['status'])
    except :
        status_str = None


    download_info_file = download_info_folder + "/" + gid
    f = Open(download_info_file)
    download_info_file_lines = f.readlines()
    f.close()

    add_link_dictionary_str = str(download_info_file_lines[9].strip())
    add_link_dictionary = ast.literal_eval(add_link_dictionary_str) 

    download_path = add_link_dictionary['download_path']
    final_download_path = add_link_dictionary ['final_download_path']


#if final_download_path did not defined and download_path equaled to user default download folder then find final_download_path according to file extension
    if final_download_path == None :
        if file_name != None :
#finding default download_path
            f = Open(setting_file)
            setting_file_lines = f.readlines()
            f.close()
            setting_dict_str = str(setting_file_lines[0].strip())
            setting_dict = ast.literal_eval(setting_dict_str) 

            if setting_dict['download_path'] == download_path :
                final_download_path = findDownloadPath(file_name , download_path)
                add_link_dictionary ['final_download_path'] = final_download_path
#if download completed move file to the download folder
    if (status_str == "complete"):
        if final_download_path != None :
            download_path = final_download_path
        downloadCompleteAction(path , download_path ,file_name)
#rename active status to downloading
    if (status_str == "active"):
        status_str = "downloading"
#rename removed status to stopped
    if (status_str == "removed" ):
        status_str = "stopped"

    if (status_str == "None"):
        status_str = None

    download_info = [file_name , status_str , size_str , downloaded_str ,  percent_str , connections_str , download_speed_str ,estimate_time_left_str , None , str(add_link_dictionary) ]

   
    f = Open(download_info_file , "w")
    for i in range(10):
        if download_info[i] != None:
            f.writelines(download_info[i] + "\n")
        else:
            f.writelines(download_info_file_lines[i].strip() + "\n")

    f.close()

    return 'ready'
Пример #20
0
def downloadAria(gid):
#add_link_dictionary is a dictionary that contains user download request information
    download_info_file = download_info_folder + "/" + gid
    f = Open(download_info_file)
    download_info_file_lines = f.readlines()
    f.close()
    add_link_dictionary_str = str(download_info_file_lines[9].strip())
    add_link_dictionary = ast.literal_eval(add_link_dictionary_str) 

    link = add_link_dictionary ['link']
    ip = add_link_dictionary['ip']
    port = add_link_dictionary['port']
    proxy_user = add_link_dictionary['proxy_user']
    proxy_passwd = add_link_dictionary['proxy_passwd']
    download_user = add_link_dictionary['download_user']
    download_passwd = add_link_dictionary['download_passwd']
    connections = add_link_dictionary['connections']
    limit= add_link_dictionary['limit']
    start_hour = add_link_dictionary['start_hour']
    start_minute = add_link_dictionary['start_minute']
    end_hour = add_link_dictionary['end_hour']
    end_minute = add_link_dictionary['end_minute']
    header = add_link_dictionary['header']
    out = add_link_dictionary['out']
    user_agent = add_link_dictionary['user-agent']
    cookies = add_link_dictionary['load-cookies']
    referer = add_link_dictionary['referer']
    
    if start_hour != None :
        download_info_file_lines[1] = "scheduled"

    f = Open(download_info_file , "w")
    for i in range(10):
        f.writelines(download_info_file_lines[i].strip() + "\n")

    f.close()

    if ip :
        ip_port = str(ip) + ":" + str(port)
    else:
        ip_port = "" 

    if start_hour != None :
        start_time_status = startTime(start_hour , start_minute , gid)
    else : 
        start_time_status = "downloading"


    if start_time_status == "scheduled":
#read new limit option before starting download! perhaps user changed this with progress bar window
        f = Open(download_info_file)
        download_info_file_lines = f.readlines()
        f.close()
        add_link_dictionary_str = str(download_info_file_lines[9].strip())
        add_link_dictionary = ast.literal_eval(add_link_dictionary_str) 
        
        limit = add_link_dictionary['limit']

#eliminate start_hour and start_minute!         
        add_link_dictionary['start_hour'] = None
        add_link_dictionary['start_minute'] = None

        f = Open(download_info_file , "w")
        for i in range(10):
            if i == 9 :
                f.writelines(str(add_link_dictionary) + "\n")
            else:
                f.writelines(download_info_file_lines[i].strip() + "\n")


        f.close()


#find download_path_temp from setting_file
    f = Open(setting_file)
    setting_file_lines = f.readlines()
    f.close()
    setting_dict_str = str(setting_file_lines[0].strip())
    setting_dict = ast.literal_eval(setting_dict_str) 

    download_path_temp = setting_dict ['download_path_temp' ] 



    if start_time_status != 'stopped':
#send download request to aria2
        aria_dict = {'gid':gid ,'max-tries' : str(setting_dict['max-tries']) , 'retry-wait': int(setting_dict['retry-wait']) , 'timeout' : int(setting_dict['timeout']) , 'header': header ,'out': out , 'user-agent': user_agent , 'load-cookies': cookies , 'referer': referer ,  'all-proxy': ip_port , 'max-download-limit': limit , 'all-proxy-user':str(proxy_user), 'all-proxy-passwd':str(proxy_passwd), 'http-user':str(download_user), 'http-passwd':str(download_passwd) , 'split':'16', 'max-connection-per-server':str(connections) , 'min-split-size':'1M', 'continue':'true', 'dir':str(download_path_temp) } 
        try:
            if ("http" in link[0:5]): 
                answer = server.aria2.addUri([link],aria_dict)
            else:
                answer = server.aria2.addUri([link],aria_dict)

            print(answer + " Starts")
            if end_hour != None:
                endTime(end_hour , end_minute , gid)

        except:
            print("None Starts")
#if request was unsuccessful return None!
            return 'None'
    else :
#if start_time_status is "stopped" it means download Canceled by user
        print("Download Canceled")
    def chromiumPressed(self, browser):

        if os_type == 'Linux':
            exec_path = '/usr/bin/persepolis'

            if browser == 'chromium':
                native_message_folder = home_address + '/.config/chromium/NativeMessagingHosts'
            elif browser == 'chrome':
                native_message_folder = home_address + \
                    '/.config/google-chrome/NativeMessagingHosts'

        elif os_type == 'FreeBSD' or os_type == 'OpenBSD':
            exec_path = '/usr/local/bin/persepolis'

            if browser == 'chromium':
                native_message_folder = home_address + '/.config/chromium/NativeMessagingHosts'
            elif browser == 'chrome':
                native_message_folder = home_address + \
                    '/.config/google-chrome/NativeMessagingHosts'

        elif os_type == 'Darwin':
            cwd = sys.argv[0]
            current_directory = os.path.dirname(cwd)

            exec_path = os.path.join(
                current_directory, 'Persepolis Download Manager')

            if browser == 'chromium':
                native_message_folder = home_address + \
                    '/Library/Application Support/Chromium/NativeMessagingHosts'
            elif browser == 'chrome':
                native_message_folder = home_address + \
                    '/Library/Application Support/Google/Chrome/NativeMessagingHosts'

        elif os_type == 'Windows':

            cwd = sys.argv[0]
            current_directory = os.path.dirname(cwd)

            exec_path = os.path.join(
                current_directory, 'Persepolis Download Manager.exe')

            # the execution path in jason file for Windows must in form of
            # c:\\Users\\...\\Persepolis Download Manager.exe , so we need 2
            # "\" in address
            exec_path = exec_path.replace('\\', r'\\')

            native_message_folder = os.path.join(
                home_address, 'AppData\Local\persepolis_download_manager')

        json_file_lines = ['{', '    "name": "com.persepolis.pdmchromewrapper",', '    "description": "Integrate Persepolis with Google Chrome",', '    "path": "' +
                           str(exec_path) + '",', '    "type": "stdio",', '    "allowed_origins": [', '        "chrome-extension://legimlagjjoghkoedakdjhocbeomojao/"', '    ]', '}']

        native_message_file = os.path.join(
            native_message_folder, 'com.persepolis.pdmchromewrapper.json')

        osCommands.makeDirs(native_message_folder)

        f = Open(native_message_file, 'w')
        for i in json_file_lines:
            f.writelines(str(i) + '\n')
        f.close()

        if os_type != 'Windows':
            os.system('chmod +x "' + str(native_message_file) + '"')
        else:
            CREATE_NO_WINDOW = 0x08000000
#             subprocess.Popen(['REG','ADD','"HKCU\\Software\\Google\Chrome\\NativeMessagingHosts\\com.persepolis.pdmchromewrapper.json"', '/ve' , '/t' , 'REG_SZ' ,'/d' , '"' + str(exec_path) + '"' , '/f'] , shell = False ,creationflags = CREATE_NO_WINDOW )
            os.system(r'REG ADD "HKCU\Software\Google\Chrome\NativeMessagingHosts\com.persepolis.pdmchromewrapper" /ve /t REG_SZ /d "' +
                      native_message_file + '" /f')

        if browser == 'chromium':
            self.chromium_label.setText('Done!')
        elif browser == 'chrome':
            self.chrome_label.setText('Done!')
Пример #22
0
    def okButtonPressed(self, button):
        if self.proxy_checkBox.isChecked() == False:
            ip = None
            port = None
            proxy_user = None
            proxy_passwd = None
        else:
            ip = self.ip_lineEdit.text()
            if not(ip):
                ip = None
            port = str(self.port_spinBox.value())
            if not(port):
                port = None
            proxy_user = self.proxy_user_lineEdit.text()
            if not(proxy_user):
                proxy_user = None
            proxy_passwd = self.proxy_pass_lineEdit.text()
            if not(proxy_passwd):
                proxy_passwd = None

        if self.download_checkBox.isChecked() == False:
            download_user = None
            download_passwd = None
        else:
            download_user = self.download_user_lineEdit.text()
            if not(download_user):
                download_user = None
            download_passwd = self.download_pass_lineEdit.text()
            if not(download_passwd):
                download_passwd = None

        if self.limit_checkBox.isChecked() == False:
            limit = 0
        else:
            if self.limit_comboBox.currentText() == "KB/S":
                limit = str(self.limit_spinBox.value()) + str("K")
            else:
                limit = str(self.limit_spinBox.value()) + str("M")

        if self.start_checkBox.isChecked() == False:
            start_hour = None
            start_minute = None
        else:
            start_hour = str(self.start_hour_spinBox.value())
            start_minute = str(self.start_minute_spinBox.value())

        if self.end_checkBox.isChecked() == False:
            end_hour = None
            end_minute = None
        else:
            end_hour = str(self.end_hour_spinBox.value())
            end_minute = str(self.end_minute_spinBox.value())

        link = self.link_lineEdit.text()
        connections = self.connections_spinBox.value()
        download_path = self.download_folder_lineEdit.text()

        self.add_link_dictionary['start_hour'] = start_hour
        self.add_link_dictionary['start_minute'] = start_minute
        self.add_link_dictionary['end_hour'] = end_hour
        self.add_link_dictionary['end_minute'] = end_minute
        self.add_link_dictionary['link'] = link
        self.add_link_dictionary['ip'] = ip
        self.add_link_dictionary['port'] = port
        self.add_link_dictionary['proxy_user'] = proxy_user
        self.add_link_dictionary['proxy_passwd'] = proxy_passwd
        self.add_link_dictionary['download_user'] = download_user
        self.add_link_dictionary['download_passwd'] = download_passwd
        self.add_link_dictionary['download_path'] = download_path
        self.add_link_dictionary['limit'] = limit
        self.add_link_dictionary['connections'] = connections

        new_category = str(self.add_queue_comboBox.currentText())
        if new_category != self.current_category:  # it means category changed
            # first download must eliminated form former category
            # reading current_category
            current_category_file = os.path.join(
                category_folder, self.current_category)

            f = Open(current_category_file)
            f_list = f.readlines()
            f.close()
            # eliminating gid of download from current_category_file
            f = Open(current_category_file, 'w')
            for line in f_list:
                gid = line.strip()
                if gid != self.gid:
                    f.writelines(gid + '\n')

            f.close()

            # adding download to the new category
            new_category_file = os.path.join(
                category_folder, str(new_category))

            f = Open(new_category_file, 'a')
            f.writelines(self.gid + '\n')
            f.close()

        self.callback(self.add_link_dictionary, self.gid, new_category)

        self.close()
Пример #23
0
    def checkDownloadInfo(self,gid):
        try:

#get download information from download_info_file according to gid and write them in download_table cells
            download_info_file = config_folder + "/download_info/" + gid
            download_info_file_list = readList(download_info_file)
            download_info_file_list_string = readList(download_info_file ,'string')
#finding row of this gid!
            for i in range(self.download_table.rowCount()):
                row_gid = self.download_table.item(i , 8).text()
                if gid == row_gid :
                    row = i 
                    break

            for i in range(10):
#check flag of download!
#It's showing that selection mode is active or not!
                if i == 0 :
                    flag = int(self.download_table.item(row , i).flags())

#remove gid of completed download from active downloads list file
                elif i == 1 :
                    status = str(download_info_file_list[i])
                    status_download_table = str(self.download_table.item(row , 1 ) . text())
                    if status == "complete":
                        f = Open(download_list_file_active)
                        download_list_file_active_lines = f.readlines()
                        f.close()
                        f = Open(download_list_file_active , "w")
                        for line in download_list_file_active_lines :
                            if line.strip() != gid :
                                f.writelines(line.strip() + "\n")
                        f.close()
                    
#update download_table cells
                item = QTableWidgetItem(download_info_file_list_string[i])
#48 means that item is checkable and enabled
                if i == 0 and flag == 48:
                    item.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled)
                    if self.download_table.item(row , i).checkState() == 2:
                        item.setCheckState(QtCore.Qt.Checked)
                    else:
                        item.setCheckState(QtCore.Qt.Unchecked)


                self.download_table.setItem(row , i , item)
                self.download_table.viewport().update()
#update progresswindow
            try :

#finding progress_window for gid            
                member_number = self.progress_window_list_dict[gid]
                progress_window = self.progress_window_list[member_number]
                #link
                add_link_dictionary = download_info_file_list[9]
                link = "<b>Link</b> : " +  str(add_link_dictionary ['link'])
                progress_window.link_label.setText(link)
                progress_window.link_label.setToolTip(link)

                #Save as
                final_download_path = add_link_dictionary['final_download_path']
                if final_download_path == None :
                    final_download_path = str(add_link_dictionary['download_path'])
                        
                save_as = "<b>Save as</b> : " + final_download_path + "/" + str(download_info_file_list[0])
                progress_window.save_label.setText(save_as)
                progress_window.save_label.setToolTip(save_as)

                #status
                progress_window.status = download_info_file_list[1]
                status = "<b>Status</b> : " + progress_window.status 
                progress_window.status_label.setText(status)
                if progress_window.status == "downloading":
                    progress_window.resume_pushButton.setEnabled(False)
                    progress_window.stop_pushButton.setEnabled(True)
                    progress_window.pause_pushButton.setEnabled(True)
                elif progress_window.status == "paused":
                    progress_window.resume_pushButton.setEnabled(True)
                    progress_window.stop_pushButton.setEnabled(True)
                    progress_window.pause_pushButton.setEnabled(False)
                elif progress_window.status == "waiting":
                    progress_window.resume_pushButton.setEnabled(False)
                    progress_window.stop_pushButton.setEnabled(True)
                    progress_window.pause_pushButton.setEnabled(False)
                elif progress_window.status == "scheduled":
                    progress_window.resume_pushButton.setEnabled(False)
                    progress_window.stop_pushButton.setEnabled(True)
                    progress_window.pause_pushButton.setEnabled(False)
                elif progress_window.status == "stopped" or progress_window.status == "error" or progress_window.status == "complete" :
#close progress_window if download status is stopped or completed or error
                    progress_window.close()
                    self.progress_window_list[member_number] = []
                    del self.progress_window_list_dict[gid]
                    if progress_window.status == "stopped":
                        notifySend("Download Stopped" , str(download_info_file_list[0]) , 10000 , 'no', systemtray = self.system_tray_icon )

                    elif progress_window.status == "error":
                        notifySend("Error - " + add_link_dictionary['error'] , str(download_info_file_list[0]) , 10000 , 'fail', systemtray = self.system_tray_icon )
               
                        add_link_dictionary['start_hour'] = None
                        add_link_dictionary['start_minute'] = None
                        add_link_dictionary['end_hour'] = None
                        add_link_dictionary['end_minute'] = None
                        add_link_dictionary['after_download'] = 'None'

                        for i in range(10):
                            if i == 9 :
                                download_info_file_list[i] = add_link_dictionary
                                
                        download_info_file_list[9] = add_link_dictionary 
                        writeList(download_info_file , download_info_file_list )


#this section is sending shutdown signal to the shutdown script(if user select shutdown for after download)
                    if os.path.isfile('/tmp/persepolis/shutdown/' + gid ) == True and progress_window.status != 'stopped':
                        answer = download.shutDown()
#KILL aria2c if didn't respond
                        if answer == 'error':
                            os.system('killall aria2c')
                        f = Open('/tmp/persepolis/shutdown/' + gid , 'w')
                        notifySend('Persepolis is shutting down','your system in 20 seconds' , 15000 ,'warning', systemtray = self.system_tray_icon )
                        f.writelines('shutdown')
                        f.close()
                    elif os.path.isfile('/tmp/persepolis/shutdown/' + gid ) == True and progress_window.status == 'stopped':
                        f = Open('/tmp/persepolis/shutdown/' + gid , 'w')
                        f.writelines('canceled')
                        f.close()

#showing download compelete dialog
#check user's Preferences
                    f = Open(setting_file)
                    setting_file_lines = f.readlines()
                    f.close()
                    setting_dict_str = str(setting_file_lines[0].strip())
                    setting_dict = ast.literal_eval(setting_dict_str) 
 
                    if progress_window.status == "complete" and setting_dict['after-dialog'] == 'yes' :
                        afterdownloadwindow = AfterDownloadWindow(download_info_file_list,setting_file)
                        self.afterdownload_list.append(afterdownloadwindow)
                        self.afterdownload_list[len(self.afterdownload_list) - 1].show()
                    elif progress_window.status == "complete" and setting_dict['after-dialog'] == 'no' :
                        notifySend("Download Complete" ,str(download_info_file_list[0])  , 10000 , 'ok' , systemtray = self.system_tray_icon )



             
                #downloaded
                downloaded = "<b>Downloaded</b> : " + str(download_info_file_list[3]) + "/" + str(download_info_file_list[2])
                progress_window.downloaded_label.setText(downloaded)

                #Transfer rate
                rate = "<b>Transfer rate</b> : " + str(download_info_file_list[6])
                progress_window.rate_label.setText(rate)

                #Estimate time left
                estimate_time_left = "<b>Estimate time left</b> : " + str(download_info_file_list[7]) 
                progress_window.time_label.setText(estimate_time_left)

                #Connections
                connections = "<b>Connections</b> : " + str(download_info_file_list[5])
                progress_window.connections_label.setText(connections)


                #progressbar
                value = download_info_file_list[4]
                file_name = str(download_info_file_list[0])
                if file_name != "***":
                    windows_title = '(' + str(value) + ')' +  str(file_name)
                    progress_window.setWindowTitle(windows_title) 

                value = value[:-1]
                progress_window.download_progressBar.setValue(int(value))



            except :
                pass

        except:
            pass
Пример #24
0
    def __init__(self):
        super().__init__()
        self.statusbar.showMessage('Please Wait ...')

#threads     
        self.threadPool=[]
#starting aria
        start_aria = StartAria2Thread()
        self.threadPool.append(start_aria)
        self.threadPool[0].start() 
        self.threadPool[0].ARIA2RESPONDSIGNAL.connect(self.startAriaMessage)

#initializing    

#add downloads to the download_table
        f_download_list_file = Open(download_list_file)
        download_list_file_lines = f_download_list_file.readlines()
        f_download_list_file.close()
            
        for line in download_list_file_lines:
            gid = line.strip()
            self.download_table.insertRow(0)
            download_info_file = download_info_folder + "/" + gid
            f = Open(download_info_file)
            download_info_file_lines = f.readlines()
            f.close()
            for i in range(10):
                item = QTableWidgetItem(download_info_file_lines[i].strip())
                self.download_table.setItem(0 , i , item)

        row_numbers = self.download_table.rowCount()
        for row in range(row_numbers):
            status = self.download_table.item(row , 1).text() 
            if (status != "complete" and status != "error"):
                gid = self.download_table.item(row,8).text() 
                add_link_dictionary_str = self.download_table.item(row,9).text() 
                add_link_dictionary = ast.literal_eval(add_link_dictionary_str.strip()) 
                add_link_dictionary['start_hour'] = None
                add_link_dictionary['start_minute'] = None
                add_link_dictionary['end_hour'] = None
                add_link_dictionary['end_minute'] = None
                add_link_dictionary['after_download'] = 'None'

                download_info_file = download_info_folder + "/" + gid
                f = Open(download_info_file)
                download_info_file_lines = f.readlines()
                f.close()

                f = Open(download_info_file , "w")
                for i in range(10):
                    if i == 1 :
                        f.writelines("stopped" + "\n")
                        item = QTableWidgetItem('stopped')
                        self.download_table.setItem(row , i , item )
                    elif i == 9 :
                        f.writelines(str(add_link_dictionary) + "\n")
                        item = QTableWidgetItem(str(add_link_dictionary))
                        self.download_table.setItem(row,i , item)
                    else:
                        f.writelines(download_info_file_lines[i].strip() + "\n")

                f.close()
        self.addlinkwindows_list = []
        self.propertieswindows_list = []
        self.progress_window_list = []
        self.progress_window_list_dict = {}

        check_download_info = CheckDownloadInfoThread()
        self.threadPool.append(check_download_info)
        self.threadPool[1].start()
        self.threadPool[1].DOWNLOAD_INFO_SIGNAL.connect(self.checkDownloadInfo)

        check_selected_row = CheckSelectedRowThread()
        self.threadPool.append(check_selected_row)
        self.threadPool[2].start()
        self.threadPool[2].CHECKSELECTEDROWSIGNAL.connect(self.checkSelectedRow)

        check_flashgot = CheckFlashgot()
        self.threadPool.append(check_flashgot)
        self.threadPool[3].start()
        self.threadPool[3].CHECKFLASHGOTSIGNAL.connect(self.checkFlashgot)

        

 

        self.system_tray_icon = QSystemTrayIcon() 
        self.system_tray_icon.setIcon(QIcon('icon'))
        system_tray_menu = QMenu()
        system_tray_menu.addAction(self.addlinkAction)
        system_tray_menu.addAction(self.pauseAllAction)
        system_tray_menu.addAction(self.stopAllAction)
        system_tray_menu.addAction(self.minimizeAction)
        system_tray_menu.addAction(self.exitAction)
        self.system_tray_icon.setContextMenu(system_tray_menu)
        self.system_tray_icon.activated.connect(self.systemTrayPressed)
        self.system_tray_icon.show()
Пример #25
0
        'max-tries': 5,
        'retry-wait': 0,
        'timeout': 60,
        'connections': 16,
        'download_path_temp': download_path_temp,
        'download_path': download_path,
        'sound': 'yes',
        'sound-volume': 90,
        'style': 'Fusion',
        'color-scheme': 'Persepolis Dark Red',
        'icons': 'Archdroid-Red',
        'font': 'Ubuntu',
        'font-size': 9
    }
    f = Open(setting_file, 'w')
    f.writelines(str(default_setting))
    f.close()

f = Open(setting_file)
setting_file_lines = f.readlines()
f.close()
setting_dict_str = str(setting_file_lines[0].strip())
setting_dict = ast.literal_eval(setting_dict_str)

#this section  creates temporary download folder and download folder and download sub folders if they did not existed.
download_path_temp = setting_dict['download_path_temp']
download_path = setting_dict['download_path']
folder_list = [download_path_temp, download_path]
for folder in ['Audios', 'Videos', 'Others', 'Documents', 'Compressed']:
    folder_list.append(download_path + '/' + folder)
Пример #26
0
    def okButtonPressed(self,button):
        global init_file
        f = Open(init_file , "w")
#writing user's input data to init file
        for i in self.ip_lineEdit.text(),self.port_spinBox.value(),self.proxy_user_lineEdit.text(),self.download_user_lineEdit.text()  :
            f.writelines(str(i) + "\n")
        f.close()

        if self.proxy_checkBox.isChecked() == False :
            ip = None
            port = None
            proxy_user = None
            proxy_passwd = None
        else :
            ip = self.ip_lineEdit.text()
            if not(ip):
                ip = None
            port = self.port_spinBox.value()
            if not(port):
                port = None
            proxy_user = self.proxy_user_lineEdit.text()
            if not(proxy_user):
                proxy_user = None
            proxy_passwd = self.proxy_pass_lineEdit.text()
            if not(proxy_passwd):
                proxy_passwd = None

        if self.download_checkBox.isChecked() == False :
            download_user = None
            download_passwd = None
        else :
            download_user = self.download_user_lineEdit.text()
            if not(download_user):
                download_user = None
            download_passwd = self.download_pass_lineEdit.text()
            if not(download_passwd):
                download_passwd = None

        if self.limit_checkBox.isChecked() == False :
            limit = 0
        else :
            if self.limit_comboBox.currentText() == "KB/S" :
                limit = str(self.limit_spinBox.value()) + str("K")
            else :
                limit = str(self.limit_spinBox.value()) + str("M")

        if self.start_checkBox.isChecked() == False :
            start_hour = None
            start_minute = None
        else :
            start_hour = str(self.start_hour_spinBox.value())
            start_minute = str(self.start_minute_spinBox.value())

        if self.end_checkBox.isChecked() == False :
            end_hour = None
            end_minute = None
        else :
            end_hour = str(self.end_hour_spinBox.value())
            end_minute = str(self.end_minute_spinBox.value())
            

        link = self.link_lineEdit.text()

        connections = self.connections_spinBox.value()
        download_path = self.download_folder_lineEdit.text()

        if not ('referer' in self.flashgot_add_link_dictionary) :
            self.flashgot_add_link_dictionary['referer'] = None

        if not ('header' in self.flashgot_add_link_dictionary):
            self.flashgot_add_link_dictionary['header'] = None

        if not ('out' in self.flashgot_add_link_dictionary):
            self.flashgot_add_link_dictionary['out'] = None

        if not('user-agent' in self.flashgot_add_link_dictionary):
            self.flashgot_add_link_dictionary['user-agent'] = None

        if not('load-cookies' in self.flashgot_add_link_dictionary):
            self.flashgot_add_link_dictionary['load-cookies'] = None

        final_download_path = None
        self.add_link_dictionary = {'final_download_path':final_download_path , 'start_hour':start_hour ,'start_minute' : start_minute ,'end_hour' : end_hour ,'end_minute':end_minute , 'link':link , 'ip':ip , 'port':port , 'proxy_user':proxy_user , 'proxy_passwd' : proxy_passwd , 'download_user':download_user , 'download_passwd': download_passwd ,'connections':connections , 'limit':limit, 'download_path':download_path }
        for i in self.flashgot_add_link_dictionary.keys():
            self.add_link_dictionary[i] = self.flashgot_add_link_dictionary[i]

        self.callback(self.add_link_dictionary)


        self.close()
Пример #27
0
    def okButtonPressed(self, button):
        global init_file
        f = Open(init_file, "w")
        #writing user's input data to init file
        for i in self.ip_lineEdit.text(), self.port_spinBox.value(
        ), self.proxy_user_lineEdit.text(), self.download_user_lineEdit.text():
            f.writelines(str(i) + "\n")
        f.close()

        if self.proxy_checkBox.isChecked() == False:
            ip = None
            port = None
            proxy_user = None
            proxy_passwd = None
        else:
            ip = self.ip_lineEdit.text()
            if not (ip):
                ip = None
            port = self.port_spinBox.value()
            if not (port):
                port = None
            proxy_user = self.proxy_user_lineEdit.text()
            if not (proxy_user):
                proxy_user = None
            proxy_passwd = self.proxy_pass_lineEdit.text()
            if not (proxy_passwd):
                proxy_passwd = None

        if self.download_checkBox.isChecked() == False:
            download_user = None
            download_passwd = None
        else:
            download_user = self.download_user_lineEdit.text()
            if not (download_user):
                download_user = None
            download_passwd = self.download_pass_lineEdit.text()
            if not (download_passwd):
                download_passwd = None

        if self.limit_checkBox.isChecked() == False:
            limit = 0
        else:
            if self.limit_comboBox.currentText() == "KB/S":
                limit = str(self.limit_spinBox.value()) + str("K")
            else:
                limit = str(self.limit_spinBox.value()) + str("M")

        if self.start_checkBox.isChecked() == False:
            start_hour = None
            start_minute = None
        else:
            start_hour = str(self.start_hour_spinBox.value())
            start_minute = str(self.start_minute_spinBox.value())

        if self.end_checkBox.isChecked() == False:
            end_hour = None
            end_minute = None
        else:
            end_hour = str(self.end_hour_spinBox.value())
            end_minute = str(self.end_minute_spinBox.value())

        if self.change_name_checkBox.isChecked() == False:
            out = None
        else:
            out = str(self.change_name_lineEdit.text())

        link = self.link_lineEdit.text()

        connections = self.connections_spinBox.value()
        download_path = self.download_folder_lineEdit.text()

        if not ('referer' in self.flashgot_add_link_dictionary):
            self.flashgot_add_link_dictionary['referer'] = None

        if not ('header' in self.flashgot_add_link_dictionary):
            self.flashgot_add_link_dictionary['header'] = None

        if not ('user-agent' in self.flashgot_add_link_dictionary):
            self.flashgot_add_link_dictionary['user-agent'] = None

        if not ('load-cookies' in self.flashgot_add_link_dictionary):
            self.flashgot_add_link_dictionary['load-cookies'] = None

        final_download_path = None
        self.add_link_dictionary = {
            'out': out,
            'final_download_path': final_download_path,
            'start_hour': start_hour,
            'start_minute': start_minute,
            'end_hour': end_hour,
            'end_minute': end_minute,
            'link': link,
            'ip': ip,
            'port': port,
            'proxy_user': proxy_user,
            'proxy_passwd': proxy_passwd,
            'download_user': download_user,
            'download_passwd': download_passwd,
            'connections': connections,
            'limit': limit,
            'download_path': download_path
        }
        for i in self.flashgot_add_link_dictionary.keys():
            self.add_link_dictionary[i] = self.flashgot_add_link_dictionary[i]

        del self.flashgot_add_link_dictionary
        self.callback(self.add_link_dictionary)

        self.close()
Пример #28
0
def compatibility():
    if os.path.isdir(download_info_folder) == True:
        f = Open(download_list_file)
        download_list_file_lines = f.readlines()
        f.close()

        for line in download_list_file_lines:
            gid = line.strip()
            download_info_file = download_info_folder + "/" + gid
            f_download_info_file = Open(download_info_file)
            download_info_file_lines = f_download_info_file.readlines()
            f_download_info_file.close()
            if len(download_info_file_lines) == 10:
                list = []
                for i in range(10):
                    line_strip = download_info_file_lines[i].strip()
                    if i == 9:
                        line_strip = ast.literal_eval(line_strip)
                    list.append(line_strip)
                dictionary = {'list': list}
                os.system('echo "' + str(dictionary) + '"  >  "' +
                          str(download_info_file) + '"')
                f_download_info_file = Open(download_info_file, 'w')
                f_download_info_file.writelines(str(dictionary))
                f_download_info_file.close()

#compatibility between version 2.2 and version 2.3
        date_list = []
        for i in ['%Y', '%m', '%d', '%H', '%M', '%S']:
            date_list.append(time.strftime(i))

        for line in download_list_file_lines:
            gid = line.strip()
            download_info_file = download_info_folder + "/" + gid
            f = Open(download_info_file, 'r')
            f_string = f.readline()
            f.close()
            dictionary = ast.literal_eval(f_string.strip())
            list = dictionary['list']

            if len(list) == 10:
                add_link_dictionary = list[9]
                add_link_dictionary['firs_try_date'] = date_list
                add_link_dictionary['last_try_date'] = date_list

                list[9] = add_link_dictionary

                try_date = str(date_list[0]) + '/' + str(
                    date_list[1]) + '/' + str(date_list[2]) + ' , ' + str(
                        date_list[3]) + ':' + str(date_list[4]) + ':' + str(
                            date_list[5])

                list.append(try_date)
                list.append(try_date)
                list.append('Single Downloads')

                dictionary = {'list': list}
                f = Open(download_info_file, 'w')
                f.writelines(str(dictionary))
                f.close()

                print(str(dictionary))

                f = Open(download_list_file)
                f_lines = f.readlines()
                f.close()

                f = Open(single_downloads_list_file, 'w')
                for line in f_lines:
                    f.writelines(line)

                f.close()
            elif len(list) == 12:
                list.append('Single Downloads')
                dictionary = {'list': list}
                f = Open(download_info_file, 'w')
                f.writelines(str(dictionary))
                f.close()

                f = Open(download_list_file)
                f_lines = f.readlines()
                f.close()

                f = Open(single_downloads_list_file, 'w')
                for line in f_lines:
                    gid = line.strip()
                    f.writelines(gid + '\n')

                f.close()
Пример #29
0
    def deleteSelected(self,menu):
        global remove_flag
        remove_flag = 1
        while remove_flag != 2 :
            sleep(0.1)

        gid_list = []
        for row in range(self.download_table.rowCount()):
            status = self.download_table.item(row , 1).text() 
            item = self.download_table.item(row , 0)
            if (item.checkState() == 2) and (status == 'complete' or status == 'error' or status == 'stopped' ):
                gid = self.download_table.item(row , 8 ).text()
                gid_list.append(gid)


        for gid in gid_list:        
            for i in range(self.download_table.rowCount()):
                row_gid = self.download_table.item(i , 8).text()
                if gid == row_gid :
                    row = i 
                    break
            file_name = self.download_table.item(row , 0).text()
            add_link_dictionary_str = self.download_table.item(row , 9).text() 
            add_link_dictionary = ast.literal_eval(add_link_dictionary_str) 


            sleep(0.5)
            self.download_table.removeRow(row)
#remove gid of download from download list file
            f = Open(download_list_file)
            download_list_file_lines = f.readlines()
            f.close()
            f = Open(download_list_file , "w")
            for i in download_list_file_lines:
                if i.strip() != gid:
                    f.writelines(i.strip() + "\n")
            f.close()
#remove gid of download from active download list file
            f = Open(download_list_file_active)
            download_list_file_active_lines = f.readlines()
            f.close()
            f = Open(download_list_file_active , "w")
            for i in download_list_file_active_lines:
                if i.strip() != gid:
                    f.writelines(i.strip() + "\n")
            f.close()


#remove download_info_file
            download_info_file = download_info_folder + "/" + gid
            f = Open(download_info_file)
            f.close()
            f.remove()

#remove file of download form download temp folder
            if file_name != '***' and status != 'complete' :
                file_name_path = temp_download_folder + "/" +  str(file_name)
                os.system('rm "' + str(file_name_path) +'"')
                file_name_aria = file_name_path + str('.aria2')
                os.system('rm "' + str(file_name_aria) +'"')

#remove download file
            if status == 'complete':
                if 'file_path' in add_link_dictionary:
                    file_path = add_link_dictionary['file_path']
                    if os.path.isfile(file_path):
                        os.system("rm '" + file_path  + "'" )
                    else:
                        notifySend(str(file_path) ,'Not Found' , 5000 , 'warning' , systemtray = self.system_tray_icon )

        remove_flag = 0