diff options
Diffstat (limited to 'module/plugins/hooks/UnSkipOnFail.py')
| -rw-r--r-- | module/plugins/hooks/UnSkipOnFail.py | 95 | 
1 files changed, 0 insertions, 95 deletions
diff --git a/module/plugins/hooks/UnSkipOnFail.py b/module/plugins/hooks/UnSkipOnFail.py deleted file mode 100644 index 1becb937a..000000000 --- a/module/plugins/hooks/UnSkipOnFail.py +++ /dev/null @@ -1,95 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.PyFile import PyFile -from module.plugins.Hook import Hook - - -class UnSkipOnFail(Hook): -    __name__    = "UnSkipOnFail" -    __type__    = "hook" -    __version__ = "0.05" - -    __config__ = [("activated", "bool", "Activated", True)] - -    __description__ = """Queue skipped duplicates when download fails""" -    __license__     = "GPLv3" -    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")] - - -    #@TODO: Remove in 0.4.10 -    def initPeriodical(self): -        pass - - -    def downloadFailed(self, pyfile): -        #: Check if pyfile is still "failed", -        #  maybe might has been restarted in meantime -        if pyfile.status != 8: -            return - -        msg = _("Looking for skipped duplicates of: %s (pid:%s)") -        self.logInfo(msg % (pyfile.name, pyfile.package().id)) - -        dup = self.findDuplicate(pyfile) -        if dup: -            self.logInfo(_("Queue found duplicate: %s (pid:%s)") % (dup.name, dup.packageID)) - -            #: Change status of "link" to "new_status". -            #  "link" has to be a valid FileData object, -            #  "new_status" has to be a valid status name -            #  (i.e. "queued" for this Plugin) -            #  It creates a temporary PyFile object using -            #  "link" data, changes its status, and tells -            #  the core.files-manager to save its data. -            pylink = _pyfile(link) - -            pylink.setCustomStatus("UnSkipOnFail", "queued") - -            self.core.files.save() -            pylink.release() - -        else: -            self.logInfo(_("No duplicates found")) - - -    def findDuplicate(self, pyfile): -        """ Search all packages for duplicate links to "pyfile". -            Duplicates are links that would overwrite "pyfile". -            To test on duplicity the package-folder and link-name -            of twolinks are compared (link.name). -            So this method returns a list of all links with equal -            package-folders and filenames as "pyfile", but except -            the data for "pyfile" iotselöf. -            It does MOT check the link's status. -        """ -        queue = self.core.api.getQueue()  #: get packages (w/o files, as most file data is useless here) - -        for package in queue: -            #: check if package-folder equals pyfile's package folder -            if package.folder != pyfile.package().folder: -                continue - -            #: now get packaged data w/ files/links -            pdata = self.core.api.getPackageData(package.pid) -            for link in pdata.links: -                #: check if link is "skipped" -                if link.status != 4: -                    continue - -                #: check if link name collides with pdata's name -                #: AND at last check if it is not pyfile itself -                if link.name == pyfile.name and link.fid != pyfile.id: -                    return link - - -    def _pyfile(self, link): -        return PyFile(self.core.files, -                      link.fid, -                      link.url, -                      link.name, -                      link.size, -                      link.status, -                      link.error, -                      link.plugin, -                      link.packageID, -                      link.order)  | 
