diff --git a/bin/generationlib b/bin/generationlib new file mode 100755 index 0000000..7bf8468 --- /dev/null +++ b/bin/generationlib @@ -0,0 +1,179 @@ +#!/bin/bash +NUM=0 +QUEUE="" +MAX_NPROC=2 # default +REPLACE_CMD=0 # no replacement by default + +USAGE="A simple wrapper for generating jpg pictures out of svg-files in parallel. +Usage: `basename $0` [-h] [-i] [-j nb_jobs] command arg_list + -h Shows this help + -c give the path to the cfg file + -i give the path of the svg files without the last / + -k chek if the jpg already exist + -j Set number of simultanious jobs. Default is 2 + -o directory where the files should be moved to after creation. + Default ist PICCREATE_OUT + Examples: + `basename $0` -i file -c config + `basename $0` -j 3 -i file -c config" + +function queue { + QUEUE="$QUEUE $1" + NUM=$(($NUM+1)) +} +function regeneratequeue { + OLDREQUEUE=$QUEUE + QUEUE="" + NUM=0 + for PID in $OLDREQUEUE + do + if [ -d /proc/$PID ] ; then + QUEUE="$QUEUE $PID" + NUM=$(($NUM+1)) + fi + done +} +function checkqueue { + OLDCHQUEUE=$QUEUE + for PID in $OLDCHQUEUE + do + if [ ! -d /proc/$PID ] ; then + regeneratequeue # at least one PID has finished + echo $PID + break + fi + done +} +function cfg_parser { + INI_FILE=$1 + SECTION=$2 + echo $1 + echo $2 + eval `sed -n -e "/^\[$SECTION\]/,/^\s*\[/{/^[^;].*\=.*/p;}" < $INI_FILE`>> trr.txt + echo 'helololo' +} +function get_filepath { + # probiere alle möglichen Kombinationen wo das file stehen könnte je + # nachdem ob es mit oder ohne Endung, mit oder ohne den Komplettpfad + # gegeben wurde + FILENAME=$1 + ENDING=$2 + DEFAULT_DIR=$3 + if [ -s $FILENAME ] ; then + echo $FILENAME + elif [ -s $FILENAME.$ENDING ] ; then + echo "$FILENAME.$ENDING" + elif [ -s $DEFAULT_DIR/$FILENAME ] ; then + echo "$DEFAULT_DIR/$FILENAME" + elif [ -s $DEFAULT_DIR/$FILENAME.$ENDING ] ; then + echo "$DEFAULT_DIR/$FILENAME.$ENDING" + fi + return +} + +# Funktion die auf globalen Parametern beruht. +# überprüft ob alle notwendigen Angaben vorhanden sind +function check_params { + if [ -z "$INPUT_FILENAME" ]; then + echo "please give input file with -i." + exit 1 + fi + if [ -z "$CFG_FILENAME" ]; then + echo "please give config file with -c." + exit 1 + fi + + INPUT_FILE=`get_filepath $INPUT_FILENAME 'csv' $PICCREATE_WORK` + if [ ! -s $INPUT_FILE ] ; then + echo "-> input filename does not exist" + print "given was: -$INPUT_FILENAME-" + exit 1 + fi + CFG_PATH=`get_filepath $CFG_FILENAME 'cfg' $PICCREATE_CFG` + if [ ! -s $CFG_PATH ]; then + echo "-> config file with this name does not exist." + print "given was: -$CFG_FILENAME-" + exit 1 + fi + cfg_parser $CFG_PATH "$SECTION_NAME" + echo 'using width '$width + echo 'using height '$height + if [ -z "$width" ]; then + echo "please give width=xxx in section [$SECTION_NAME] in config $CFG_FILENAME." + exit 1 + fi + if [ -z "$height" ]; then + echo "please give height=xxx in section [$SECTION_NAME] in config $CFG_FILENAME." + exit 1 + fi +} + + +# parse command line +if [ $# -eq 0 ]; then # must be at least one arg + echo "$USAGE" >&2 + exit 1 +fi + +CHECKFILE=0 + +while getopts "j:i:kc:o:hc:" OPT; do # "j:" waits for an argument "h" doesnt + case $OPT in + h) echo "$USAGE" + exit 0 ;; + j) MAX_NPROC=$OPTARG ;; + k) CHECKFILE=1 ;; + c) CFG_FILENAME=$OPTARG ;; + o) OUTDIR=$OPTARG ;; + i) INPUT_FILENAME=$OPTARG ;; + *) echo "$USAGE" >&2; exit 1; # Default. + esac +done + + +# Main program +echo Using $MAX_NPROC parallel threads +check_params + +# Starte die Generierung +echo $INPUT_FILE +for i in `ls $INPUT_FILE| grep .svg ` +do + echo $i + echo $CHECKFILE + ID=`echo "$i" | sed -e 's/;.*//g'` + PIC_NAME=`echo "$i" | sed -e 's/.svg/.jpg/g'` + FILE_PATH=$INPUT_FILE/$PIC_NAME + if [ -s $FILE_PATH ] && [ $CHECKFILE -eq 1 ] + then + echo $PIC_NAME exists! + else + RESIZE="${width}x${height}" + SWITCHES="-density $density $INPUT_FILE/$ID -resize $RESIZE $INPUT_FILE/$PIC_NAME" + CMDLINE="$CMD $SWITCHES" + echo $CMDLINE + (echo $ID; $CMDLINE) & + + PID=$! + queue $PID + + while [ $NUM -ge $MAX_NPROC ]; do + checkqueue + sleep 0.5 + done + fi +done + +wait # wait for all processes to finish before exit + +if [ ! -z $OUTDIR ]; then + echo -n moving to $OUTDIR + if [ ! -d $OUTDIR ]; then + echo creating directory $OUTDIR + mkdir $OUTDIR + fi + mv $PICCREATE_OUT/*.jpg $OUTDIR + echo done +fi + +# vi:set wrapmargin=0 ai showmatch ts=4 syntax=sh: diff --git a/bin/svgconvert.sh b/bin/svgconvert.sh new file mode 100755 index 0000000..95e09ed --- /dev/null +++ b/bin/svgconvert.sh @@ -0,0 +1,11 @@ +#!/bin/bash +. setenv.sh +# Wo ist das Programm hinkopiert +if [ -z $PICCREATE ];then + echo please check environment + exit 0 +fi +CMD=convert +SECTION_NAME=jpgs + +. $PICCREATE_BIN/generationlib diff --git a/cfg/punkteraetsel.cfg b/cfg/punkteraetsel.cfg index de08232..05e9441 100644 --- a/cfg/punkteraetsel.cfg +++ b/cfg/punkteraetsel.cfg @@ -40,7 +40,7 @@ counter_replace=True align=left [jpgs] -width=1200 -height=1200 +width=1900 +height=700 format=jpg - +density=300 diff --git a/libs/piccreate.py b/libs/piccreate.py index bce9e06..95552c0 100644 --- a/libs/piccreate.py +++ b/libs/piccreate.py @@ -10,7 +10,7 @@ import optparse import os import ConfigParser from utils import CSVImport, CompleteEnding, get_translation -from django.utils.encoding import smart_str +from django.utils.encoding import smart_str, smart_unicode from string import Template class PicError(Exception): @@ -133,7 +133,6 @@ class Font: content = dict(fontconfig.items(letter)) # lade das svg template dazu ein glyph_path = os.path.join( font_path, smart_unicode(content['fontname'])) - print content['fontname'] f = open(glyph_path, 'r') svgstr = f.read() f.close()