def updateMetaData(self): self._checkState() metadata = MetaData() metadata.sync_timestamp = datetime.datetime.now() self.cursor.execute("SELECT count(id) from artists") metadata.artist_count = int(self.cursor.fetchone()[0]) self.cursor.execute("SELECT count(id) from albums") metadata.album_count = int(self.cursor.fetchone()[0]) self.cursor.execute("SELECT count(id) from tracks") metadata.track_count = int(self.cursor.fetchone()[0]) self.cursor.execute("SELECT sum(time) from tracks") metadata.total_time = int(self.cursor.fetchone()[0]) sz = long(0) self.cursor.execute("SELECT file_size from tracks") for row in self.cursor.fetchall(): sz += long(row[0]) metadata.archive_size = "%s" % utils.formatSize(sz) self.cursor.execute("INSERT INTO meta_data "\ "(sync_timestamp, archive_size, "\ "artist_count, album_count, "\ "track_count, total_time) "\ "VALUES (%s, %s, %d, %d, %d, %d)", (str(metadata.sync_timestamp), metadata.archive_size, metadata.artist_count, metadata.album_count, metadata.track_count, metadata.total_time)) return metadata
def updatePackToTable(self, update): data = [] for pack in update: row = [ pack["version"], utils.formatSize(pack["size"]), pack["sysver"] ] data.append(row) return data
def _download_file(self, url, local_filename, size, window, num): text = window["window_main_progress_label"] bar = window["window_main_progress_bar"] size = int(size) chunk_size = 8192 count = 0 already_loaded = 0 total, used, free = shutil.disk_usage(os.path.dirname(local_filename)) if used / total * 100 <= self.config["storageThreshold"]: if free > int(size): with requests.get(url, stream=True, proxies=self.proxies) as r: r.raise_for_status() start = time.perf_counter() with open(local_filename, 'wb') as f: for chunk in r.iter_content(chunk_size=chunk_size): if chunk: f.write(chunk) count += 1 already_loaded = count * chunk_size if already_loaded / size > 1: already_loaded = size percentage = already_loaded / size * 100 text.Update( self.loc.getKey( "window_main_progress_label", [ num, utils.formatSize(already_loaded), utils.formatSize(size), format(float(percentage), '.1f'), utils.formatSize( already_loaded // (time.perf_counter() - start)) + "s" ])) bar.UpdateBar(percentage) window.Refresh() else: self.logger.log(self.loc.getKey("msg_notEnoughDiskSpace"), "e") else: self.logger.log( self.loc.getKey("msg_spaceBelowThreshold", [100 - self.storageThreshold]), "w")
def queueToTable(self, queue, ps3): i = 1 data = [] if len(queue) > 0: for pack in queue: row = [ i, ps3.getTitleNameFromId(pack["gameid"]), pack["gameid"], pack["version"], utils.formatSize(pack["size"]) ] i += 1 data.append(row) else: data.append(["", "", "", "", ""]) return data
def _download_file(self, url, local_filename, size, window, num): text = window["window_main_progress_label"] bar = window["window_main_progress_bar"] size = int(size) chunk_size=8192 count = 0 already_loaded = 0 with requests.get(url, stream=True, proxies=self.proxies) as r: r.raise_for_status() start = time.perf_counter() with open(local_filename, 'wb') as f: for chunk in r.iter_content(chunk_size=chunk_size): if chunk: f.write(chunk) count += 1 already_loaded = count * chunk_size if already_loaded / size > 1: already_loaded = size percentage = already_loaded / size * 100 text.Update(self.loc.getKey("window_main_progress_label", [num, utils.formatSize(already_loaded), utils.formatSize(size), format(float(percentage), '.1f'), utils.formatSize(already_loaded//(time.perf_counter() - start))+"/s"])) bar.UpdateBar(percentage) window.Refresh()
def queueWin(self): self.mainWindow.hide() queueData = self.queueToTable(self.ps3.DlList.queue, self.ps3) layQueue = [ [ sg.Table(values=queueData, headings=[ self.loc.getKey("window_queue_table_num"), self.loc.getKey("window_queue_table_game"), self.loc.getKey("window_queue_table_titleid"), self.loc.getKey("window_queue_table_ver"), self.loc.getKey("window_queue_table_size") ], key="Table", enable_events=True) ], [ sg.Text(self.loc.getKey( "window_queue_totalsize_label", [utils.formatSize(self.ps3.DlList.getTotalDownloadSize()) ]), key="TotalSize", size=(20, 1)) ], [ sg.Text(self.loc.getKey("window_queue_export_label")), sg.Input("", key="exportFile"), sg.FileSaveAs(target="exportFile"), sg.Button(self.loc.getKey("window_queue_export_btn"), key="export") ], [ sg.Button(self.loc.getKey("window_queue_moveup_btn"), key="Move Up", disabled=True), sg.Button(self.loc.getKey("window_queue_movedown_btn"), key="Move Down", disabled=True), sg.Button(self.loc.getKey("window_queue_remove_btn"), key="Remove", disabled=True) ], [ sg.Button(self.loc.getKey("window_queue_download_btn"), key="Download"), sg.Button(self.loc.getKey("window_queue_close_btn"), key="Close") ] ] self.queueWindow = sg.Window(self.loc.getKey("window_queue_title"), layQueue, icon=self.iconpath) while True: evQueue, valQueue = self.queueWindow.read() if len(valQueue["Table"]) == 0: self.queueWindow["Move Up"].Update(disabled=True) self.queueWindow["Move Down"].Update(disabled=True) self.queueWindow["Remove"].Update(disabled=True) if len(valQueue["Table"]) == 1: self.queueWindow["Move Up"].Update(disabled=False) self.queueWindow["Move Down"].Update(disabled=False) self.queueWindow["Remove"].Update(disabled=False) if len(valQueue["Table"]) > 1: self.queueWindow["Move Up"].Update(disabled=True) self.queueWindow["Move Down"].Update(disabled=True) self.queueWindow["Remove"].Update(disabled=False) if evQueue == "Move Up": if len(valQueue["Table"]) == 1: if len(self.ps3.DlList.queue) > 1: self.ps3.DlList.moveUp( self.getCodeFromQueueData(queueData, valQueue["Table"][0])) queueData = self.queueToTable(self.ps3.DlList.queue, self.ps3) self.queueWindow["Table"].Update(values=queueData) if evQueue == "Move Down": if len(valQueue["Table"]) == 1: if len(self.ps3.DlList.queue) > 1: self.ps3.DlList.moveDown( self.getCodeFromQueueData(queueData, valQueue["Table"][0])) queueData = self.queueToTable(ps3.DlList.queue, ps3) self.queueWindow["Table"].Update(values=queueData) if evQueue == "Remove": for row in valQueue["Table"]: code = self.getCodeFromQueueData(queueData, row) self.ps3.DlList.removeEntry(code) queueData = self.queueToTable(self.ps3.DlList.queue, self.ps3) self.queueWindow["Table"].Update(values=queueData) self.queueWindow["TotalSize"].Update( self.loc.getKey("window_queue_totalsize_label", [ utils.formatSize( self.ps3.DlList.getTotalDownloadSize()) ])) if evQueue == "Download": self.tryDl = True self.queueWindow.Close() self.mainWindow.UnHide() break if evQueue == "export" and valQueue["exportFile"] != "": self.ps3.DlList.exportQueue(valQueue["exportFile"]) self.msgBox( self.loc.getKey("window_msgBox_queueExported_label", [valQueue["exportFile"]]), self.loc.getKey("window_msgBox_queueExported_title"), self.queueWindow) if evQueue in (None, "Exit"): self.queueWindow.Close() self.mainWindow.UnHide() break if evQueue == "Close": self.queueWindow.Close() self.mainWindow.UnHide() break
def upload_project_file(request): """ 上传项目文件 :param request: :return: """ # 获取所有用户 user_info = get_all_users(request) file = request.FILES.get('file', '') pid = request.POST.get('pid', '') name = file.name user = request.session['id'] import os try: # 根据时间戳存储文件 now = int(time.time()) ext = file.name.split('.')[-1] file_first_name = '.'.join(file.name.split('.')[:-1]) file_name = file_first_name + str(now) file_full_name = file_name + '.' + ext file_path = os.path.join(os.path.dirname(__file__), 'static/appfile/', file_full_name) with open(file_path, 'wb') as f: for item in file.chunks(): f.write(item) except Exception as e: logger.error(u'文件写入失败', e) return render_json({'result': False, 'message': u'文件写入失败'}) # 获取文件大小 try: size = os.path.getsize(file_path) new_size = formatSize(size) except Exception as e: logger.error(u"获取文件大小失败", e) return render_json({'result': False, 'message': u"获取文件大小失败"}) try: file = ProjectFile.objects.create(project_id=pid, name=name, user=user, size=new_size, path='static/appfile/' + file_full_name) except Exception as e: logger.error(u"上传文件失败", e) return render_json({'result': False, 'message': u"上传文件失败"}) file_list = [] user = user_info[int(file.user)] name = user['name'] ext = file.path.split('.')[-1] file_list.append({ 'fid': file.pk, 'name': file.name, 'size': file.size, 'user': name, 'path': file.path, 'ext': ext, 'create_time': file.create_time.strftime('%Y-%m-%d') }) return render_json({'result': True, 'data': file_list})