Merge branch 'master' of git+ssh://gitbox/piccreate

This commit is contained in:
Eva Möller
2012-08-16 21:25:45 +02:00
4 changed files with 194 additions and 5 deletions
+179
View File
@@ -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:
+11
View File
@@ -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
+3 -3
View File
@@ -40,7 +40,7 @@ counter_replace=True
align=left
[jpgs]
width=1200
height=1200
width=1900
height=700
format=jpg
density=300
+1 -2
View File
@@ -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()