Tự nhiên lại quan tâm đến âm nhạc Việt Nam. Nhưng vì đã quên mất Perl là gì, sed thì chả nhớ được bao nhiêu nên lại để cơ hội cho trâu bò ra tay…
#! /bin/sh
# Tải thông tin về các album trên vnmusic.com.vn
for AID in `seq 7 280`
do
# Check for file existence
if [ -f album_"$AID".html ]
then
rm -f album_"$AID".html
fi
# Download page
wget http://www.vnmusic.com.vn/music/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/")
if [ -n "$album" ]
then
# Get song title and id
grep "onclick=\"playlistAdd(" album_"$AID".html |\
sed -r "s/^.*onclick=\"playlistAdd\('([0-9]+)', '(.*)'\)\".*$/sid='\1' t='\2'/g" > tmp1.txt
# Get composer's name and id
grep -P "^\t{5}\(<a href=\"index.php\?aid=nhacsi\&id=([0-9]+)?\">(.*)</a>\)" album_"$AID".html |\
sed -r "s/^.*\&id=([0-9]+)?\">(.*)?<\/a>.*$/cid='\1' c='\2'/g" > tmp2.txt
# Get artist's name and id
grep -P "^\t{5}<a href=\"index.php\?aid=nghesi\&id=([0-9]+)?\">" album_"$AID".html |\
sed -r "s/^.*\&id=([0-9]+)?\">(.*)?<\/a>/aid='\1' a='\2'/g" > tmp3.txt
# Merge informations
paste tmp1.txt tmp2.txt tmp3.txt > tmp.txt
# Create XML file
sed = tmp.txt | sed "N;s/\n/\t/" > album_"$AID".txt
sed -r "s/^([0-9]+)\t(.*)$/\t<song n='\1' \2 \/>/g" -i album_"$AID".txt
echo "<album id='$AID' title='$album'>" > album_"$AID".xml
cat album_"$AID".txt >> album_"$AID".xml
echo '</album>' >> album_"$AID".xml
sed 's/\&/\&/g' -i album_"$AID".xml
# Remove temporary files
rm -f tmp*.txt album_"$AID".txt
# Log
echo "$AID - OK" >> logging.txt
else
echo '########## Invalid album ID ##########'
rm -f album_"$AID".html
echo "$AID - DIE" >> logging.txt
fi
done
Còn việc tải từng bài về, chuyển định dạng, sử dụng easyTAG như thế nào thì miễn bàn 😛