Guest User

Dovi Library Scanner

a guest
Dec 20th, 2023
586
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.21 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. # CSV Header
  4. echo "Movie,File Size,HDR Type,Dolby Vision Profile Detail,DM Version" > _library_info.csv
  5.  
  6. # Get the total number of folders
  7. total_folders=$(find . -maxdepth 1 -type d | wc -l | tr -d '[:space:]')
  8. current_folder=0
  9.  
  10.  
  11. # Iterate through folders
  12. for folder in */; do
  13.     current_folder=$((current_folder + 1))
  14.  
  15.     # Display progress
  16.     echo "Processing folder $current_folder of $total_folders: $folder"
  17.  
  18.     # Extract folder name
  19.     movie_name="${folder%/}"
  20.     cd "$folder"
  21.  
  22.     # Find MKV file
  23.     mkv_file=$(find . -name "*.mkv" -print -quit)
  24.    
  25.     # Get file size in human-readable format
  26.     file_size=$(ls -lh "$mkv_file" | awk '{print $5}')
  27.  
  28.     # Get Dolby Vision Profile
  29.     video_info=$(mediainfo "$mkv_file")
  30.     hdr_format=$(echo "$video_info" | grep "HDR format" | head -1)
  31.     dv_profile=$(echo "$hdr_format" | sed 's/^HDR format[[:space:]]*:[[:space:]]*//')
  32.  
  33.  
  34.     # Initialize variables
  35.     dv_profile_detail=""
  36.     dm_version=""
  37.  
  38.     # Check if Dolby Vision Profile exists
  39.     if [ ! -z "$dv_profile" ]; then
  40.         # Extract RPU data
  41.         ffmpeg -hide_banner -loglevel panic -t 1 -i "$mkv_file" -c:v copy -vbsf hevc_mp4toannexb -f hevc - | dovi_tool extract-rpu - -o "$movie_name.RPU.bin"
  42.         dovi_info=$(dovi_tool info "$movie_name.RPU.bin" -s)
  43.  
  44.         # Parse dovi_tool output
  45.         dv_profile_detail=$(echo "$dovi_info" | sed -n 's/.*Profile: \(.*\)/\1/p' | sed 's/^[ \t]*//;s/[ \t]*$//')
  46.         dm_version=$(echo "$dovi_info" | sed -n 's/.*DM version: \(.*\)/\1/p' | sed 's/^[ \t]*//;s/[ \t]*$//')
  47.  
  48.     fi
  49.  
  50.     # Fix for commas
  51.     formatted_movie_name="\"$movie_name\""
  52.     formatted_file_size="\"$file_size\""
  53.     formatted_dv_profile="\"$(echo "$dv_profile" | sed 's/^=//')\""
  54.     formatted_dv_profile_detail="\"$dv_profile_detail\""
  55.     formatted_dm_version="\"$dm_version\""
  56.  
  57.     # Write to CSV
  58.     echo "$formatted_movie_name,$formatted_file_size,$formatted_dv_profile,$formatted_dv_profile_detail,$formatted_dm_version" >> ../_library_info.csv
  59.     cd ..
  60.  
  61.     # Cleanup
  62.     rm -f "${folder}"*.bin
  63.  
  64.     # Progress
  65.     echo "Completed $current_folder of $total_folders"
  66.  
  67. done
  68.  
  69. echo "Processing complete. CSV file generated."
Advertisement
Add Comment
Please, Sign In to add comment