From cacf911e988634006761b929848646bd81c8ff22 Mon Sep 17 00:00:00 2001 From: James Bunton Date: Sat, 7 Mar 2015 03:19:03 +1100 Subject: [PATCH] identify-disc support for bluray --- identify-disc | 31 +++++++++++++++++++++++++++ identify-disc-mpv | 53 +++++++++++++++++++++++++++++++++++++++++++++++ identify-dvd | 13 ------------ 3 files changed, 84 insertions(+), 13 deletions(-) create mode 100755 identify-disc create mode 100755 identify-disc-mpv delete mode 100755 identify-dvd 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 - -- 2.39.2