def addPackage(self, name, links, dest=Destination.Queue): """Adds a package, with links to desired destination. :param name: name of the new package :param links: list of urls :param dest: `Destination` :return: package id of the new package """ if self.core.config.get("general", "folder_per_package"): folder = urlparse(name).path.split("/")[-1] else: folder = "" folder = safe_filename(folder) pid = self.core.files.addPackage(name, folder, dest) self.core.files.addLinks(links, pid) self.core.log.info( _("Added package %(name)s containing %(count)d links") % { "name": name, "count": len(links) }) self.core.files.save() return pid
def createPackages(self): """ create new packages from self.packages """ package_folder = self.pyfile.package().folder package_password = self.pyfile.package().password package_queue = self.pyfile.package().queue folder_per_package = self.core.config.get("general", "folder_per_package") try: use_subfolder = self.getConfig('use_subfolder') except Exception: use_subfolder = folder_per_package try: subfolder_per_package = self.getConfig('subfolder_per_package') except Exception: subfolder_per_package = True for pack in self.packages: name, links, folder = pack self.logDebug( "Parsed package: %s" % name, "%d links" % len(links), "Saved to folder: %s" % folder if folder else "Saved to download folder") links = map(decode, links) pid = self.core.api.addPackage(name, links, package_queue) if package_password: self.core.api.setPackageData(pid, {"password": package_password}) setFolder = lambda x: self.core.api.setPackageData( pid, {"folder": x or ""} ) #: Workaround to do not break API addPackage method if use_subfolder: if not subfolder_per_package: setFolder(package_folder) self.logDebug( "Set package %(name)s folder to: %(folder)s" % { "name": name, "folder": folder }) elif not folder_per_package or name != folder: if not folder: folder = urlparse(name).path.split("/")[-1] setFolder(safe_filename(folder)) self.logDebug( "Set package %(name)s folder to: %(folder)s" % { "name": name, "folder": folder }) elif folder_per_package: setFolder(None)
def createPackages(self): """ create new packages from self.packages """ package_folder = self.pyfile.package().folder package_password = self.pyfile.package().password package_queue = self.pyfile.package().queue folder_per_package = self.core.config.get("general", "folder_per_package") try: use_subfolder = self.getConfig('use_subfolder') except Exception: use_subfolder = folder_per_package try: subfolder_per_package = self.getConfig('subfolder_per_package') except Exception: subfolder_per_package = True for pack in self.packages: name, links, folder = pack self.logDebug("Parsed package: %s" % name, "%d links" % len(links), "Saved to folder: %s" % folder if folder else "Saved to download folder") links = map(decode, links) pid = self.core.api.addPackage(name, links, package_queue) if package_password: self.core.api.setPackageData(pid, {"password": package_password}) setFolder = lambda x: self.core.api.setPackageData(pid, {"folder": x or ""}) #: Workaround to do not break API addPackage method if use_subfolder: if not subfolder_per_package: setFolder(package_folder) self.logDebug("Set package %(name)s folder to: %(folder)s" % {"name": name, "folder": folder}) elif not folder_per_package or name != folder: if not folder: folder = urlparse(name).path.split("/")[-1] setFolder(safe_filename(folder)) self.logDebug("Set package %(name)s folder to: %(folder)s" % {"name": name, "folder": folder}) elif folder_per_package: setFolder(None)
def addPackage(self, name, links, dest=Destination.Queue): """Adds a package, with links to desired destination. :param name: name of the new package :param links: list of urls :param dest: `Destination` :return: package id of the new package """ if self.core.config.get("general", "folder_per_package"): folder = urlparse.urlparse(name).path.split("/")[-1] else: folder = "" folder = safe_filename(folder) pid = self.core.files.addPackage(name, folder, dest) self.core.files.addLinks(links, pid) self.core.log.info(_("Added package %(name)s containing %(count)d links") % {"name": name.decode('utf-8'), "count": len(links)}) self.core.files.save() return pid
int(self.core.config.get("permission", "folder"), 8)) if self.core.config.get("permission", "change_dl") and os.name != "nt": uid = pwd.getpwnam( self.core.config.get("permission", "user"))[2] gid = grp.getgrnam( self.core.config.get("permission", "group"))[2] os.chown(location, uid, gid) except Exception, e: self.fail(e) # convert back to unicode location = fs_decode(location) name = safe_filename(self.pyfile.name) filename = os.path.join(location, name) self.core.addonManager.dispatchEvent("download-start", self.pyfile, url, filename) try: newname = self.req.httpDownload( url, filename, get=get, post=post, ref=ref, cookies=cookies, chunks=self.getChunkCount(),
if not os.path.exists(location): try: os.makedirs(location, int(self.core.config.get("permission", "folder"), 8)) if self.core.config.get("permission", "change_dl") and os.name != "nt": uid = pwd.getpwnam(self.core.config.get("permission", "user"))[2] gid = grp.getgrnam(self.core.config.get("permission", "group"))[2] os.chown(location, uid, gid) except Exception, e: self.fail(e) # convert back to unicode location = fs_decode(location) name = safe_filename(self.pyfile.name) filename = os.path.join(location, name) self.core.addonManager.dispatchEvent("download-start", self.pyfile, url, filename) try: newname = self.req.httpDownload(url, filename, get=get, post=post, ref=ref, cookies=cookies, chunks=self.getChunkCount(), resume=self.resumeDownload, progressNotify=self.pyfile.setProgress, disposition=disposition) finally: self.pyfile.size = self.req.size if newname: newname = urlparse.urlparse(newname).path.split('/')[-1]
def folder(self): return safe_filename(self._folder)
def folder(self): return safe_filename(self._folder)