Ăn cắp nhạc trên vi en miu dích

Trên website phiên bản cũ của Hội nhạc sĩ Việt Nam có khoảng hơn 200 album, trong đó cũng có một vài cái nghe hay hay. Ngày xưa mình cũng đã tải về một ít, hôm nay định tải tiếp thì thấy có vài điểm thay đổi về mã HTML nên viết lại cái này. Ai hiểu được chết liền.

# !/bin/sh
# Tải thông tin về các album trên vnmusic.com.vn

url='http://vnmusic.com.vn/music/uploads/media'

echo "Type the album ID:"
read AID

# Check for file existence
if [ -f album_"$AID".html ]
then
	rm -f album_"$AID".html
fi

# Download page
wget http://vnmusic.com.vn/ver1/index.php?aid=album\&id=$AID -O album_"$AID".html

# Get album title
album=$(grep "title_big_chung" album_"$AID".html | sed -r "s/^.*<h1>Album \"(.*)?\"<\/h1>.*$/\1/")
badname=$(echo "$album" | grep "h1")

if [ -n "$badname" ]
then
	echo "###################################################################"
	echo "The album title is invalid, if you wanna type manualy, press 'y'..."
	read ok
	case "$ok" in
		y|Y) echo "Type the valid album title: ";
			read album;
			echo "You typed '$album'. Let pray...";
			sleep 2;;
		*) echo "Bye bye";
			exit;;
	esac
fi

if [ -n "$album" ]
then
	mkdir "$AID - $album"
	cd "$AID - $album"

	# Get file id and song title 
	grep "list_songs_left" ../album_"$AID".html |\
		sed -r "s/^.*onClick=\"playlistAdd\('([0-9]+)', '(.*)'\)\".*$/\1\t\2/g" > tmp1.txt
	# Get composer's name
	grep -P "list_songs_left.*nhacsi" ../album_"$AID".html |\
		sed -r "s/^.*nhacsi\&amp;id=([0-9]+)?\">(NSND|NSƯT|Ns)?\.?\s?(.*)<\/a>.*$/\3/g" > tmp2.txt
	# Get artist's name
	grep -P "list_songs_right.*nghesi" ../album_"$AID".html |\
		sed -r "s/^.*nghesi\&id=([0-9]+)?\">(NSND|NSƯT|Ns)?\.?\s?(.*)<\/a> <\/td>/\3/g" > tmp3.txt

	# Merge informations
	# Filename format: %n (track) - %t (title) - %p (composer) - %a (artist)
	paste tmp1.txt tmp2.txt tmp3.txt > tmp.txt
	
	# Check for filename	
	badfilename=$(grep "<td" tmp.txt)
	if [ ! -n "$badfilename" ]
	then 
		sed = tmp.txt | sed "N;s/\n/\t/" | sed -r -e "s/\t/ - /g" \
			-e "s/\&amp;/\&/g" \
			-e "s#^([0-9]+) - ([0-9]+) - (.*)#wget $url/\2\.wma -O '\1 - \3.wma'#g" >> dl_album_"$AID".sh
		sed -r "s/\s+/ /g" -i dl_album_"$AID".sh
		
		rm *.txt
	else
		echo "##############################################################################";
		echo "We have problem with the character code. So I have to use number for filename."
		sleep 2;
		# Get file id
		iconv --from-code=ISO-8859-1 --to-code=UTF-8 ../album_"$AID".html > album.html
		grep "list_songs_left" album.html |\
		sed -r -e "s#^.*onClick=\"playlistAdd\('([0-9]+)',.*#wget $url/\1.wma#g" > dl_album_"$AID".sh
		rm album.html *.txt
	fi
	
	sh dl_album_"$AID".sh
	cd ..
	echo "Done!"

else
	echo '########## Invalid album ID ##########'
	rm -f album_"$AID".html
fi

Đăng bởi Lựợm

Lựợm là một cử nhân ngôn ngữ học thích chụp ảnh tư liệu hơn làm web. Anh kiếm sống chủ yếu bằng nghề chụp ảnh ở Hà Nội.

Gửi bình luận

Bình luận

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.