shithub: rc

ref: c1a707427fbbb5129e467516fc671e976ee3e398
dir: /img/

View raw version
#!/bin/rc
# 2022-05-01T18:49:30-04:00
# upload an image to http://img.stanleylieber.com
rfork e
argv0=$0
barf=/usr/sl/www/werc/sites/img.stanleylieber.com
if(! ~ `{cat /dev/sysname} gaff)
	barf=/n/gaff^$barf
fn usage {
	echo usage: $argv0 '[ -f file] [ -l link ] [ -t tags ]' >[1=2]
	exit usage
}
file=()
img=()
link=()
tags=()
while(~ $1 -*){
	switch($1){
	case -f
		file=$2
		shift
	case -l
		link=$2
		shift
	case -t
		tags=$2
		shift
	case *
		usage
	}
	shift
}
if(! ~ $#* 0)
	usage
if(~ $#file 1){
	a_id=`{echo `{ls -p $barf/src | sort -n | tail -1}^+1 | bc}
	if(~ $#a_id 0)
		a_id=1
	while(test -d $barf/src/$a_id)
		a_id=`{echo $a_id^+1 | bc}
	a_dir=$barf/src/$a_id
	mkdir -p $a_dir/img $a_dir/tags
	date >$a_dir/date
	echo $"link >$a_dir/link
	a_tags=`{echo $"tags | sed 's/[^A-Za-z0-9_\- ]//g'}
	ifs=' '{a_tags=`{echo -n $a_tags}}
	{
		t=1
		while(test $t -le $#a_tags){
			>$a_dir/tags/$a_tags($t)
			t=`{echo $t^+1 | bc}
		}
	}
	for(i in $a_tags)
		echo $a_id'/tags/'$i >>$barf/tags
	nimg=$a_dir/img/^`{date -n}^.^`{echo $"file |
		sed 's/^.*\.(gif|GIF)$/gif/g;
			s/^.*\.(jpg|jpeg|JPG|JPEG)$/jpg/g;
			s/^.*\.(png|PNG)$/png/g;
			s/^.*\.(tif|TIF|tiff|TIFF)$/tif/g'
	}
	thumb=$a_dir/img/small.^`{basename $nimg | sed 's/\..*$//g'}^.png
	switch($file){
	case http*
		hget $"file >$nimg
	case *
		fcp $"file $nimg
	}
	switch($nimg){
	case *.bmp
		cmd=bmp
	case *.gif
		cmd=gif
	case *.ico
		cmd=ico
	case *.jpg
		cmd=jpg
	case *.png
		cmd=png
	case *.tif
		cmd=tif
	case *.tga
		cmd=tga
	}
	eval $cmd -9et <$nimg | resample -x 500 | topng >$thumb
	for(i in `{du -a $a_dir | sed 's/^.*	//g'}){
		chgrp www $i
		chmod 775 $i
	}
	echo -n http://
	echo -n `{basename $barf}
	echo -n /src/$a_id/img/
	echo `{basename $nimg}
}
if not {
	hpost -u https://img.stanleylieber.com -p / fake:fake url: submit:add a_func:add_post a_img:$img a_link:$link a_tags:$tags |
		grep -e 'img.stanleylieber.com\/src\/' |
		sed 1q |
		sed 's/^.........//' |
		sed 's/" target.*$//g'
}