def scanSingleDir(self, dirPath): print("Dir", dirPath) items = os.listdir(dirPath) items.sort() for item in items: item = os.path.join(dirPath, item) if os.path.isfile(item): fPath, fName = os.path.split(item) guessName = nt.guessSeriesFromFilename(fName) dirName = fPath.strip("/").split("/")[-1] guess2 = nt.guessSeriesFromFilename(dirName) if guessName != guess2: print("Dirname not matching either?", dirName, guessName) if guessName in nt.dirNameProxy: itemInfo = nt.dirNameProxy[guessName] if itemInfo["fqPath"] != dirPath: dstDir = nt.dirNameProxy[guessName]["fqPath"] print("Move file '%s' from:" % fName) print(" Src = '%s'" % fPath) print(" Dst = '%s'" % dstDir) doMove = query_response_bool("Do move?") if doMove: shutil.move(item, os.path.join(dstDir, fName))
def scanSingleDir(self, dirPath): self.log.info("Dir %s", dirPath) items = os.listdir(dirPath) items.sort() for item in items: item = os.path.join(dirPath, item) if os.path.isfile(item): fPath, fName = os.path.split(item) guessName = nt.guessSeriesFromFilename(fName) dirName = fPath.strip("/").split("/")[-1] guess2 = nt.guessSeriesFromFilename(dirName) dist = lv.distance(guessName, guess2) # Assumption: The filename probably has shit tacked onto it. # Therefore, the allowable edit distance delta is the extent to # which the filename is longer then the dirname normed = dist - (len(guessName) - len(guess2)) if normed > 0: self.log.warning("Wat: %s", (normed, item, guessName, guess2)) elif normed < 0: self.log.error("Wat: %s", (normed, item, guessName, guess2)) else: if guess2 in nt.dirNameProxy and nt.dirNameProxy[guess2][ "fqPath"]: itemInfo = nt.dirNameProxy[guess2] # print(itemInfo) if itemInfo["fqPath"] != dirPath: dstDir = itemInfo["fqPath"] print("Move file '%s' from:" % fName) print(" Src = '%s'" % fPath) print(" Dst = '%s'" % dstDir) dstPath = os.path.join(dstDir, fName) try: shutil.move(item, dstPath) # Set pron to True, to prevent accidental uploading. processDownload.processDownload( guess2, dstPath, deleteDups=True, includePHash=True, pron=True, crossReference=False) except KeyboardInterrupt: shutil.move(dstPath, item) raise else: print("No match: ", fName)
def scanSingleDir(self, dirPath): self.log.info("Dir %s", dirPath) items = os.listdir(dirPath) items.sort() for item in items: item = os.path.join(dirPath, item) if os.path.isfile(item): fPath, fName = os.path.split(item) guessName = nt.guessSeriesFromFilename(fName) dirName = fPath.strip("/").split("/")[-1] guess2 = nt.guessSeriesFromFilename(dirName) dist = lv.distance(guessName, guess2) # Assumption: The filename probably has shit tacked onto it. # Therefore, the allowable edit distance delta is the extent to # which the filename is longer then the dirname normed = dist - (len(guessName) - len(guess2)) if normed > 0: self.log.warning("Wat: %s", (normed, item, guessName, guess2)) elif normed < 0: self.log.error("Wat: %s", (normed, item, guessName, guess2)) else: if guess2 in nt.dirNameProxy and nt.dirNameProxy[guess2]["fqPath"]: itemInfo = nt.dirNameProxy[guess2] # print(itemInfo) if itemInfo["fqPath"] != dirPath: dstDir = itemInfo["fqPath"] print("Move file '%s' from:" % fName) print(" Src = '%s'" % fPath) print(" Dst = '%s'" % dstDir) dstPath = os.path.join(dstDir, fName) try: shutil.move(item, dstPath) # Set pron to True, to prevent accidental uploading. processDownload.processDownload(guess2, dstPath, deleteDups=True, includePHash=True, pron=True, crossReference=False) except KeyboardInterrupt: shutil.move(dstPath, item) raise else: print("No match: ", fName)
def getDownloadPath(self, item, fName): if not item['seriesName']: self.log.info("No series set for item. Guessing from filename:") self.log.info("Filename = '%s'", fName) bareName = nt.guessSeriesFromFilename(fName) # if not matchName or not matchName in nt.dirNameProxy: if not nt.haveCanonicalMangaUpdatesName(bareName): item["seriesName"] = settings.ircBot["unknown-series"] else: item["seriesName"] = nt.getCanonicalMangaUpdatesName(bareName) self.log.info("Guessed = '%s'. Updating series information", item['seriesName']) self.updateDbEntry(item["sourceUrl"], seriesName=item["seriesName"]) dlPath, newDir = self.locateOrCreateDirectoryForSeries( item["seriesName"]) if item["flags"] == None: item["flags"] = "" if newDir: self.updateDbEntry(item["sourceUrl"], flags=" ".join([item["flags"], "haddir"])) self.conn.commit() fqFName = os.path.join(dlPath, fName) loop = 1 fName, ext = os.path.splitext(fName) while os.path.exists(fqFName): fName = "%s - (%d).%s" % (fName, loop, ext) fqFName = os.path.join(dlPath, fName) loop += 1 self.log.info("Saving to archive = %s", fqFName) self.updateDbEntry(item["sourceUrl"], downloadPath=dlPath, fileName=fName, originName=fName) return fqFName
def getDownloadPath(self, item, fName): if not item['seriesName']: self.log.info("No series set for item. Guessing from filename:") self.log.info("Filename = '%s'", fName) bareName = nt.guessSeriesFromFilename(fName) # if not matchName or not matchName in nt.dirNameProxy: if not nt.haveCanonicalMangaUpdatesName(bareName): item["seriesName"] = settings.ircBot["unknown-series"] else: item["seriesName"] = nt.getCanonicalMangaUpdatesName(bareName) self.log.info("Guessed = '%s'. Updating series information", item['seriesName']) self.updateDbEntry(item["sourceUrl"], seriesName=item["seriesName"]) dlPath, newDir = self.locateOrCreateDirectoryForSeries(item["seriesName"]) if item["flags"] == None: item["flags"] = "" if newDir: self.updateDbEntry(item["sourceUrl"], flags=" ".join([item["flags"], "haddir"])) self.conn.commit() fqFName = os.path.join(dlPath, fName) loop = 1 fName, ext = os.path.splitext(fName) while os.path.exists(fqFName): fName = "%s - (%d).%s" % (fName, loop, ext) fqFName = os.path.join(dlPath, fName) loop += 1 self.log.info("Saving to archive = %s", fqFName) self.updateDbEntry(item["sourceUrl"], downloadPath=dlPath, fileName=fName, originName=fName) return fqFName