コード例 #1
0
    def add_package(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.pyload.config.get("general", "folder_per_package"):
            folder = urlparse.urlparse(name).path.split("/")[-1]
        else:
            folder = ""

        folder = safe_filename(folder)

        pid = self.pyload.files.add_package(name, folder, dest)

        self.pyload.files.add_links(links, pid)

        self.pyload.log.info(_("Added package %(name)s containing %(count)d links") % {"name": decode(name), "count": len(links)})

        self.pyload.files.save()

        return pid
コード例 #2
0
    def create_packages(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.pyload.config.get("general", "folder_per_package")
        try:
            use_subfolder = self.get_config('use_subfolder')
        except Exception:
            use_subfolder = folder_per_package
        try:
            subfolder_per_package = self.get_config('subfolder_per_package')
        except Exception:
            subfolder_per_package = True

        for pack in self.packages:
            name, links, folder = pack

            self.log_debug("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.pyload.api.add_package(name, links, package_queue)

            if package_password:
                self.pyload.api.set_package_data(pid, {"password": package_password})

            setFolder = lambda x: self.pyload.api.set_package_data(pid, {"folder": x or ""})  #: Workaround to do not break API addPackage method

            if use_subfolder:
                if not subfolder_per_package:
                    setFolder(package_folder)
                    self.log_debug("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.urlparse(name).path.split("/")[-1]

                    setFolder(safe_filename(folder))
                    self.log_debug("Set package %(name)s folder to: %(folder)s" % {"name": name, "folder": folder})

            elif folder_per_package:
                setFolder(None)
コード例 #3
0
 def folder(self):
     return safe_filename(self._folder)
コード例 #4
0
        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.dispatch_event("download-start", self.pyfile, url, filename)

        try:
            newname = self.req.http_download(url, filename, get=get, post=post, ref=ref, cookies=cookies,
                                            chunks=self.get_chunk_count(), 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]