455 lines
		
	
	
	
		
			12 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			455 lines
		
	
	
	
		
			12 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/bin/rc
 | |
| # Parse XML RSS feeds from Yahoo Pipes into BARF blog posts
 | |
| # for the specified site. If a post with a matching _link_ already
 | |
| # exists, no new post will be created for that item. Accordingly,
 | |
| # the gy script may run slowly for sites with a large number of
 | |
| # existing posts. Tags will be created according to the rules
 | |
| # defined in the get_tags() function.
 | |
| #
 | |
| # Requires 20h's xmlpull and rssread.
 | |
| rfork en
 | |
| switch($1){
 | |
| case read
 | |
| 	feed='http://pipes.yahoo.com/pipes/pipe.run?_id=d1f7146306b019d96d768facf95eebd9&_render=rss'
 | |
| 	site=read.stanleylieber.com
 | |
| 	tags=()
 | |
| case *
 | |
| 	echo 'Usage: gy [ ... ]' >[1=2]
 | |
| 	exit usage
 | |
| }
 | |
| 
 | |
| file=/tmp/gy.$1
 | |
| werc=/usr/sl/www/werc
 | |
| 
 | |
| if(test -f /boot/factotum)
 | |
| 	cmd=hget
 | |
| if not
 | |
| 	cmd='curl -s'
 | |
| 
 | |
| fn cram{
 | |
| 	ssam '
 | |
| ,s/^link:.*$/HJDIVIDER&HJDIVIDER/g
 | |
| ,s/^title:.*$/HJDIVIDER&HJDIVIDER/g
 | |
| ,s/\n//g
 | |
| ,s/HJDIVIDERtitle:/\n&/g
 | |
| 	'
 | |
| }
 | |
| 
 | |
| fn scape{
 | |
| 	ssam '
 | |
| ,s/
 | |
| //g
 | |
| ,s/\"/\"/g
 | |
| ,s/\"/\"/g
 | |
| ,s/\&/\&/g
 | |
| ,s/\&/\&/g
 | |
| ,s/\'/''/g
 | |
| ,s/\,/,/g
 | |
| ,s/\-/-/g
 | |
| ,s/\./\./g
 | |
| ,s/\//\//g
 | |
| ,s/\:/:/g
 | |
| ,s/\;/;/g
 | |
| ,s/\</</g
 | |
| ,s/\</</g
 | |
| ,s/\=/=/g
 | |
| ,s/\>/>/g
 | |
| ,s/\>/>/g
 | |
| ,s/\_/_/g
 | |
| ,s/\|/\|/g
 | |
| 	'
 | |
| }
 | |
| 
 | |
| fn get_posts{
 | |
| 	$"cmd $feed | rssread | cram | scape >$file
 | |
| 	echo >>$file
 | |
| }
 | |
| 
 | |
| fn get_tags{
 | |
| 	switch($a_link){
 | |
| 	case *1oct1993*
 | |
| 		tags=($tags 1oct1993)
 | |
| 	case *9front*
 | |
| 		tags=($tags software plan9 9front)
 | |
| 	case *organicmentalcore* 
 | |
| 		tags=($tags aleks)
 | |
| 	case *amyearles* *etsy.com* *pushedunder* *seaglass* *woolandwater*
 | |
| 		tags=($tags amy_earles)
 | |
| 	case *animenewsnetwork*
 | |
| 		tags=($tags telescreen anime)
 | |
| 	case *spikejapan*
 | |
| 		tags=($tags japan comics manga telescreen anime)
 | |
| 	case *augmented.org*
 | |
| 		tags=($tags augmented.org ar)
 | |
| 	case *ArchDaily* *archdaily*
 | |
| 		tags=($tags archdaily architecture)
 | |
| 	case *bldgblog*
 | |
| 		tags=($tags bldgblog architecture)
 | |
| 	case *kazuyosejima*
 | |
| 		tags=($tags japan architecture)
 | |
| 	case *Minimalissimo*
 | |
| 		tags=($tags minimalissimo design architecture)
 | |
| 	case *ArtFagCity* *ArtFCity* *artfagcity*
 | |
| 		tags=($tags artfagcity art)
 | |
| 	case *rhizome-fp*
 | |
| 		tags=($tags rhizome-fp art)
 | |
| 	case *rhizome*
 | |
| 		tags=($tags rhizome art)
 | |
| 	case *starwarsmodern*
 | |
| 		tags=($tags starwarsmodern art)
 | |
| 	case *tokyoartbeat*
 | |
| 		tags=($tags tokyoartbeat japan art)
 | |
| 	case *trendbeheer*
 | |
| 		tags=($tags trendbeheer art)
 | |
| 	case *ValentinaTanni*
 | |
| 		tags=($tags valentinatanni art)
 | |
| 	case *vvork*
 | |
| 		tags=($tags vwork art)
 | |
| 	case *auriea* *tale-of-tales* *taleoftales*
 | |
| 		tags=($tags auriea)
 | |
| 	case *basscomm* *closeoutwarrior* *crummysocks* *gamerrelocationproject* *protipoftheday* *PushButtonB* *pushbuttonb*
 | |
| 		tags=($tags video_games basscomm)
 | |
| 	case *benjaminmarra*
 | |
| 		tags=($tags comics benjamin_marra)
 | |
| 	case *boingboing*
 | |
| 		tags=($tags boingboing)
 | |
| 	case *bushinbooks* *henka*
 | |
| 		tags=($tags budo)
 | |
| 	case *alexaanddave* *CEREBUS* *Cerebus* *cerebus* *davesim* *gerhard*
 | |
| 		tags=($tags comics cerebus gerhard)
 | |
| 	case *coilhouse*
 | |
| 		tags=($tags coilhouse)
 | |
| 	case *arche-arc*
 | |
| 		tags=($tags arche comics)
 | |
| 	case *bitolithic.com*
 | |
| 		tags=($tags bitolithic comics)
 | |
| 	case *blaiselarmee*
 | |
| 		tags=($tags blaise_larmee comics)
 | |
| 	case *bleedingcool*
 | |
| 		tags=($tags bleedingcool comics)
 | |
| 	case *bobgreenberger*
 | |
| 		tags=($tags bob_greengerger comics)
 | |
| 	case *coldheatcomics*
 | |
| 		tags=($tags coldheat comics)
 | |
| 	case *comicbookresources*
 | |
| 		tags=($tags cbr comics)
 | |
| 	case *comicsbeat*
 | |
| 		tags=($tags comicsbeat comics)
 | |
| 	case *ComicsComics* *comicscomics*
 | |
| 		tags=($tags comicscomics comics)
 | |
| 	case *coveredblog*
 | |
| 		tags=($tags coveredblog comics)
 | |
| 	case *dcfifty-too*
 | |
| 		tags=($tags dcfifty-too comics)
 | |
| 	case *Destructoid* *destructoid*
 | |
| 		tags=($tags destructoid video_games)
 | |
| 	case *economist.com*
 | |
| 		tags=($tags economist)
 | |
| 	case *brucesterling.tumblr.com*
 | |
| 		tags=($tags bruce_sterling)
 | |
| 	case *thecreatorsproject*
 | |
| 		tags=($tags thecreatorsproject)
 | |
| 	case *ferrandelgado*
 | |
| 		tags=($tags ferran_delgado comics)
 | |
| 	case *eddiecampbell*
 | |
| 		tags=($tags eddie_campbell comics)
 | |
| 	case *factualopinion*
 | |
| 		tags=($tags factualopinion comics)
 | |
| 	case *floating_world* *floatingworld*
 | |
| 		tags=($tags floating_world comics)
 | |
| 	case *frankmiller*
 | |
| 		tags=($tags frank_miller comics)
 | |
| 	case *humancolor*
 | |
| 		tags=($tags humancolor comics)
 | |
| 	case *jerkcity*
 | |
| 		tags=($tags jerkcity comics)
 | |
| 	case *maakies.com*
 | |
| 		tags=($tags tony_millionaire maakies comics)
 | |
| 	case *newconstructionblog*
 | |
| 		tags=($tags newconstruction manga comics)
 | |
| 	case *ohdannyboy*
 | |
| 		tags=($tags ohdannyboy comics)
 | |
| 	case *pulphope*
 | |
| 		tags=($tags pulphope comics)
 | |
| 	case *pwbeat*
 | |
| 		tags=($tags pwbeat comics)
 | |
| 	case *reliablecomics*
 | |
| 		tags=($tags reliablecomics comics)
 | |
| 	case *reneefrench*
 | |
| 		tags=($tags renee_french comics)
 | |
| 	case *rickveitch*
 | |
| 		tags=($tags rick_veitch comics)
 | |
| 	case *royalboiler*
 | |
| 		tags=($tags royalboiler comics)
 | |
| 	case *smbc-comics*
 | |
| 		tags=($tags smbc comics)
 | |
| 	case *studygroup*
 | |
| 		tags=($tags studygroup comics)
 | |
| 	case *xkcd*
 | |
| 		tags=($tags xkcd comics)
 | |
| 	case *bowiesongs* *DavidBowie* *davidbowie*
 | |
| 		tags=($tags music david_bowie)
 | |
| 	case *designboom*
 | |
| 		tags=($tags designboom design)
 | |
| 	case *dezeen*
 | |
| 		tags=($tags dezeen design)
 | |
| 	case *infosthetics*
 | |
| 		tags=($tags infosthetics design)
 | |
| 	case *inhabitat*
 | |
| 		tags=($tags inhabitat architecture design)
 | |
| 	case *luigicolani*
 | |
| 		tags=($tags luigicolani design)
 | |
| 	case *mocoloco*
 | |
| 		tags=($tags mocoloco design)
 | |
| 	case *sydmead*
 | |
| 		tags=($tags sydmead design)
 | |
| 	case *dzima*
 | |
| 		tags=($tags dzima)
 | |
| 	case *bbcicecream*
 | |
| 		tags=($tags bbcicecream fashion)
 | |
| 	case *DamStyle *damstyle*
 | |
| 		tags=($tags damstyle fashion)
 | |
| 	case *facehunter*
 | |
| 		tags=($tags facehunter fashion)
 | |
| 	case *StilInBerlin* *Stilinberlin*
 | |
| 		tags=($tags germany fashion)
 | |
| 	case *jstreets*
 | |
| 		tags=($tags jstreets japan fashion)
 | |
| 	case *stylefromtokyo*
 | |
| 		tags=($tags stylefromtokyo japan fashion)
 | |
| 	case *tokyofashion*
 | |
| 		tags=($tags tokyofashion japan fashion)
 | |
| 	case *flames.gif* *flamesgif*
 | |
| 		tags=($tags flames.gif)
 | |
| 	case *contemporary-home-computing*
 | |
| 		tags=($tags software flames.gif)
 | |
| 	case *acceler8or.com*
 | |
| 		tags=($tags acceler8or future)
 | |
| 	case *afrocyberpunk.wordpress.com*
 | |
| 		tags=($tags afrocyberpunk future)
 | |
| 	case *hyperallergic.com*
 | |
| 		tags=($tags hyperallergic future)
 | |
| 	case *kurzweil*
 | |
| 		tags=($tags kurzweil future)
 | |
| 	case *longnow*
 | |
| 		tags=($tags longnow future)
 | |
| 	case *OpenTheFuture*
 | |
| 		tags=($tags openthefuture future)
 | |
| 	case *theverge.com*
 | |
| 		tags=($tags theverge future)
 | |
| 	case *golang* *blog.nella.org*
 | |
| 		tags=($tags golang)
 | |
| 	case *googlepluses*
 | |
| 		tags=($tags google)
 | |
| 	case *news.ycombinator.com*
 | |
| 		tags=($tags hackernews hack)
 | |
| 	case *seanbonner*
 | |
| 		tags=($tags sean_bonner hack)
 | |
| 	case *banriman*
 | |
| 		tags=($tags banriman japan)
 | |
| 	case *japansubculture*
 | |
| 		tags=($tags japansubculture japan)
 | |
| 	case *jeansnow*
 | |
| 		tags=($tags jeansnow japan)
 | |
| 	case *Kotaku* *kotaku*
 | |
| 		tags=($tags kotaku video_games)
 | |
| 	case *eforemario*
 | |
| 		tags=($tags before_mario video_games)
 | |
| 	case *instagram* *web.stagram.com*
 | |
| 		tags=($tags instagram)
 | |
| 	case *nakakobooks*
 | |
| 		tags=($tags books nakakobooks japan)
 | |
| 	case *ozawamaria*
 | |
| 		tags=($tags maria_ozawa japan)
 | |
| 	case *Shibuya246*
 | |
| 		tags=($tags shibuya246 japan)
 | |
| 	case *shisaku.blogspot.com*
 | |
| 		tags=($tags shisaku japan)
 | |
| 	case *jimshooter*
 | |
| 		tags=($tags comics jim_shooter)
 | |
| 	case *LettersOfNote* *lettersofnote*
 | |
| 		tags=($tags letters)
 | |
| 	case *nasa*letters.rss*
 | |
| 		tags=($tags nasa letters)
 | |
| 	case *kore.livejournal.com*
 | |
| 		tags=($tags kore livejournal)
 | |
| 	case *real-funny-lady.livejournal.com*
 | |
| 		tags=($tags rea_funny_lady livejournal)
 | |
| 	case *vintage-ads.livejournal.com*
 | |
| 		tags=($tags vintage_ads livejournal)
 | |
| 	case *hellodamage*
 | |
| 		tags=($tags comics hellodamage manga)
 | |
| 	case *manganews*
 | |
| 		tags=($tags comics manganews manga)
 | |
| 	case *naokiurasawa*
 | |
| 		tags=($tags comics naokiurasawa manga)
 | |
| 	case *samehat*
 | |
| 		tags=($tags comics samehat manga)
 | |
| 	case *mangatraders*
 | |
| 		tags=($tags p2p comics manga)
 | |
| 	case *hortonheardawho*
 | |
| 		tags=($tags hortonheardawho flickr nasa mars)
 | |
| 	case *marstoday.com*
 | |
| 		tags=($tags marstoday mars)
 | |
| 	case *kielbryant*
 | |
| 		tags=($tags kiel_bryant flickr)
 | |
| 	case *flickr*paoru*
 | |
| 		tags=($tags paoru flickr)
 | |
| 	case *me-vs-gutenberg* *mevsgutenberg*
 | |
| 		tags=($tags martin_sand)
 | |
| 	case *marxy*
 | |
| 		tags=($tags marxy)
 | |
| 	case *etamodern*
 | |
| 		tags=($tags metamodern)
 | |
| 	case *aviationintel*
 | |
| 		tags=($tags aviationintel mil)
 | |
| 	case *aviationweek*
 | |
| 		tags=($tags aviationweek mil)
 | |
| 	case *codeonemagazine*
 | |
| 		tags=($tags codeonemagazine mil)
 | |
| 	case *geimint*
 | |
| 		tags=($tags geimint mil)
 | |
| 	case *momus* *mrstsk*
 | |
| 		tags=($tags books music momus)
 | |
| 	case *bjork*
 | |
| 		tags=($tags bjork music)
 | |
| 	case *c-h-r-i-s-c-a-r-t-e-r*
 | |
| 		tags=($tags chris_carter music)
 | |
| 	case *toog*
 | |
| 		tags=($tags toog music)
 | |
| 	case *nasa.gov*
 | |
| 		tags=($tags space nasa)
 | |
| 	case *mongoliad*
 | |
| 		tags=($tags neal_stephenson)
 | |
| 	case *gaiman*
 | |
| 		tags=($tags comics neil_gaiman)
 | |
| 	case *111567547782666546187*
 | |
| 		tags=($tags daniel_rehn gplus)
 | |
| 	case *114408853762245370512*
 | |
| 		tags=($tags francesco_cardi gplus)
 | |
| 	case *106673611724400311137*
 | |
| 		tags=($tags mark_jondahl gplus)
 | |
| 	case *113974084460235989118*
 | |
| 		tags=($tags jose_nazario gplus)
 | |
| 	case *102089697005520721324*
 | |
| 		tags=($tags zaki_hasan gplus)
 | |
| 	case *nin.com* *feeds.nin.com*
 | |
| 		tags=($tags music nin.com nin)
 | |
| 	case *ninofficialnews.tumblr.com*
 | |
| 		tags=($tags music tumblr nin)
 | |
| 	case *nix-os* *syssoftware*
 | |
| 		tags=($tags plan9 nix)
 | |
| 	case *bsdly* *OPENBSD* *OpenBSD* *openbsd* *scientist-home* *undeadly*
 | |
| 		tags=($tags software openbsd)
 | |
| 	case *godownmatthew* *mysticmilk* *petetoms*
 | |
| 		tags=($tags pete_toms)
 | |
| 	case *Pitchfork* *pitchfork*
 | |
| 		tags=($tags music pitchfork)
 | |
| 	case *9gridchan* *cat-v* *maht0x0r* *Plan9* *plan9*
 | |
| 		tags=($tags software plan9)
 | |
| 	case *FlauntTalks* *prince.org* *purpleinterviews* *wendyandlisa*
 | |
| 		tags=($tags music prince)
 | |
| 	case *101960720994009339267*
 | |
| 		tags=($tags gplus rob_pike)
 | |
| 	case *commandcenter* *rob_pike*
 | |
| 		tags=($tags blogger rob_pike)
 | |
| 	case *prometheus*
 | |
| 		tags=($tags telescreen prometheus)
 | |
| 	case *reddit.com*
 | |
| 		tags=($tags reddit)
 | |
| 	case *swtch.com*
 | |
| 		tags=($tags golang plan9 rsc)
 | |
| 	case *bunniestudios*
 | |
| 		tags=($tags bunniestudios security)
 | |
| 	case *jwz*
 | |
| 		tags=($tags jwz security)
 | |
| 	case *Krebs* *krebs*
 | |
| 		tags=($tags krebs security)
 | |
| 	case *scarybeastsecurity*
 | |
| 		tags=($tags scarybeast security)
 | |
| 	case *schneier*
 | |
| 		tags=($tags bruce_schneier security)
 | |
| 	case *chinchillakwak* *skwak*
 | |
| 		tags=($tags skwak)
 | |
| 	case *slashdot*
 | |
| 		tags=($tags slashdot)
 | |
| 	case *spaceref.com*
 | |
| 		tags=($tags space spaceref)
 | |
| 	case *StanleyLieber* *stanleylieber*
 | |
| 		tags=($tags stanleylieber)
 | |
| 	case *fastcompany*
 | |
| 		tags=($tags fastcompany tech)
 | |
| 	case *gizchina.com*
 | |
| 		tags=($tags gizchina tech)
 | |
| 	case *danharmon*
 | |
| 		tags=($tags danharmon telescreen)
 | |
| 	case *mindlessones*
 | |
| 		tags=($tags mindlessones telescreen)
 | |
| 	case *tcj.com*
 | |
| 		tags=($tags comics tcj)
 | |
| 	case *TEDBlog* *TEDblog* *ted.com*
 | |
| 		tags=($tags ted)
 | |
| 	case *ticom*
 | |
| 		tags=($tags ticom security)
 | |
| 	case *orrentfreak*
 | |
| 		tags=($tags p2p torrentfreak)
 | |
| 	case *ultra*culture*
 | |
| 		tags=($tags ultraculture)
 | |
| 	case *kleinletters*
 | |
| 		tags=($tags comics todd_klein)
 | |
| 	case *collectiondx.com*
 | |
| 		tags=($tags collectiondx toys)
 | |
| 	case *kennercollector.com*
 | |
| 		tags=($tags kennercollector toys)
 | |
| 	case *plaidstallions*
 | |
| 		tags=($tags plaidstallions toys)
 | |
| 	case *shojikawamori*
 | |
| 		tags=($tags shojikawamori japan toys)
 | |
| 	case *tumblr*
 | |
| 		tags=($tags tumblr)
 | |
| 	case *ruinedcartridge*
 | |
| 		tags=($tags ruinedcartridge basscomm video_games)
 | |
| 	}
 | |
| 	echo -n $tags
 | |
| }
 | |
| 
 | |
| fn parse_posts{
 | |
| 	ifs='
 | |
| ' {
 | |
| 		posts=`{cat $file}
 | |
| 		for(i in `{seq 1 $#posts | sort -nr}){
 | |
| 			post=$posts($i)
 | |
| 			if(! ~ $post ''){
 | |
| 				a_title=`{echo $post | sed 's/^.*HJDIVIDERtitle: //g; s/HJDIVIDER.*$//g'}
 | |
| 				a_date=`{date}
 | |
| 				a_link=`{echo $post | sed 's/^.*HJDIVIDERlink:  //g; s/HJDIVIDER.*$//g'}
 | |
| 				a_body=`{echo $post | sed 's/^.*HJDIVIDER//g; s/^.*HJDIVIDER//g; s/^.*HJDIVIDER//g'}
 | |
| 				a_id=`{echo `{ls -p $werc/sites/$site/src | sort -n | tail -1}^+1 | bc}
 | |
| 				if(~ $#a_id 0)
 | |
| 					a_id=1
 | |
| 				while(test -d $werc/sites/$site/src/$a_id)
 | |
| 					a_id=`{echo $a_id^+1 | bc}
 | |
| 				if(! ~ $"a_link '' && ! grep -s `{echo $"a_link | md5sum} $werc/sites/$site/links){
 | |
| 					mkdir -p $werc/sites/$site/src/$a_id/tags # big fat race
 | |
| 					echo $"a_title >$werc/sites/$site/src/$a_id/title
 | |
| 					echo $"a_date >$werc/sites/$site/src/$a_id/date
 | |
| 					echo $a_link(1) >$werc/sites/$site/src/$a_id/link
 | |
| 					echo $a_link(1) | md5sum >>$werc/sites/$site/links
 | |
| 					echo $"a_body '</a></li></ul>' >$werc/sites/$site/src/$a_id/body
 | |
| 					ifs=' ' {
 | |
| 						for(j in `{get_tags}){
 | |
| 							>$werc/sites/$site/src/$a_id/tags/$j
 | |
| 							echo $a_id/tags/$j >>$werc/sites/$site/tags
 | |
| 						}
 | |
| 					}
 | |
| 				}
 | |
| 				if(test -f /boot/factotum && ~ $site *.stanleylieber.com && test -d $werc/sites/$site/src/$a_id)
 | |
| 					chmod +t $werc/sites/$site/src/$a_id $werc/sites/$site/src/$a_id $werc/sites/$site/src/$a_id $werc/sites/$site/src/$a_id/* $werc/sites/$site/src/$a_id $werc/sites/$site/src/$a_id/tags/*
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| if(test -f /boot/factotum && test -f /rc/bin/hget)
 | |
| 	webfs
 | |
| get_posts
 | |
| parse_posts
 | 
