slitaz-tools annotate tinyutils/decode @ rev 1028
tazbox: fix help
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Wed May 09 12:08:12 2018 +0200 (2018-05-09) |
parents | 5d80f6fdbdb7 |
children |
rev | line source |
---|---|
pankso@746 | 1 #!/bin/sh |
pankso@746 | 2 # |
paul@763 | 3 # Decode is a cmdline tool to decode all kinds of files such as audio or video. |
paul@763 | 4 # Lets you decode a single file, many files on cmdline or a full directory. |
pankso@746 | 5 # |
al@939 | 6 # Copyright (C) 2012-2015 SliTaz GNU/Linux - BSD License |
pankso@746 | 7 # |
pankso@746 | 8 # Author: Christophe Lincoln <pankso@slitaz.org> |
pankso@746 | 9 # |
al@939 | 10 |
pankso@746 | 11 . /lib/libtaz.sh |
al@813 | 12 export TEXTDOMAIN='slitaz-tools' #i18n |
pankso@746 | 13 |
al@939 | 14 |
pankso@746 | 15 # NOTES: |
paul@835 | 16 # Do we need a --out=/output/path option ? |
pankso@746 | 17 # Use convert for [.png|.jpg] --> .raw ? |
pankso@746 | 18 # Use separators and give decoded file size ? |
pankso@746 | 19 # Use mencoder for flash video files (and other format) ? |
pankso@746 | 20 |
pankso@746 | 21 |
pankso@746 | 22 # |
pankso@746 | 23 # Functions |
pankso@746 | 24 # |
pankso@746 | 25 |
al@939 | 26 |
pankso@746 | 27 # Small help and usage. |
al@939 | 28 |
pankso@746 | 29 usage() { |
pankso@746 | 30 cat << EOT |
pankso@746 | 31 |
al@813 | 32 $(_n 'Decode audio and video files') |
pankso@746 | 33 |
al@813 | 34 $(boldify "$(_ 'Usage:')") |
al@813 | 35 $(basename $0) [$(_n 'option')] [$(_n 'file')|$(_n 'URL')] ... |
pankso@746 | 36 |
al@813 | 37 $(boldify "$(_ 'Examples:')") |
pankso@746 | 38 $(basename $0) audio.mp3 audio.ogg |
al@813 | 39 $(basename $0) $(_n '/path/to/files/*') |
al@813 | 40 $(basename $0) http://www.myurl/$(_n 'file').avi |
pankso@746 | 41 |
pankso@746 | 42 EOT |
pankso@746 | 43 } |
pankso@746 | 44 |
al@939 | 45 |
paul@763 | 46 # Check if a tool is installed. Don't force users and auto install package |
paul@763 | 47 # Decode is a cmdline line tool, let's have auto install option in GUI. |
al@939 | 48 |
pankso@746 | 49 check_tool() { |
al@813 | 50 dec=$1 |
pankso@746 | 51 name="$(basename "$file")" |
pankso@746 | 52 if [ ! -x /usr/bin/$1 ]; then |
al@943 | 53 _ 'Missing decoder: %s' "$dec" |
al@943 | 54 _ 'Skipping file: %s' "$name" |
pankso@746 | 55 continue |
pankso@746 | 56 else |
al@943 | 57 _ 'Decoding: %s' "$name" |
al@813 | 58 newline |
pankso@746 | 59 fi |
pankso@746 | 60 } |
pankso@746 | 61 |
al@939 | 62 |
pankso@746 | 63 # Decode a file. |
al@939 | 64 |
pankso@746 | 65 decoder() { |
al@813 | 66 newline; separator; newline |
al@813 | 67 if [ ! -f "$file" ]; then |
al@943 | 68 _ 'No file: %s' "$file" |
al@813 | 69 continue |
al@813 | 70 fi |
al@813 | 71 ext=$(echo ${file##*.} | tr '[A-Z]' '[a-z]') |
al@813 | 72 case $ext in |
al@813 | 73 mp3) |
pankso@746 | 74 check_tool "mpg123" |
pankso@746 | 75 mpg123 --rate 44100 --stereo --buffer 3072 --resync \ |
al@813 | 76 -w "${file%.*}.wav" "$file" ;; |
al@813 | 77 ogg) |
pankso@746 | 78 check_tool "oggdec" |
pankso@746 | 79 oggdec "$file" ;; |
al@813 | 80 avi|wmv|mov|flv) |
pankso@746 | 81 check_tool "ffmpeg" |
pankso@746 | 82 # *.flv --> mencoder file.flv -ovc lavc -oac mp3lame -o file.avi |
al@813 | 83 ffmpeg -y -i "$file" "${file%.*}.mpg" |
al@813 | 84 du -sh "${file%.*}.mpg" ;; |
al@813 | 85 wav|mpg|--*) |
pankso@746 | 86 # Skip decoded files and --options. |
al@813 | 87 name="$(basename "$file")" |
al@943 | 88 _ 'Skipping file: %s' "$name" |
pankso@746 | 89 continue ;; |
al@943 | 90 *) _ 'Unsupported file: %s' "$file" ;; |
pankso@746 | 91 esac |
pankso@746 | 92 } |
pankso@746 | 93 |
al@939 | 94 |
pankso@746 | 95 # |
pankso@746 | 96 # Commands |
pankso@746 | 97 # |
pankso@746 | 98 |
pankso@746 | 99 case "$1" in |
al@813 | 100 -h|--help|"") usage ;; |
pankso@746 | 101 *) |
al@813 | 102 for file in "$@"; do |
al@813 | 103 debug "$file" |
pankso@746 | 104 case "$file" in |
pankso@746 | 105 http://*) |
pankso@746 | 106 busybox wget "$file" |
pankso@746 | 107 file="$(basename "$file")" |
pankso@746 | 108 decoder && rm "$file" ;; |
pankso@754 | 109 *.*) |
pankso@746 | 110 decoder ;; |
pankso@746 | 111 esac |
al@813 | 112 done |
al@813 | 113 newline ;; |
pankso@746 | 114 esac |
pankso@746 | 115 |
pankso@746 | 116 exit 0 |