#!/bin/ksh # see http://nein.triapul.cz/technology/ksh/imgram_mini ppp=20 #posts per page wroot=/var/www/htdocs/mywebsite.com/imgmini #path to web directory rss_url=https://mywebsite.com/imgmini rss_desc="my imgmini gallery" dt="date -r " #dt="date -d @" #uncomment on linux tmp=/tmp/imgmini rss_link=$rss_url/rss.xml :>$tmp :>$tmp.paged :>$tmp.rss # usage: # #post "file.ext" with "description: # imgmini "file.ext" "description" # #rebuild web and rss # imgmini # cnvrt() { convert "$input" -strip -resize 860 $wroot/small.$out.jpg } html() { cat < imgmini gallery

imgmini

rss

$(cat $1) $(pager) eof } db() { r=1 cd $wroot for i in $(ls [0-9]*.* | grep -v "html" | sort -r); do id=$(echo $i | cut -d"." -f1) desc="$(cat $id 2>/dev/null)" alt="$desc" ext=$(echo $i | rev | cut -d"." -f1 | rev) if [[ $alt = "" ]]; then alt="picture"; fi date="$(${dt}$id)" [[ -f "$wroot/small.$id.jpg" ]] && thumb=1 || thumb=0 case $thumb in 0) cat <> $tmp

$date

$alt

$desc


eof ;; 1) cat <> $tmp

$date

$alt

$desc


eof ;; esac if (( r < 10 )); then rss_item >> $tmp.rss fi ((r++)) done posts=$(wc -l < $tmp) page=1 if (( posts <= ppp )); then html $tmp > $wroot/index.html else pager=1 pages=$((posts/ppp)) rempage=$((posts%ppp)) if (( rempage > 0 )); then ((pages++)); fi x=1; y=$ppp until (( page > pages )); do sed -n "$x , $y p" $tmp > $tmp.paged out=$page.html if (( page == 1 )); then html $tmp.paged > $wroot/index.html fi html $tmp.paged > $wroot/$out x=$((x+$ppp)) y=$((y+$ppp)) ((page++)) done fi } rss_item() { if (( thumb == 1 )); then rss_thumb="$rss_url/small.$id.jpg"; fi cat < $id $rss_url/$id.$ext $rss_url/$id.$ext $id

$alt

$(if [[ $alt != "picture" ]]; then print "

$alt

";fi) ]]>
$(${dt}$id +"%a, %d %h %Y %H:%M:%S +0000") eof rss_thumb="" } rss() { cat < $rss_title $rss_url $rss_desc en-US $(cat $tmp.rss) eof } pager() { if (( pager == 1 )); then echo "

" for n in $(seq 1 $pages); do if (( n == 1 )); then o=index; else o=$n; fi if (( n == page )); then echo "$n" else echo "$n" fi done echo "

" fi } post() { input="$1" [[ ! -f $input ]] && echo "bad file" && exit shift desc="$*" file_size=$(wc -c < $input) ext=$(echo $input | rev | cut -d"." -f1 | rev) out=$(date +%s) size_limit=300000 if (( $size_limit < $file_size )); then cnvrt echo converted fi cp "$input" $wroot/$out.$ext if [[ ! -z $desc ]]; then echo "$desc" > $wroot/$out fi echo "posted $rss_url/$out.$ext" } [[ ! -z $1 ]] && post $* db rss > $wroot/rss.xml echo "done"