Files
ffmpeg_collection/bulk_threading_test_by_file_refresh_metadata.py
2026-02-26 15:52:01 +01:00

138 lines
3.9 KiB
Python

import subprocess
import sys
from pathlib import Path
import os
from time import sleep
from threading import Thread
import threading
import re
import xml.etree.ElementTree as ET
file="metadata_refresh.txt"
max_threads=int(input("max threads: "))
print(type(max_threads))
i=0
output_folder_name ="/bulk_convert_out/mvkmergedupdated/"
target_bps_per_channel=96000
#audio_stringmap = ""
#droppedFile= ['E:\Shadowplay\Returnal"]
#get path of script location and remove the tail
#get path of script location and remove the tail
head_tail = os.path.split(sys.argv[0])
output_path = head_tail[0]
#skip first part of sys.argv since it points to script location
#arguments = sys.argv[1:]
#arguments = droppedFile
#check if output folder exists, otherwise create it
isExist = os.path.exists(output_path+output_folder_name)
if not isExist:
os.makedirs(output_path+output_folder_name)
def read_file(path=""):
with open(file,'r+') as f:
path = f.readlines(1)
all = f.readlines()
f.seek(0)
f.truncate()
f.writelines(all)
return path
class CustomThread(Thread):
# constructor
def __init__(self, input_file=""):
# execute the base constructor
Thread.__init__(self)
# set a default value
self.input_file = input_file
def run(self):
#sleep(1)
global i
file = str(input_file[0])
file = file.rstrip("\n")
pathlibname = Path(file)
show_folder_name = pathlibname.parent.parent.name
season_folder_name = "/" + pathlibname.parent.name
isExist = os.path.exists(output_path+output_folder_name+show_folder_name)
if not isExist:
os.makedirs(output_path+output_folder_name+show_folder_name)
sleep(1)
isExist = os.path.exists(output_path+output_folder_name+show_folder_name+season_folder_name)
if not isExist:
os.makedirs(output_path+output_folder_name+show_folder_name+season_folder_name)
sleep(1)
sleep(1)
#os.rename(file, file+"i")
mkvmerge_input = file
basename = os.path.basename(file)
mkv_args = 'mkvmerge.exe --output "{output_path}{output_folder_name}/{show_folder_name}/{season_folder_name}/{basename}" "{mkvmerge_input}"'.format(basename=basename, file=file, output_path=output_path,season_folder_name=season_folder_name,show_folder_name=show_folder_name, output_folder_name=output_folder_name, mkvmerge_input=mkvmerge_input)
mkv_run = subprocess.Popen(mkv_args)
#wait = mkv_run.wait()
data = mkv_run.wait()
print("before remove file")
#os.remove(file+"i")
basename = os.path.basename(file)
print(file)
sleep(1)
if data == 0:
i=i-1
filesize = os.path.getsize(file)
while filesize != 0:
if i < max_threads:
global self
filesize = os.path.getsize(file)
if filesize != 0:
input_file = read_file()
print(input_file)
t1 = CustomThread(input_file)
t1.start()
if filesize == 0:
while bool(threading.active_count() > 1):
print("Finished","out of", )
sleep(1)
filesize = os.path.getsize(file)
if filesize != 0:
print("breaking while")
break
filesize = os.path.getsize(file)
if filesize != 0:
print("breaking if")
continue
t1.join()
print("Completed","out of", "inputs Successfully")
input("waiting")
exit()
print("incrementing i in loop")
i=i+1
else:
print("Finished ","out of ")
sleep(1)
print("continuing ")