Siirry sisältöön

Ero sivun ”Koodilistaus:Jamoget” versioiden välillä

Mummilan wikistä
to 28.1.2010 15.03.17 +0200
p siirsi sivun Koodilistaus:jamoget uudelle nimelle Koodilistaus:Jamoget
 
(3 välissä olevaa versiota samalta käyttäjältä ei näytetä)
Rivi 19: Rivi 19:
#
#
#
#
# Jamoget to 28.1.2010 15.03.17 +0200
# Jamoget pe 29.1.2010 09.36.30 +0200
#
# Changes since to 28.1.2010 20.39.12 +0200
# - --torrent[s]only
#
# Changes since to to 28.1.2010 18.23.25 +0200
# - ripped out faulty debugging scheme
#
# Changes since 28.1.2010 17.57.08 +0200
# - use album ID: as info prefix instead of INFO:
#
# Changes since to 28.1.2010 15.03.17 +0200
# - fix reverse logic of debugging
#
#
# Changes since to 21.1.2010 18.52.51 +0200
# Changes since to 21.1.2010 18.52.51 +0200
Rivi 79: Rivi 91:


# non-empty for true
# non-empty for true
DEBUG=true
DEBUG=


# YOU WILL ALSO NEED TO EDIT ~/.jamssirc!
# YOU WILL ALSO NEED TO EDIT ~/.jamssirc!
# use it to define the remote user and server for use with ssh.
#USER=remoteuser
#SERVER=remoteserver


# END CONFIGURATION
# END CONFIGURATION
Rivi 91: Rivi 106:




QUIET="> /dev/null 2>&1"
if [[ "x$DEBUG" == "x" ]]
then
QUIET=
fi




Rivi 108: Rivi 118:


ssh -n $USER@$SERVER "mkdir -p 'jamssia-${1}'" || { echo "ERROR: Unable to create working directory."; exit 1; }
ssh -n $USER@$SERVER "mkdir -p 'jamssia-${1}'" || { echo "ERROR: Unable to create working directory."; exit 1; }
echo -n "INFO: Remotely downloading .zip... "
echo -n "${1}: Remotely downloading .zip... "
ssh -n $USER@$SERVER "cd 'jamssia-${1}' && wget -T 0 -t 0 $limit 'http://www.jamendo.com/get/album/id/album/archiverestricted/redirect/${1}/?p2pnet=bittorrent${2}' $QUIET" || { echo "failed. Skipping."; return 1; }
ssh -n $USER@$SERVER "cd 'jamssia-${1}' && wget -T 0 -t 0 $limit 'http://www.jamendo.com/get/album/id/album/archiverestricted/redirect/${1}/?p2pnet=bittorrent${2}' > /dev/null 2>&1" || { echo "failed. Skipping."; return 1; }
echo "done."
echo "done."
ALBUM=`ssh -n $USER@$SERVER "cd jamssia-${1} && echo *.zip"`
ALBUM=`ssh -n $USER@$SERVER "cd jamssia-${1} && echo *.zip"`
Rivi 115: Rivi 125:
ssh -n $USER@$SERVER "mkdir -p 'jamssia-${1}/${ALBUM}'"
ssh -n $USER@$SERVER "mkdir -p 'jamssia-${1}/${ALBUM}'"
ssh -n $USER@$SERVER "mv 'jamssia-${1}/${ALBUM}.zip' 'jamssia-${1}/${ALBUM%.zip}/${1}.zip'"
ssh -n $USER@$SERVER "mv 'jamssia-${1}/${ALBUM}.zip' 'jamssia-${1}/${ALBUM%.zip}/${1}.zip'"
echo -n "INFO: Unzipping..."
echo -n "${1}: Unzipping..."
ssh -n $USER@$SERVER "cd 'jamssia-${1}/${ALBUM}' && unzip -q '${1}.zip'" || { echo "failed. Skipping."; return 1; }
ssh -n $USER@$SERVER "cd 'jamssia-${1}/${ALBUM}' && unzip -q '${1}.zip'" || { echo "failed. Skipping."; return 1; }
echo "done."
echo "done."
ssh -n $USER@$SERVER "cd 'jamssia-${1}/${ALBUM}' && rm -f '${1}.zip'"
ssh -n $USER@$SERVER "cd 'jamssia-${1}/${ALBUM}' && rm -f '${1}.zip'"
echo -n "INFO: Recompressing..."
echo -n "${1}: Recompressing..."
ssh -n $USER@$SERVER "cd 'jamssia-${1}' && tar cjf '${1}.tar.bz2' '${ALBUM}'" || { echo "failed. Skipping."; return 1; }
ssh -n $USER@$SERVER "cd 'jamssia-${1}' && tar cjf '${1}.tar.bz2' '${ALBUM}'" || { echo "failed. Skipping."; return 1; }
echo "done."
echo "done."
echo "INFO: Downloading .tar.bz2:"
echo "${1}: Downloading .tar.bz2:"
scp $USER@$SERVER:jamssia-${1}/${1}.tar.bz2 . || { echo "failed. Skipping."; return 1; }
scp $USER@$SERVER:jamssia-${1}/${1}.tar.bz2 . || { echo "failed. Skipping."; return 1; }
echo "done."
ssh -n $USER@$SERVER "rm -rf 'jamssia-${1}'"
ssh -n $USER@$SERVER "rm -rf 'jamssia-${1}'"
return 0;
return 0;
Rivi 143: Rivi 152:
shift
shift
fi
fi
torrentonly=
if [[ "$1" == "--torrentonly" || "$1" == "--torrentsonly" ]]
then
torrentonly=true
shift
fi
idlist=`mktemp -t`
idlist=`mktemp -t`
if [ -e idlist ]
if [ -e idlist ]
Rivi 165: Rivi 182:
   torrentformat=
   torrentformat=
fi
fi
echo "idlist=$idlist"
 
while read albumid ; do
while read albumid ; do


Rivi 171: Rivi 188:
if [[ "${printuris}" == "true" ]]
if [[ "${printuris}" == "true" ]]
then
then
echo "INFO: Album URI=http://www.jamendo.com/get/album/id/album/archiverestricted/redirect/${albumid}/?p2pnet=bittorrent${downloadformat}"
echo "${albumid}: Album URI=http://www.jamendo.com/get/album/id/album/archiverestricted/redirect/${albumid}/?p2pnet=bittorrent${downloadformat}"
echo "INFO: Torrent URI=http://api.jamendo.com/get2/bittorrent/file/redirect/?album_id=${albumid}&type=archive${torrentformat}"
echo "${albumid}: Torrent URI=http://api.jamendo.com/get2/bittorrent/file/redirect/?album_id=${albumid}&type=archive${torrentformat}"
continue
continue
fi
fi


mkdir -p "/tmp/jamoget-${albumid}/extracted" "/tmp/jamoget-${albumid}/errorsonunzip" || { echo "ERROR: Creating temporary output directories."; exit; }
mkdir -p "/tmp/jamoget-${albumid}/extracted" "/tmp/jamoget-${albumid}/errorsonunzip" || { echo "ERROR: Creating temporary output directories."; exit; }
pushd "/tmp/jamoget-${albumid}" $QUIET
pushd "/tmp/jamoget-${albumid}" > /dev/null 2>&1


echo -n "INFO: Downloading .torrent... "
echo -n "${albumid}: Downloading .torrent... "
wget --quiet -t 0 -nv --continue -O ${albumid}.torrent "http://api.jamendo.com/get2/bittorrent/file/redirect/?album_id=${albumid}&type=archive${torrentformat}" $QUIET || { echo "failed. Skipping."; popd $QUIET; continue; }
wget -t 0 -nv --continue -O ${albumid}.torrent "http://api.jamendo.com/get2/bittorrent/file/redirect/?album_id=${albumid}&type=archive${torrentformat}" > /dev/null 2>&1 || { echo "failed. Skipping."; popd > /dev/null 2>&1; continue; }
echo "done."
echo "done."
if [[ "${torrentonly}" == "true" ]]
then
echo -n "${albumid}: Moving .torrent to watch directory... "
mv -f ${albumid}.torrent "${torrentfiletarget%/}/"
echo "done."
cd /tmp && rm -rf "jamoget-${albumid}"
popd > /dev/null 2>&1
continue;
fi


if [[ "`basename $0`" == "jamssi" ]]
if [[ "`basename $0`" == "jamssi" ]]
then
then
jamssia "${albumid}" "${downloadformat}" || { popd $QUIET; continue; }
jamssia "${albumid}" "${downloadformat}" || { popd > /dev/null 2>&1; continue; }
cp "${albumid}.tar.bz2" "${downloadtarget%/}/"
cp "${albumid}.tar.bz2" "${downloadtarget%/}/"
pushd "${downloadtarget}" $QUIET
pushd "${downloadtarget}" > /dev/null 2>&1
echo "INFO: Bunzipping+untarring to torrents directory and moving tar.bz2 to extracted directory, .torrent to watch directory"
echo -n "${albumid}: Uncompressing, moving .torrent to watch directory... "
tar xf "${albumid}.tar.bz2" && { popd $QUIET && rm "${albumid}.tar.bz2" && mv ${albumid}.torrent "${torrentfiletarget%/}/" && pushd "${downloadtarget}" $QUIET; } && rm "${albumid}.tar.bz2"
tar xf "${albumid}.tar.bz2" && { popd > /dev/null 2>&1 && rm "${albumid}.tar.bz2" && mv ${albumid}.torrent "${torrentfiletarget%/}/" && pushd "${downloadtarget}" > /dev/null 2>&1; } && rm "${albumid}.tar.bz2"
popd $QUIET
echo "done."
echo "${albumid}: All done."
for i in `seq 1 ${COLUMNS}`;
do
        echo -n "-"
done
echo ""
popd > /dev/null 2>&1
else
else
echo -n "INFO: Downloading .zip... "
echo -n "${albumid}: Downloading .zip... "
LC_ALL=C wget -t 0 $limit $continue "http://www.jamendo.com/get/album/id/album/archiverestricted/redirect/${albumid}/?p2pnet=bittorrent${downloadformat}" $QUIET || { echo "failed. Skipping."; popd $QUIET; continue; }
LC_ALL=C wget -t 0 $limit $continue "http://www.jamendo.com/get/album/id/album/archiverestricted/redirect/${albumid}/?p2pnet=bittorrent${downloadformat}" > /dev/null 2>&1 || { echo "failed. Skipping."; popd > /dev/null 2>&1; continue; }


echo "INFO: Unzipping"
find . -maxdepth 1 -name "*.zip" > ziplistfile
find . -maxdepth 1 -name "*.zip" > ziplistfile
while read zipfile ; do
while read zipfile ; do
echo "INFO: Unzipping to torrents directory and moving ZIP to extracted directory, .torrent to watch directory"
echo -n "${albumid}: Unzipping, moving .torrent to watch directory..."
unzip -q -n "${zipfile}" -d unzipped && mv unzipped "${downloadtarget%/}/${zipfile%.zip}" && mv "${zipfile}" extracted/ && mv ${albumid}.torrent "${torrentfiletarget%/}/"
unzip -q -n "${zipfile}" -d unzipped && mv unzipped "${downloadtarget%/}/${zipfile%.zip}" && mv "${zipfile}" extracted/ && mv ${albumid}.torrent "${torrentfiletarget%/}/"
echo "done."
done < ziplistfile
done < ziplistfile
rm ziplistfile
rm ziplistfile
Rivi 205: Rivi 239:
fi
fi


mv *.zip errorsonunzip/ $QUIET
mv *.zip errorsonunzip/ > /dev/null 2>&1
mv *.bz2 errorsonunzip/ $QUIET
mv *.bz2 errorsonunzip/ > /dev/null 2>&1
mv *.torrent errorsonunzip/ $QUIET
mv *.torrent errorsonunzip/ > /dev/null 2>&1
if [ "$(ls -A errorsonunzip/)" ]; then
if [ "$(ls -A errorsonunzip/)" ]; then
cp $idlist errorsonunzip/idlist
cp $idlist errorsonunzip/idlist
echo "ERROR: While uncompressing. Downloaded files saved in /tmp/jamoget-${albumid}/errorsonunzip/."
echo "${albumid}: Error while uncompressing. Downloaded files saved in /tmp/jamoget-${albumid}/errorsonunzip/."
else
else
cd /tmp && rm -rf "jamoget-${albumid}"
cd /tmp && rm -rf "jamoget-${albumid}"
fi
fi
popd $QUIET
popd > /dev/null 2>&1
done < $idlist
done < $idlist


rm $idlist
rm $idlist
echo "INFO: Script finished"</pre>
echo "All done."</pre>
[[Luokka:Muut sisältötyypit]]
[[Luokka:Muut sisältötyypit]]

Nykyinen versio 21. maaliskuuta 2010 kello 17.56

<metadesc content="Bash-komentojono, joka lataa Jamendosta albumin Ogg Vorbis -muodossa ja panee sen sitten jakoon." /> Lataa tiedostona: [{{#file: jamoget}} jamoget]

Tämä Bash-komentojono lataa sille parametreina tai tiedostossa (nykyisessä hakemistossa oleva idlist-niminen tiedosto) listatut albumit Jamendosta Ogg Vorbis -muotoisina, ja pudottaa ne sen jälkeen Bittorrent-asiakasohjelman jakoon. Albumit tulee antaa pelkästään niiden tunnusnumeroilla, esimerkiksi näin: jamoget 42673 43733

Mikäli albumit luetellaan tiedostossa, ne tulee erotella toisistaan rivinvaihdoilla.

Komentojonon käyttöönotto vaatii melko varmasti mukailua hakemistoviittausten (CONFIGURATION-osio) osalta.

Tämä on oma muunnelmani Jamendon foorumilta löytyneestä alkuperäisteoksesta, jonka on luonut The Chilling Spirit. Alkuperäisen lisenssi on tuntematon, todennäköisesti kuitenkin vapaa.

{{#fileanchor: jamoget}}

#!/bin/bash

# TODO:
#	- convert --limit to kbps, pass on to scp
#	- test rc for sanity
#
#
#
# Jamoget pe 29.1.2010 09.36.30 +0200
#
# Changes since to 28.1.2010 20.39.12 +0200
#	- --torrent[s]only
#
# Changes since to to 28.1.2010 18.23.25 +0200
#	- ripped out faulty debugging scheme
#
# Changes since 28.1.2010 17.57.08 +0200
#	- use album ID: as info prefix instead of INFO:
#
# Changes since to 28.1.2010 15.03.17 +0200
#	- fix reverse logic of debugging
#
# Changes since to 21.1.2010 18.52.51 +0200
#	- fused external downloading
#
# Changes since ke 20.1.2010 21.34.36 +0200
#	- incorporate/externalize remote downloading
#
# Changes since ke 20.1.2010 20.54.19 +0200
#	- be wewy wewy quiet
#
# Changes since ma 18.1.2010 21.18.33 +0200
#	- fix handling of uris readily pointing at the archive (/?p2pnet=...)
#
# Changes since ma 18.1.2010 20.52.53 +0200
#	- configurable continue
#
# Changes since ma 2.11.2009 14:04:20 +0200
#	- experimental workaround for braindead unzip
#
# Changes since ti 27.10.2009 13:38:33 +0200
#	- --printuris parameter
#
# Changes since ma 26.10.2009 11:03:29 +0200
#	- accept album URLs as parameters
#
# Changes since ma 26.10.2009 10:55:26 +0200
#	- retry infinitely
#
# Changes since ma 12.10.2009 09:18:07 +0300
#	- fix: Ogg downloading bug
#
# Changes since ke 20.5.2009 11:16:31 +0300
#	- download mp3 if ran as jampget
#
# Changes since ke 13.5.2009 12:55:14 +0300
#	- save idlist if errors occur
#
# Changes since ke 13.5.2009 11:11:02 +0300
#	- download and torrent file target directories now configurable through variables
#
# Changes since ke 13.5.2009 10:30:00 +0300:
#	- mentioning of limit-rate in usage
#
# Changes since ke 13.5.2009 10:20:04 +0300:
#	- implements limit-rate for wget
#
# This will download album ZIP files from Jamendo directly. By default it gets Ogg Vorbis,
# remove the last parameter from the wget lines to get MP3
# It will then also grab the .torrent file, unzip the album and move the .torrent to your client's watch directory.
# Put the IDs of all the albums you want into a file called idlist, one id per line.

# CONFIGURATION
downloadtarget=/home/jani/Julkinen/Musiikki
torrentfiletarget=/home/jani/Lataukset

# either --continue or empty for "no continue"
continue=

# non-empty for true
DEBUG=

# YOU WILL ALSO NEED TO EDIT ~/.jamssirc!
# use it to define the remote user and server for use with ssh.
#USER=remoteuser
#SERVER=remoteserver

# END CONFIGURATION









# jamssi actual
function jamssia {
	if [ $# -lt 2 ]
	then
		exit 1
	fi

	. ~/.jamssirc

	ssh -n $USER@$SERVER "mkdir -p 'jamssia-${1}'" || { echo "ERROR: Unable to create working directory."; exit 1; }
	echo -n "${1}: Remotely downloading .zip... "
	ssh -n $USER@$SERVER "cd 'jamssia-${1}' && wget -T 0 -t 0 $limit 'http://www.jamendo.com/get/album/id/album/archiverestricted/redirect/${1}/?p2pnet=bittorrent${2}' > /dev/null 2>&1" || { echo "failed. Skipping."; return 1; }
	echo "done."
	ALBUM=`ssh -n $USER@$SERVER "cd jamssia-${1} && echo *.zip"`
	ALBUM="${ALBUM%.zip}"
	ssh -n $USER@$SERVER "mkdir -p 'jamssia-${1}/${ALBUM}'"
	ssh -n $USER@$SERVER "mv 'jamssia-${1}/${ALBUM}.zip' 'jamssia-${1}/${ALBUM%.zip}/${1}.zip'"
	echo -n "${1}: Unzipping..."
	ssh -n $USER@$SERVER "cd 'jamssia-${1}/${ALBUM}' && unzip -q '${1}.zip'" || { echo "failed. Skipping."; return 1; }
	echo "done."
	ssh -n $USER@$SERVER "cd 'jamssia-${1}/${ALBUM}' && rm -f '${1}.zip'"
	echo -n "${1}: Recompressing..."
	ssh -n $USER@$SERVER "cd 'jamssia-${1}' && tar cjf '${1}.tar.bz2' '${ALBUM}'" || { echo "failed. Skipping."; return 1; }
	echo "done."
	echo "${1}: Downloading .tar.bz2:"
	scp $USER@$SERVER:jamssia-${1}/${1}.tar.bz2 . || { echo "failed. Skipping."; return 1; }
	ssh -n $USER@$SERVER "rm -rf 'jamssia-${1}'"
	return 0;
}

limit=
if [[ "$1" == "--limit" || "$1" == "--limit-rate" ]]
then
	shift
	limit=--limit-rate=$1
	shift
fi

printuris=
if [[ "$1" == "--printuris" ]]
then
	printuris=true
	shift
fi

torrentonly=
if [[ "$1" == "--torrentonly" || "$1" == "--torrentsonly" ]]
then
	torrentonly=true
	shift
fi

idlist=`mktemp -t`
if [ -e idlist ]
then
	uniq idlist > $idlist
else
	if [ $# -lt 1 ]
	then
		echo "usage: `basename ${0}` [--limit-rate amount] album_id|album_url..."
		exit 1
	fi
	for id in $@ ; do
		echo $id >> $idlist
	done
fi

downloadformat="&are=ogg3"
torrentformat="&class=ogg3"
if [[ "`basename $0`" == "jampget" ]]
then
  downloadformat=
  torrentformat=
fi

while read albumid ; do

	albumid=`basename "${albumid%/?p2pnet=bittorrent${downloadformat}}"`
	if [[ "${printuris}" == "true" ]]
	then
		echo "${albumid}: Album URI=http://www.jamendo.com/get/album/id/album/archiverestricted/redirect/${albumid}/?p2pnet=bittorrent${downloadformat}"
		echo "${albumid}: Torrent URI=http://api.jamendo.com/get2/bittorrent/file/redirect/?album_id=${albumid}&type=archive${torrentformat}"
		continue
	fi

	mkdir -p "/tmp/jamoget-${albumid}/extracted" "/tmp/jamoget-${albumid}/errorsonunzip" || { echo "ERROR: Creating temporary output directories."; exit; }
	pushd "/tmp/jamoget-${albumid}" > /dev/null 2>&1

	echo -n "${albumid}: Downloading .torrent... "
	wget -t 0 -nv --continue -O ${albumid}.torrent "http://api.jamendo.com/get2/bittorrent/file/redirect/?album_id=${albumid}&type=archive${torrentformat}" > /dev/null 2>&1 || { echo "failed. Skipping."; popd > /dev/null 2>&1; continue; }
	echo "done."

	if [[ "${torrentonly}" == "true" ]]
	then
		echo -n "${albumid}: Moving .torrent to watch directory... "
		mv -f ${albumid}.torrent "${torrentfiletarget%/}/"
		echo "done."
		cd /tmp && rm -rf "jamoget-${albumid}"
		popd > /dev/null 2>&1
		continue;
	fi

	if [[ "`basename $0`" == "jamssi" ]]
	then
		jamssia "${albumid}" "${downloadformat}" || { popd > /dev/null 2>&1; continue; }
		cp "${albumid}.tar.bz2" "${downloadtarget%/}/"
		pushd "${downloadtarget}" > /dev/null 2>&1
		echo -n "${albumid}: Uncompressing, moving .torrent to watch directory... "
		tar xf "${albumid}.tar.bz2" && { popd > /dev/null 2>&1 && rm "${albumid}.tar.bz2" && mv ${albumid}.torrent "${torrentfiletarget%/}/" && pushd "${downloadtarget}" > /dev/null 2>&1; } && rm "${albumid}.tar.bz2"
		echo "done."
		echo "${albumid}: All done."
		for i in `seq 1 ${COLUMNS}`;
		do
		        echo -n "-"
		done
		echo ""
		popd > /dev/null 2>&1
	else
		echo -n "${albumid}: Downloading .zip... "
		LC_ALL=C wget -t 0 $limit $continue "http://www.jamendo.com/get/album/id/album/archiverestricted/redirect/${albumid}/?p2pnet=bittorrent${downloadformat}" > /dev/null 2>&1 || { echo "failed. Skipping."; popd > /dev/null 2>&1; continue; }

		find . -maxdepth 1 -name "*.zip" > ziplistfile
		while read zipfile ; do
			echo -n "${albumid}: Unzipping, moving .torrent to watch directory..."
			unzip -q -n "${zipfile}" -d unzipped && mv unzipped "${downloadtarget%/}/${zipfile%.zip}" && mv "${zipfile}" extracted/ && mv ${albumid}.torrent "${torrentfiletarget%/}/"
			echo "done."
		done < ziplistfile
		rm ziplistfile

	fi

	mv *.zip errorsonunzip/ > /dev/null 2>&1
	mv *.bz2 errorsonunzip/ > /dev/null 2>&1
	mv *.torrent errorsonunzip/ > /dev/null 2>&1
	if [ "$(ls -A errorsonunzip/)" ]; then
		cp $idlist errorsonunzip/idlist
		echo "${albumid}: Error while uncompressing. Downloaded files saved in /tmp/jamoget-${albumid}/errorsonunzip/."
	else
		cd /tmp && rm -rf "jamoget-${albumid}"
	fi
	popd > /dev/null 2>&1
done < $idlist

rm $idlist
echo "All done."