ade_talon

Watcher

Apr 1st, 2022 (edited)
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.41 KB | None | 0 0
  1. import time
  2. from watchdog.observers import Observer
  3. from watchdog.events import PatternMatchingEventHandler
  4. import os
  5.  
  6. os.system("cls||clear")
  7.  
  8.  
  9.  
  10.  
  11. # Create the event handler
  12. if __name__ == "__main__":
  13.     patterns = ["*"]
  14.     ignore_patterns = None
  15.     ignore_directories = False
  16.     case_sensitive = True
  17.     my_event_handler = PatternMatchingEventHandler(patterns, ignore_patterns, ignore_directories, case_sensitive)
  18.  
  19.  
  20.  
  21.  
  22. # Handle all the events
  23. def event_handler(event):
  24.     if "is_directory=True" in str(event):
  25.         of_type = "FOLDER"
  26.     else:
  27.         of_type = "FILE"
  28.    
  29.     if event.event_type.upper() != "MODIFIED":
  30.         print("[OBJECT {}] [OF_TYPE {}] '{}'".format(event.event_type.upper(), of_type, event.src_path))
  31.        
  32.     if event.event_type.upper() != "CREATED":
  33.         clean_the_folders()
  34.  
  35. my_event_handler.on_created = event_handler
  36. my_event_handler.on_deleted = event_handler
  37. my_event_handler.on_modified = event_handler
  38. my_event_handler.on_moved = event_handler
  39.  
  40.  
  41.  
  42.  
  43. # Create the observer
  44. path = "/mnt/usb/needs_cleaning"
  45. go_recursively = True
  46. my_observer = Observer()
  47. my_observer.schedule(my_event_handler, path, recursive=go_recursively)
  48.  
  49.  
  50.  
  51.  
  52. # Start the observer
  53. print("--> System is currently watching the folder '{}' <--".format(path))
  54. my_observer.start()
  55. try:
  56.     while True:
  57.         time.sleep(1)
  58. except KeyboardInterrupt:
  59.     my_observer.stop()
  60.     my_observer.join()
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74. def clean_the_folders():
  75.     import os
  76.     from glob import glob
  77.     import shutil
  78.            
  79.            
  80.            
  81.            
  82.            
  83.     root = "/mnt/usb/needs_cleaning"
  84.     os.system("clear")
  85.     os.chdir(root)
  86.     flags = {
  87.         #'key': 'value',
  88.         ' [720p]': '',
  89.         ' [1080p]': '',
  90.         ' [BluRay]': '',
  91.         ' [YTS.MX]': '',
  92.         ' [WEBRip]': '',
  93.         '.': ' ',
  94.         '_': ' ',    
  95.     }
  96.            
  97.            
  98.            
  99.            
  100.            
  101.            
  102.     # RENAME FOLDERS
  103.     folders = os.listdir(root)
  104.     for folder in folders:
  105.         new_folder = folder
  106.         for key, value in flags.items():
  107.             if key in new_folder:
  108.                 new_folder = new_folder.replace(key, value)
  109.            
  110.         if folder != new_folder:
  111.             os.rename(folder, new_folder)
  112.            
  113.            
  114.            
  115.            
  116.            
  117.            
  118.     # GET FOLDERS LIST
  119.     folders = os.listdir(root)
  120.     folders.sort()
  121.            
  122.            
  123.            
  124.            
  125.            
  126.            
  127.     # REMOVE EXTRA FOLDERS
  128.     for folder in folders:
  129.         subfolders = os.listdir(folder)
  130.         for lvl2 in subfolders:
  131.             lvl2_folders = (
  132.                 "Subs",
  133.                 "Other"
  134.             )
  135.             for lvl2_folder in lvl2_folders:
  136.                 if lvl2 == lvl2_folder:
  137.                     files = os.listdir("{}/{}".format(folder, lvl2_folder))
  138.                     for file in files:
  139.                         os.remove("{}/{}/{}".format(folder, lvl2_folder, file))
  140.                         print("Removing [file] : {}/{}/{}".format(folder, lvl2_folder, file))
  141.                        
  142.                     os.rmdir("{}/{}".format(folder, lvl2_folder))
  143.                     print("Removing [folder] : {}/{}".format(folder, lvl2_folder))
  144.            
  145.            
  146.            
  147.            
  148.            
  149.            
  150.     # RENAME SUBFILES TO PARENT FOLDER
  151.     for folder in folders:
  152.         os.chdir("{}/{}".format(root, folder))
  153.         files = os.listdir()
  154.         for file in files:
  155.             if (".mp4" or ".mkv") in file:
  156.                 print("Renaming [file] : {} to {}.mp4".format(file, folder))
  157.                 os.rename(file, "{}.mp4".format(folder))
  158.            
  159.             if ".srt" in file:
  160.                 print("Renaming [file] : {} to {}.srt".format(file, folder))
  161.                 os.rename(file, "{}.srt".format(folder))
  162.            
  163.             if not (".mp4" or ".mkv" or ".srt") in file:
  164.                 print("Removing [file] : {}".format(file))
  165.                 os.remove(file)
  166.                
  167.         os.chdir("..")
  168.            
  169.            
  170.            
  171.            
  172.            
  173.            
  174.     # COPY FILES TO THE SEVER
  175.     os.chdir(root)
  176.  
  177.  
  178.     for folder in folders:
  179.         print("Copying [folder] : {}".format(folder))
  180.         shutil.move("{}/{}".format(root, folder),"/mnt/usb/ready/")
Add Comment
Please, Sign In to add comment