128 lines
4.4 KiB
Python
128 lines
4.4 KiB
Python
# 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() |