[ogg-dev] wrappers

VolodyA! V Anarhist Volodya at WhenGendarmeSleeps.org
Sat Jun 12 23:48:29 PDT 2010


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


More information about the ogg-dev mailing list