diff --git a/tools/f2f.py b/tools/f2f.py new file mode 100644 index 0000000..5f5eb83 --- /dev/null +++ b/tools/f2f.py @@ -0,0 +1,128 @@ +# Author: Andrea Mele +# E-mail: andme44@gmial.com +# Websites: +# http://www.github.com/AndreaMele +# http://www.artstation.com/AndreaMele +# Project: Files 2 Folders +""" +My scipt for dealing with Radarr Bulk Import + +Takes all files, creates directories out of filenames. +Meant to be used after filebot or other pre-organized media files. + +Handles duplicate filenames and clean up. +""" + +import sys +import os +from pathlib import Path +import os.path +import shutil + + +def f2f(): + os.chdir(sys.path[0]) + filecounter = 0 + tempDir = os.path.join(sys.path[0] + "\\temp") + tempDirList = [] + mainFileList = [] +# --- Preventing a mess. + if os.path.exists(tempDir): + print("Temp Dir already exists, cannot proceed") + print("Exiting") + sys.exit() +# --- Tree Log File + os.system("tree /a /f > Logs.txt") +# ----- Dealing with Temp Directory + print("____________") + if not os.path.exists(tempDir): + print("... Temp Dir Created ...") + os.mkdir(tempDir) + else: + for fn in os.listdir(tempDir): + tempDirList.append(fn) +# ----- Dealing with Temp Directory +# -------------------------------------- +# ----- File dealings + for root, dirs, files in os.walk(cDir, topdown=True): + # exclude = tempDir + exclude = tempDir + dirs[:] = [d for d in dirs if d not in exclude] + # if root == tempDir: + # print("ding") + # continue +# --------- for file in files + for filename in files: + filecounter += 1 +# Separate base from extension + base, extension = os.path.splitext(filename) +# old default File + oldFile = os.path.join(root, filename) + oldFileFolder = os.path.join(root) + "\\" +# New name for Temp Folder + newFile = os.path.join(tempDir, base, filename) + print(" - - Processing File: - - ") + print("oldFile =>", oldFile) + if filename == os.path.basename(sys.argv[0]): #Skip Script File + print("Script file detected. Skipping...") + continue +# If folder basedir/base does not exist... You don't want to create it? + if not os.path.exists(os.path.join(tempDir, base + "\\")): + try: + print("not found ... ", os.path.join(tempDir, base)) + os.mkdir(os.path.join(tempDir, base)) + print("Folder Created ... ", tempDir, base) + shutil.move(oldFile, newFile) + print("Relocated ... ", newFile) + continue # Next filename + except: + print("Error in try") +# folder exists, file does not + elif not os.path.exists(newFile): + try: + print("Relocated ... ", newFile) + shutil.move(oldFile, newFile) + except: + print("Error in elif") +# folder exists, file exists as well + else: + vNum = 2 + while True: + newFile = os.path.join(tempDir, base, base + " - Ver " + str(vNum) + extension) + if not os.path.exists(newFile): + print(f"File : {filename} \nIN {tempDir} ... already exists") + try: + print(f"Renaming : {filename}\n To : {newFile}") + shutil.move(oldFile, newFile) + print(f"Copied : {oldFile}\nTo : {newFile}") + break + except: + print("Error in Else") + vNum += 1 + # Clean up old paths + print("_____ CLEAN UP ____") + for root, dirs, files in os.walk(cDir, topdown=True): + exclude = tempDir + dirs[:] = [d for d in dirs if d not in exclude] + for dir in dirs: + shutil.rmtree(dir) + print("Removed : ", dir) + # Moving files back to main directory + tempDirList = os.listdir(tempDir) + for tempFolderName in tempDirList: + tempFolder = os.path.join(tempDir, tempFolderName) + shutil.move(tempFolder, cDir) + # Removing empty temp Dir + shutil.rmtree(tempDir) + print("Removed : ", tempDir) +# --- Tree Log File + os.rename(r"Logs\Logs.txt", r"Logs\Before.txt") + os.system(r"tree /a /f > .\Logs\After.txt") + print("\n\n\t\tall done.") + +def main(): + f2f() + +if __name__ == "__main__": + cDir = os.getcwd() + main() \ No newline at end of file diff --git a/tools/media-sort.exe b/tools/media-sort.exe new file mode 100644 index 0000000..82790ea Binary files /dev/null and b/tools/media-sort.exe differ