[ogg-dev] wrappers

VolodyA! V Anarhist
Sun, 13 Jun 2010 06:48:29 -0000

Silvia Pfeiffer wrote:
> Sounds good! Though maybe calling it oggz-metadata might make more sense?
>
> Cheers,
> Silvia.

I would call it that too, but it's 'oggz-comment' and
'vorbiscomment' already, i
just tried to follow the trend.

               - Volodya

> On Sun, Jun 13, 2010 at 1:42 PM, VolodyA! V Anarhist
> <Volodya at whengendarmesleeps.org> wrote:
>> Hi,
>>
>> I've sent one of these before, but i wasn't subscribed, and
i'm unsure if it
>> went out. I'm subscribed now and i've written another (i
believe) nifty
>> wrapper for oggz-tools.
>>
>> oggz-comments - allows a user to pass the plain text file with each tag
on
>> their own line
>> theoracomment - works like 'vorbiscomment' from VorbisTools
package, but
>> sets comments for the theora streams inside an Ogg container. The only
two
>> things that you can't do with theoracomment that you can with
vorbis comment
>> are: 1. run a command and then enter the tags from console 2. use error
>> codes in the same way
>>
>> If anybody has any suggestions on changes or additions to these
scripts, let
>> me know. They are GPL3-ed, so you can use them and pass them along if
you
>> like.
>>
>>           - Volodya
>>
>> --
>> http://freedom.libsyn.com/     Echo of Freedom, Radical Podcast
>>
>>  "None of us are free until all of us are free."    ~ Mihail
Bakunin
>>
>> #!/bin/bash
>>
>> # Name: oggz-comments
>> # Version: 0,1a
>> # Author: Volodya
>> # Year: 2010
>> # Licence: GPL 3.0
>>
>> # this is an oggz-comment wrapper
>>
>> # the command line should be in the form
>> # oggz-comments [-o output.ogg | --output output.ogg] [-d | --delete]
[-a |
>> -all] [-s serialno  | --serialno serialno]  [-c content-type  |
>> --content-type content-type] [-m metadata.txt | --metadata-file
>> metadata.txt] input.ogg
>> # or
>> # oggz-comments -h|--help
>>
>> #if help
>> if [ -z "$1" ] || [ "$1" = "-h" ] || [
"$1" = "--help" ]; then
>>        echo "oggz-commenta version 0,1a. written by VolodyA! V
Anarhist"
>>        echo "The command line should look like this:"
>>        echo "oggz-comments [-o output.ogg | --output output.ogg]
[-d |
>> --delete] [-a | -all] [-s serialno  | --serialno serialno]  [-c
content-type
>>  | --content-type content-type] [-m metadata.txt | --metadata-file
>> metadata.txt] input.ogg"
>>        exit
>> fi
>>
>>
>> #go through all the command line a word at a time
>> OUTPUT=""
>> DELETE=""
>> STREAMS=""
>> METADATA=""
>> INPUT=""
>>
>> STATE=""
>> for COMMAND in "$@"; do
>>        if [ ${COMMAND:0:1} = "-" ]; then
>>                if [ "$COMMAND" = "-o" ] || [
"$COMMAND" = "--output" ]; then
>>                        STATE="--output"
>>                elif [ "$COMMAND" = "-d" ] || [
"$COMMAND" = "--delete" ];
>> then
>>                        DELETE="--delete"
>>                        STATE=""
>>                elif [ "$COMMAND" = "-a" ] || [
"$COMMAND" = "--all" ]; then
>>                        STREAMS="$STREAMS --all"
>>                elif [ "$COMMAND" = "-s" ] || [
"$COMMAND" = "--serialno" ];
>> then
>>                        STATE="--serialno"
>>                elif [ "$COMMAND" = "-c" ] || [
"$COMMAND" = "--content-type"
>> ]; then
>>                        STATE="--content-type"
>>                elif [ "$COMMAND" = "-m" ] || [
"$COMMAND" >> "--metadata-file" ]; then
>>                        STATE="--metadata-file"
>>                else
>>                        echo "Wrong command command
'$COMMAND'"
>>                        echo "Use oggz-comments --help for useage
>> information."
>>                        exit 1
>>                fi
>>        elif [ -n "$STATE" ]; then # if the STATE is not
zero-length
>>                if [ "$STATE" = "--output" ]; then
>>                        OUTPUT="--output $1"
>>                elif [ "$STATE" = "--serialno" ];
then
>>                        STREAMS="$STREAMS --serialno $1"
>>                elif [ "$STATE" = "--content-type"
]; then
>>                        STREAMS="$STREAMS --content-type $1"
>>                elif [ "$STATE" = "--metadata-file"
]; then
>>                        if [ ! -f "$1" ] || [ ! -r
"$1" ]; then
>>                                echo "File '$1' doesn't
exist or is not
>> readable"
>>                                exit 2
>>                        fi
>>                        while read LINE
>>                        do
>>                                METADATA="$METADATA
\"$LINE\""
>>                        done < "$1"
>>                fi
>>                STATE=""
>>        else
>>                if [ ! -f "$1" ] || [ ! -r "$1" ];
then
>>                        echo "File '$1' doesn't exist
or is not readable"
>>                        exit 2
>>                fi
>>                INPUT="$1"
>>        fi
>>        shift
>> done
>>
>> eval oggz-comment $OUTPUT $DELETE $STREAMS $INPUT $METADATA
>>
>> #!/bin/bash
>>
>> # Name: theoracomment
>> # Version: 0,1a
>> # Author: Volodya
>> # Year: 2010
>> # Licence: GPL 3.0
>>
>> # this is an theoracomment, wrapper around oggz-comment that changes
theora
>> comments inside a file
>> # it is intended to have the same parameters as vorbiscomment
>>
>> # the command line should be in the form
>> # theoracomment [-a | -w] [-c metadata.txt | -t "name=value"]
[-q] input.ogv
>> output.ogv
>> # or
>> # theoracomment [-l] input.ogv
>> # theoracomment -h|--help
>>
>> #if help
>> if [ -z "$1" ] || [ "$1" = "-h" ] || [
"$1" = "--help" ]; then
>>        echo "theoracomment version 0,1a. written by VolodyA! V
Anarhist"
>>        echo "The command line should look like this:"
>>        echo "theoracomment [-a | -w] [-c metadata.txt | -t
"name=value"]
>> [-q] input.ogv output.ogv"
>>        exit
>> fi
>>
>>
>> #go through all the command line a word at a time
>> OUTPUT=""
>> DELETE="--delete"
>> STREAMS="--content-type theora"
>> METADATA=""
>> INPUT=""
>>
>> STATE=""
>> for COMMAND in "$@"; do
>>        if [ ${COMMAND:0:1} = "-" ]; then
>>                if [ "$COMMAND" = "-a" ] || [
"$COMMAND" = "--append" ] || [
>> "$COMMAND" = "--add" ]; then
>>                        DELETE=""
>>                        STATE=""
>>                elif [ "$COMMAND" = "-w" ] || [
"$COMMAND" = "--write" ] || [
>> "$COMMAND" = "--wipe" ]; then
>>                        DELETE="--delete"
>>                        STATE=""
>>                elif [ "$COMMAND" = "-l" ] || [
"$COMMAND" = "--list" ]; then
>>                        STATE="--list"
>>                elif [ "$COMMAND" = "-c" ] || [
"$COMMAND" = "--comment-file"
>> ] || [ "$COMMAND" = "--commentfile" ]; then
>>                        STATE="--comment-file"
>>                elif [ "$COMMAND" = "-t" ] || [
"$COMMAND" = "--tag" ]; then
>>                        STATE="--tag"
>>                elif [ "$COMMAND" = "-R" ] || [
"$COMMAND" = "--raw" ]; then
>>                        #ignore, is meant to read/write in UTF-8
>>                        STATE=""
>>                elif [ "$COMMAND" = "-q" ] || [
"$COMMAND" = "--quiet" ];
>> then
>>                        #ignore, is meant to read/write in UTF-8
>>                        STATE=""
>>                else
>>                        echo "Wrong command command
'$COMMAND'"
>>                        echo "Use oggz-comments --help for useage
>> information."
>>                        exit 1
>>                fi
>>        elif [ -n "$STATE" ]; then # if the STATE is not
zero-length
>>                if [ "$STATE" = "--list" ]; then
>>                        if [ ! -f "$1" ] || [ ! -r
"$1" ]; then
>>                                echo "File '$1' doesn't
exist or is not
>> readable"
>>                                exit 2
>>                        fi
>>                        # h - hold the old line, G - append the old line
to
>> new
>>                        # it's used to capitalise only before ':
', the
>> substitution is needed
>>                        # but we combine the substitution to change
': ' to
>> '='
>>                        eval oggz-comment --content-type theora -l
"$1" | sed
>> ' {
>>                                /^[^\t]/d
>>                                s/^\t//g
>>                                /^Vendor/d
>>                                h
>>
>>  y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/
>>                                G
>>                                s/: .*: /=/
>>                        }'
>>                        exit 0 #everything is done
>>                elif [ "$STATE" = "--tag" ]; then
>>                        METADATA="$1"
>>                elif [ "$STATE" = "--comment-file"
]; then
>>                        if [ ! -f "$1" ] || [ ! -r
"$1" ]; then
>>                                echo "File '$1' doesn't
exist or is not
>> readable"
>>                                exit 2
>>                        fi
>>                        while read LINE
>>                        do
>>                                METADATA="$METADATA
\"$LINE\""
>>                        done < "$1"
>>                fi
>>                STATE=""
>>        else
>>                if [ -n "$INPUT" ]; then
>>                        OUTPUT="--output $1"
>>                else
>>                        if [ ! -f "$1" ] || [ ! -r
"$1" ]; then
>>                                echo "File '$1' doesn't
exist or is not
>> readable"
>>                                exit 2
>>                        fi
>>                        INPUT="$1"
>>                fi
>>        fi
>>        shift
>> done
>>
>> if [ -n "$METADATA" ]; then # need to read metadata from
console
>>        while read LINE
>>        do
>>                METADATA="$METADATA \"$LINE\""
>>        done
>> fi
>>
>> if [ -n "$OUTPUT" ]; then
>>        eval oggz-comment $OUTPUT $DELETE $STREAMS $INPUT $METADATA
>> else
>>        for i in {1..100}
>>        do
>>                if [ ! -f "$INPUT~$i~" ] && [ ! -r
"$INPUT~$i~" ]; then
>>                        eval mv "$INPUT"
"$INPUT~$i~"
>>                        OUTPUT="--output $INPUT"
>>                        INPUT="$INPUT~$i~"
>>                        break
>>                fi
>>        done
>>        if [ -n "$OUTPUT" ]; then
>>                eval oggz-comment $OUTPUT $DELETE $STREAMS $INPUT
$METADATA
>>                eval rm $INPUT
>>        else
>>                echo Unable to create a temporary file name
>>        fi
>> fi
>>
>> _______________________________________________
>> ogg-dev mailing list
>> ogg-dev at xiph.org
>> http://lists.xiph.org/mailman/listinfo/ogg-dev
>>
>>
>


--
http://freedom.libsyn.com/     Echo of Freedom, Radical Podcast

  "None of us are free until all of us are free."    ~ Mihail Bakunin