示例#1
0
    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))
示例#2
0
	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))
示例#3
0
    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)
示例#4
0
文件: importer.py 项目: GDXN/MangaCMS
	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)
示例#5
0
    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
示例#6
0
	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