Fix bugs, Add error messages

This commit is contained in:
Julian Mutter 2022-09-12 15:32:09 +02:00
parent e6917b9807
commit 140d30d767
3 changed files with 43 additions and 13 deletions

View File

@ -27,6 +27,13 @@ def main():
chdir_to_script_dir()
mkdirs()
dst = os.path.join(RIPPED_DIR, args.type, args.title)
if os.path.exists(dst):
print(
f"A {args.type} with this name has already been ripped. Are you sure you spelled the name right?"
)
exit(1)
success = rip_to_tmp_dir(args)
program_execution_time_str = get_program_execution_time_str(program_start_time)
if success:
@ -110,14 +117,11 @@ def rip_to_tmp_dir(args) -> bool:
def create_rip_command(args, dest):
if args.type == "movie":
return f"dvdbackup -i '{args.dev}' -o '{dest}' -F -n '{args.title}'"
else:
return f"dvdbackup -i '{args.dev}' -o '{dest}' -M -n '{args.title}'"
return f"dvdbackup -v -p -i '{args.dev}' -o '{dest}' -M -n \"{args.title}\""
def get_program_execution_time_str(program_start_time):
program_execution_time_minutes = (program_start_time - time.time()) / 60.0
program_execution_time_minutes = (time.time() - program_start_time) / 60.0
program_execution_time_minutes = max(0.0, program_execution_time_minutes)
return f"{program_execution_time_minutes:.1f} minutes"

View File

@ -3,13 +3,21 @@
import os
import subprocess
DESTINATION_FOLDER = "transcoder/raw" # pi@192.168.xxx:/home/pi/transcoder/raw
DESTINATION_FOLDER = (
"../transcoder/raw" # pi@192.168.xxx:/home/pi/dvd_rip/transcoder/raw
)
RIPPED_DIR = "ripped"
def main():
chdir_to_script_dir()
if not os.path.exists(DESTINATION_FOLDER):
print(
f"Destination folder '{DESTINATION_FOLDER}' does not exist. Please run transcoder script to generate it"
)
exit(1)
for dvd_type in ("movie", "series"):
for dvd in list_ripped_dvds(dvd_type):
print(f"Transferring {dvd_type}: {dvd}")

View File

@ -13,10 +13,12 @@ TRANSCODED_DIR = "transcoded"
LOGFILE = "transcode.log"
HANDBRAKE_PROCESS_NICE_LEVEL = 10
HANDBRAKE_PRESET = "General/HQ 1080p30 Surround"
HANDBRAKE_PRESET_MOVIE = "General/HQ 1080p30 Surround"
HANDBRAKE_PRESET_SERIES = "General/Fast 1080p30"
HANDBRAKE_AUDIO_LANG_LIST = "de,en"
OUT_VIDEO_FORMAT = ".m4v"
MIN_EPISODES_DURATION_SECONDS = 10 * 60
OUT_VIDEO_FORMAT = ".mkv"
MIN_EPISODES_DURATION_SECONDS = 30 * 60
MAX_EPISODES_DURATION_SECONDS = 1.5 * 60 * 60
SERIES_TITLE_REGEX = r"S(\d+)[ _]?E(\d+)-(\d+)$"
@ -90,13 +92,17 @@ class Dvd:
return (series, episodes)
def transcode_command_args_without_title_number(self, output_file):
handbrake_preset = HANDBRAKE_PRESET_MOVIE
if self.is_series():
handbrake_preset = HANDBRAKE_PRESET_SERIES
args = [
"nice",
"-n",
str(HANDBRAKE_PROCESS_NICE_LEVEL),
"HandBrakeCLI",
"--preset",
HANDBRAKE_PRESET,
handbrake_preset,
"--first-audio",
"--audio-lang-list",
HANDBRAKE_AUDIO_LANG_LIST,
@ -224,8 +230,8 @@ def transcode_episode(dvd: Dvd, season, episode, title_number):
+ [
"--title",
str(title_number),
"--min-duration",
str(MIN_EPISODES_DURATION_SECONDS),
# "--min-duration",
# str(MIN_EPISODES_DURATION_SECONDS),
],
stderr=subprocess.STDOUT,
stdout=log_file,
@ -274,10 +280,22 @@ def find_series_titles(dvd: Dvd):
break
json_obj = json.loads(json_str)
titles = list(map(lambda title: title["Index"], json_obj["TitleList"]))
titles = json_obj["TitleList"]
if dvd.is_series():
titles = filter(is_json_title_duration_not_too_long, titles)
titles = list(map(lambda title: title["Index"], titles))
return titles
def is_json_title_duration_not_too_long(title):
duration = title["Duration"]
duration_seconds = duration["Hours"] * 60 * 60
duration_seconds += duration["Minutes"] * 60
duration_seconds += duration["Seconds"]
return duration_seconds <= MAX_EPISODES_DURATION_SECONDS
def mv_videos_from_tmp_to_transcoded_dir(video_files, video_type):
for video_file in video_files:
src = video_file