#!/bin/rc # data matches 'https?://.*\.bandcamp.com/(track|album)/[^ /]+' # plumb start window -scroll -r 0 416 9000 756 bandcamp $data rfork e if(! ~ $1 https://*.bandcamp.com/^(track album)^/*){ echo 'usage: bandcamp https://artist.bandcamp.com/(track|album)/name' >[1=2] exit usage } name = `'./'{echo -n $1} dir = /tmp/mp3/$name(2) if(~ $name(5) album) dir = $dir/$name(6) hget $1 | tr ',{}' \xa\xa\xa | awk ' //{ sub(".*href=\"", "hget ''") sub("\".*", "'' > ") art = $0 } /^"track_num":[0-9]+$/{ sub(".*:", "") num[numi++] = $0 } /^"title_link":"\/track\/[^"]+"$/{ sub("\"title_link\":\"\/track\/", "") sub("\"$", ".mp3") title[titlei++] = $0 } /^"mp3[^"]*":"[^"]+"$/{ sub("\"mp3[^\"]*\":\"", "hget ''") sub("\"$", "'' | tput -p > ") url[urli++] = $0 } /.*.*<\/title>/{ sub(".*<title>", "") sub(".*", "") about = $0 } /^"(credits|about)":"[^"]+"$/{ sub("\"(credits|about)\":\"", "\n\n") sub("\"$", "") about = about $0 } END{ if(numi != titlei || numi != urli) exit "numbers off" print "mkdir -p " ENVIRON["dir"] for(i = 0; i < numi; i++){ file = sprintf("%s/%02d-%s", ENVIRON["dir"], num[i], title[i]) print "echo -n " file " ''\t''" print url[i] file " |[2] aux/statusmsg -t" } if(art){ print "echo -n " ENVIRON["dir"] "/art.jpg ''\t''" print art ENVIRON["dir"] "/art.jpg |[2] aux/statusmsg -t" } if(about != ""){ gsub("\\\\r", "", about) gsub("\\\\n", "\n", about) print "cat < " ENVIRON["dir"] "/about.txt" print about print "FiNgErScRoSsEd" } } ' | rc