From: James Bunton Date: Fri, 6 Mar 2015 16:19:03 +0000 (+1100) Subject: identify-disc support for bluray X-Git-Url: https://code.delx.au/transcoding/commitdiff_plain/cacf911e988634006761b929848646bd81c8ff22 identify-disc support for bluray --- diff --git a/identify-disc b/identify-disc new file mode 100755 index 0000000..21eb9b6 --- /dev/null +++ b/identify-disc @@ -0,0 +1,31 @@ +#!/bin/bash + +if [ -z "$1" -o -z "$2" ]; then + echo "Usage: $0 --bluray-device|--dvd-device SOMEDIRECTORY" + exit 1 +fi + +device_param="$1" +device_path="$2" +if [ "$device_param" = "--bluray-device" ]; then + device_param="-bluray-device" + device_scheme="bluray" +elif [ "$device_param" = "--dvd-device" ]; then + device_param="-dvd-device" + device_scheme="dvd" +else + echo "Unknown device type: $device_param" + exit 1 +fi + +mplayer 2> /dev/null \ + -quiet \ + -ao null \ + -vo null \ + -frames 0 \ + -identify \ + "$device_param" "$device_path" \ + "${device_scheme}://" | \ + sed -e 's/ID_\(DVD\|BLURAY\)_TITLE_\([0-9]*\)*_LENGTH=\(.*\)$/\2 \3/;tx;d;:x' | \ + sort -n + diff --git a/identify-disc-mpv b/identify-disc-mpv new file mode 100755 index 0000000..440e249 --- /dev/null +++ b/identify-disc-mpv @@ -0,0 +1,53 @@ +#!/bin/bash -e + +if [ -z "$1" -o -z "$2" ]; then + echo "Usage: $0 --bluray-device|--dvd-device SOMEDIRECTORY" + exit 1 +fi + +device_param="$1" +device_path="$2" +if [ "$device_param" = "--bluray-device" ]; then + device_scheme="bd" +elif [ "$device_param" = "--dvd-device" ]; then + device_scheme="dvd" +else + echo "Unknown device type: $device_param" + exit 1 +fi + +function mpv_wrap { + mpv 2> /dev/null \ + --quiet \ + --ao=null \ + --vo=null \ + --frames 1 \ + --no-cache \ + --no-config \ + "$@" +} + +function get_highest_title { + mpv_wrap \ + "$device_param" "$device_path" "${device_scheme}://" \ + --term-playing-msg='${disc-title-list}TITLE_LIST_END' \ + | grep -B2 'TITLE_LIST_END' \ + | head -n1 \ + | cut -d':' -f1 +} + +function get_length { + mpv_wrap \ + "$device_param" "$device_path" "${device_scheme}://${1}" \ + --term-playing-msg='TITLE_LENGTH=${length}' \ + | grep 'TITLE_LENGTH' \ + | head -n1 \ + | cut -d'=' -f2 +} + +highest_title="$(get_highest_title)" +for title in $(seq 0 "$highest_title"); do + echo -n "$title " + get_length "$title" +done + diff --git a/identify-dvd b/identify-dvd deleted file mode 100755 index 6e08663..0000000 --- a/identify-dvd +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -if [ -z "$1" ]; then - echo "Usage: $0 dvd-device" - exit 1 -fi - -mplayer 2> /dev/null \ - -quiet -ao null -vo null -frames 0 -identify -dvd-device "$1" dvd:// | \ - grep 'ID_DVD_TITLE_[0-9]*_LENGTH' | \ - sed -e 's/ID_DVD_TITLE_//' -e 's/_LENGTH=/ /' | \ - sort -n -