def renderHeader(self, line): """ prints download status """ #print updated information # print "\033[J" #clear screen # self.println(1, blue("py") + yellow("Load") + white(_(" Command Line Interface"))) # self.println(2, "") # self.println(3, white(_("%s Downloads:") % (len(data)))) data = self.client.statusDownloads() speed = 0 println(line, white(_("%s Downloads:") % (len(data)))) line += 1 for download in data: if download.status == 12: # downloading percent = download.percent z = percent / 4 speed += download.speed println(line, cyan(download.name)) line += 1 println( line, blue("[") + yellow(z * "#" + (25 - z) * " ") + blue("] ") + green(str(percent) + "%") + _(" Speed: ") + green(formatSize(download.speed) + "/s") + _(" Size: ") + green(download.format_size) + _(" Finished in: ") + green(download.format_eta) + _(" ID: ") + green(download.fid)) line += 1 if download.status == 5: println(line, cyan(download.name)) line += 1 println(line, _("waiting: ") + green(download.format_wait)) line += 1 println(line, "") line += 1 status = self.client.statusServer() if status.pause: paused = _("Status:") + " " + red(_("paused")) else: paused = _("Status:") + " " + red(_("running")) println( line, "%s %s: %s %s: %s %s: %s" % (paused, _("total Speed"), red(formatSize(speed) + "/s"), _("Files in queue"), red( status.queue), _("Total"), red(status.total))) return line + 1
def getAllLinks(self, q): """return information about all links in queue q q0 queue q1 collector format: { id: {'name': name, ... 'package': id }, ... } """ self.c.execute( "SELECT l.id, l.url, l.name, l.size, l.status, l.error, l.plugin, l.package, l.linkorder FROM links as l INNER JOIN packages as p ON l.package=p.id WHERE p.queue=? ORDER BY l.linkorder", (q,), ) data = {} for r in self.c: data[r[0]] = { "id": r[0], "url": r[1], "name": r[2], "size": r[3], "format_size": formatSize(r[3]), "status": r[4], "statusmsg": self.manager.statusMsg[r[4]], "error": r[5], "plugin": tuple(r[6].split(".")), "package": r[7], "order": r[8], } return data
def getAllLinks(self, q): """return information about all links in queue q q0 queue q1 collector format: { id: {'name': name, ... 'package': id }, ... } """ self.c.execute('SELECT l.id, l.url, l.name, l.size, l.status, l.error, l.plugin, l.package, l.linkorder FROM links as l INNER JOIN packages as p ON l.package=p.id WHERE p.queue=? ORDER BY l.linkorder', (q,)) data = {} for r in self.c: data[r[0]] = { 'id': r[0], 'url': r[1], 'name': r[2], 'size': r[3], 'format_size': formatSize(r[3]), 'status': r[4], 'statusmsg': self.manager.statusMsg[r[4]], 'error': r[5], 'plugin': tuple(r[6].split('.')), 'package': r[7], 'order': r[8], } return data
def renderHeader(self, line): """ prints download status """ # print updated information # print "\033[J" #: clear screen # self.println(1, blue("py") + yellow("Load") + white(_(" Command Line Interface"))) # self.println(2, "") # self.println(3, white(_("%s Downloads:") % (len(data)))) data = self.client.statusDownloads() speed = 0 println(line, white(_("%s Downloads:") % (len(data)))) line += 1 for download in data: if download.status == 12: #: downloading percent = download.percent z = percent / 4 speed += download.speed println(line, cyan(download.name)) line += 1 println(line, blue("[") + yellow(z * "#" + (25 - z) * " ") + blue("] ") + green(str(percent) + "%") + _( " Speed: ") + green(formatSize(download.speed) + "/s") + _(" Size: ") + green( download.format_size) + _(" Finished in: ") + green(download.format_eta) + _( " ID: ") + green(download.fid)) line += 1 if download.status == 5: println(line, cyan(download.name)) line += 1 println(line, _("waiting: ") + green(download.format_wait)) line += 1 println(line, "") line += 1 status = self.client.statusServer() if status.pause: paused = _("Status:") + " " + red(_("paused")) else: paused = _("Status:") + " " + red(_("running")) println(line, "%s %s: %s %s: %s %s: %s" % ( paused, _("total Speed"), red(formatSize(speed) + "/s"), _("Files in queue"), red( status.queue), _("Total"), red(status.total))) return line + 1
def config(): conf = PYLOAD.getConfig() plugin = PYLOAD.getPluginConfig() conf_menu = [] plugin_menu = [] for entry in sorted(conf.keys()): conf_menu.append((entry, conf[entry].description)) last_name = None for entry in sorted(plugin.keys()): desc = plugin[entry].description name, none, type = desc.partition("_") if type in PYLOAD.core.pluginManager.TYPES: if name == last_name or len([a for a, b in plugin.iteritems() if b.description.startswith(name + "_")]) > 1: desc = name + " (" + type.title() + ")" else: desc = name last_name = name plugin_menu.append((entry, desc)) accs = PYLOAD.getAccounts(False) for data in accs: if data.trafficleft == -1: data.trafficleft = _("unlimited") elif not data.trafficleft: data.trafficleft = _("not available") else: data.trafficleft = formatSize(data.trafficleft) if data.validuntil == -1: data.validuntil = _("unlimited") elif not data.validuntil: data.validuntil = _("not available") else: t = time.localtime(data.validuntil) data.validuntil = time.strftime("%d.%m.%Y - %H:%M:%S", t) try: data.options['time'] = data.options['time'][0] except Exception: data.options['time'] = "0:00-0:00" if "limitDL" in data.options: data.options['limitdl'] = data.options['limitDL'][0] else: data.options['limitdl'] = "0" return render_to_response('settings.html', {'conf': {'plugin': plugin_menu, 'general': conf_menu, 'accs': accs}, 'types': PYLOAD.getAccountTypes()}, [pre_processor])
def printOnlineCheck(self, client, rid): while True: sleep(1) result = client.pollResults(rid) for url, status in result.data.iteritems(): if status.status == 2: check = "Online" elif status.status == 1: check = "Offline" else: check = "Unknown" print "%-45s %-12s\t %-15s\t %s" % (status.name, formatSize(status.size), status.plugin, check) if result.rid == -1: break
def info(): conf = PYLOAD.getConfigDict() extra = os.uname() if hasattr(os, "uname") else tuple() data = {"python" : sys.version, "os" : " ".join((os.name, sys.platform) + extra), "version" : PYLOAD.getServerVersion(), "folder" : os.path.abspath(PYLOAD_DIR), "config": os.path.abspath(""), "download" : os.path.abspath(conf['general']['download_folder']['value']), "freespace": formatSize(PYLOAD.freeSpace()), "remote" : conf['remote']['port']['value'], "webif" : conf['webui']['port']['value'], "language" : conf['general']['language']['value']} return render_to_response("info.html", data, [pre_processor])
def info(): conf = PYLOAD.getConfigDict() extra = os.uname() if hasattr(os, "uname") else tuple() data = { "python": sys.version, "os": " ".join((os.name, sys.platform) + extra), "version": PYLOAD.getServerVersion(), "folder": abspath(PYLOAD_DIR), "config": abspath(""), "download": abspath(conf['general']['download_folder']['value']), "freespace": formatSize(PYLOAD.freeSpace()), "remote": conf['remote']['port']['value'], "webif": conf['webui']['port']['value'], "language": conf['general']['language']['value'] } return render_to_response("info.html", data, [pre_processor])
def event_status(self, args): downloads = self.core.api.statusDownloads() if not downloads: return ["INFO: There are no active downloads currently."] temp_progress = "" lines = ["ID - Name - Status - Speed - ETA - Progress"] for data in downloads: if data.status == 5: temp_progress = data.format_wait else: temp_progress = "%d%% (%s)" % (data.percent, data.format_size) lines.append("#%d - %s - %s - %s - %s - %s" % (data.fid, data.name, data.statusmsg, "%s/s" % formatSize(data.speed), "%s" % data.format_eta, temp_progress)) return lines
def getPackageData(self, id): """get data about links for a package""" self.c.execute('SELECT id, url, name, size, status, error, plugin, package, linkorder FROM links WHERE package=? ORDER BY linkorder', (str(id),)) data = {} for r in self.c: data[r[0]] = { 'id': r[0], 'url': r[1], 'name': r[2], 'size': r[3], 'format_size': formatSize(r[3]), 'status': r[4], 'statusmsg': self.manager.statusMsg[r[4]], 'error': r[5], 'plugin': tuple(r[6].split('.')), 'package': r[7], 'order': r[8], } return data
def links(): try: links = [toDict(x) for x in PYLOAD.statusDownloads()] ids = [] for link in links: ids.append(link['fid']) if link['status'] == 12: link['info'] = "%s @ %s/s" % (link['format_eta'], formatSize(link['speed'])) elif link['status'] == 5: link['percent'] = 0 link['size'] = 0 link['bleft'] = 0 link['info'] = _("waiting %s") % link['format_wait'] else: link['info'] = "" data = {'links': links, 'ids': ids} return data except Exception, e: traceback.print_exc() return HTTPError()
def links(): try: links = [toDict(x) for x in PYLOAD.statusDownloads()] ids = [] for link in links: ids.append(link['fid']) if link['status'] == 12: link['info'] = "%s @ %s/s" % (link['format_eta'], formatSize(link['speed'])) elif link['status'] == 5: link['percent'] = 0 link['size'] = 0 link['bleft'] = 0 link['info'] = _("waiting %s") % link['format_wait'] else: link['info'] = "" data = {'links': links, 'ids': ids} return data except Exception, e: print_exc() return HTTPError()
def getLinkData(self, id): """get link information as dict""" self.c.execute('SELECT id, url, name, size, status, error, plugin, package, linkorder FROM links WHERE id=?', (str(id),)) data = {} r = self.c.fetchone() if not r: return None data[r[0]] = { 'id': r[0], 'url': r[1], 'name': r[2], 'size': r[3], 'format_size': formatSize(r[3]), 'status': r[4], 'statusmsg': self.manager.statusMsg[r[4]], 'error': r[5], 'plugin': tuple(r[6].split('.')), 'package': r[7], 'order': r[8], } return data
def event_status(self, args): downloads = self.core.api.statusDownloads() if not downloads: return ["INFO: There are no active downloads currently."] temp_progress = "" lines = ["ID - Name - Status - Speed - ETA - Progress"] for data in downloads: if data.status == 5: temp_progress = data.format_wait else: temp_progress = "%d%% (%s)" % (data.percent, data.format_size) lines.append("#%d - %s - %s - %s - %s - %s" % ( data.fid, data.name, data.statusmsg, "%s/s" % formatSize(data.speed), "%s" % data.format_eta, temp_progress )) return lines
def getPackageData(self, id): """get data about links for a package""" self.c.execute( "SELECT id, url, name, size, status, error, plugin, package, linkorder FROM links WHERE package=? ORDER BY linkorder", (str(id),), ) data = {} for r in self.c: data[r[0]] = { "id": r[0], "url": r[1], "name": r[2], "size": r[3], "format_size": formatSize(r[3]), "status": r[4], "statusmsg": self.manager.statusMsg[r[4]], "error": r[5], "plugin": tuple(r[6].split(".")), "package": r[7], "order": r[8], } return data
def getLinkData(self, id): """get link information as dict""" self.c.execute( "SELECT id, url, name, size, status, error, plugin, package, linkorder FROM links WHERE id=?", (str(id),) ) data = {} r = self.c.fetchone() if not r: return None data[r[0]] = { "id": r[0], "url": r[1], "name": r[2], "size": r[3], "format_size": formatSize(r[3]), "status": r[4], "statusmsg": self.manager.statusMsg[r[4]], "error": r[5], "plugin": tuple(r[6].split(".")), "package": r[7], "order": r[8], } return data
def formatSize(self): """ formats size to readable format """ return formatSize(self.getSize())
def processCommand(self): command = self.command[0] args = [] if len(self.command) > 1: args = self.command[1:] if command == "status": files = self.client.statusDownloads() if not files: print "No downloads running." for download in files: if download.status == 12: # downloading print print_status(download) print "\tDownloading: %s @ %s/s\t %s (%s%%)" % ( download.format_eta, formatSize(download.speed), formatSize(download.size - download.bleft), download.percent) elif download.status == 5: print print_status(download) print "\tWaiting: %s" % download.format_wait else: print print_status(download) elif command == "queue": print_packages(self.client.getQueueData()) elif command == "collector": print_packages(self.client.getCollectorData()) elif command == "add": if len(args) < 2: print _("Please use this syntax: add <Package name> <link> <link2> ...") return self.client.addPackage(args[0], args[1:], Destination.Queue, "") elif command == "add_coll": if len(args) < 2: print _("Please use this syntax: add <Package name> <link> <link2> ...") return self.client.addPackage(args[0], args[1:], Destination.Collector, "") elif command == "del_file": self.client.deleteFiles([int(x) for x in args]) print "Files deleted." elif command == "del_package": self.client.deletePackages([int(x) for x in args]) print "Packages deleted." elif command == "move": for pid in args: pack = self.client.getPackageInfo(int(pid)) self.client.movePackage((pack.dest + 1) % 2, pack.pid) elif command == "check": print _("Checking %d links:") % len(args) print rid = self.client.checkOnlineStatus(args).rid self.printOnlineCheck(self.client, rid) elif command == "check_container": path = args[0] if not exists(join(owd, path)): print _("File does not exists.") return f = open(join(owd, path), "rb") content = f.read() f.close() rid = self.client.checkOnlineStatusContainer([], basename(f.name), content).rid self.printOnlineCheck(self.client, rid) elif command == "pause": self.client.pauseServer() elif command == "unpause": self.client.unpauseServer() elif command == "toggle": self.client.togglePause() elif command == "kill": self.client.kill() elif command == "restart_file": for x in args: self.client.restartFile(int(x)) print "Files restarted." elif command == "restart_package": for pid in args: self.client.restartPackage(int(pid)) print "Packages restarted." else: print_commands()
def processCommand(self): command = self.command[0] args = [] if len(self.command) > 1: args = self.command[1:] if command == "status": files = self.client.statusDownloads() if not files: print "No downloads running." for download in files: if download.status == 12: #: downloading print print_status(download) print "\tDownloading: %s @ %s/s\t %s (%s%%)" % ( download.format_eta, formatSize(download.speed), formatSize(download.size - download.bleft), download.percent) elif download.status == 5: print print_status(download) print "\tWaiting: %s" % download.format_wait else: print print_status(download) elif command == "queue": print_packages(self.client.getQueueData()) elif command == "collector": print_packages(self.client.getCollectorData()) elif command == "add": if len(args) < 2: print _("Please use this syntax: add <Package name> <link> <link2> ...") return self.client.addPackage(args[0], args[1:], Destination.Queue) elif command == "add_coll": if len(args) < 2: print _("Please use this syntax: add <Package name> <link> <link2> ...") return self.client.addPackage(args[0], args[1:], Destination.Collector) elif command == "del_file": self.client.deleteFiles([int(x) for x in args]) print "Files deleted." elif command == "del_package": self.client.deletePackages([int(x) for x in args]) print "Packages deleted." elif command == "move": for pid in args: pack = self.client.getPackageInfo(int(pid)) self.client.movePackage((pack.dest + 1) % 2, pack.pid) elif command == "check": print _("Checking %d links:") % len(args) print rid = self.client.checkOnlineStatus(args).rid self.printOnlineCheck(self.client, rid) elif command == "check_container": path = args[0] if not exists(join(owd, path)): print _("File does not exists.") return with open(join(owd, path), "rb") as f: content = f.read() rid = self.client.checkOnlineStatusContainer([], basename(f.name), content).rid self.printOnlineCheck(self.client, rid) elif command == "pause": self.client.pause() elif command == "unpause": self.client.unpause() elif command == "toggle": self.client.togglePause() elif command == "kill": self.client.kill() elif command == "restart_file": for x in args: self.client.restartFile(int(x)) print "Files restarted." elif command == "restart_package": for pid in args: self.client.restartPackage(int(pid)) print "Packages restarted." else: print_commands()