26.06.2010 09:44

cppmmНебольшой скриптик для стягивания музыки.

Нашёл тут сайт в местной локалке, где имеется довольно объёмная коллекция музыки. Но, скачивать можно только по одной песне. В общем, это не интересно. Полчаса времени и я родил скромный скриптик. Предупреждаю сразу, написан он на скорую руку и заточен под один определённый сайт(поэтому и пост у себя в персональном). Скрипт принимает на входе url страницы со списком альбомов группы, а на выходе выдаёт все песни этой группы, аккуратно разложенные по папочкам с названиями альбомов.
Суть подхода - качаем страницу со списком альбомов, потом парсим её парой костылей с конвеерами и скармливаем всё это wget'у.

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/bin/bash
#

GROUP_URL=$1
TMPFILE=tmp.htm

wget $GROUP_URL -O $TMPFILE
# Default_URL
URL="http://music.site"
# Get album nubmers list
ANL=$(grep -oe "album<0-9>\+" $TMPFILE | uniq)

# Downloading files
function downloading() {
for (( i = $BEGIN; i < $END; i++ ));
do
wget -P "./$AN" $URL/$i/
# echo "Album and directory name: ./$AN"
# echo "ULR: $URL/$i"
done
}

for ALBUM in $ANL
do
# Don't try download albums with no songs
if << "$(grep $ALBUM $TMPFILE | grep href | grep mp3 | awk -F "/" '{print $6}' | wc -l)" -eq "0" >>; then
continue
fi
# Get album name and make dir with this namr
AN=$(grep $ALBUM $TMPFILE | grep href | grep class | awk -F "album>" '{print $2}' | awk -F "</div" '{print $1}')
mkdir -p "$AN"
# Check for double songs
if << "$(grep $ALBUM $TMPFILE | grep href | grep mp3 | awk -F "/" '{print $6}' | wc -l)" -eq "$(grep $ALBUM $TMPFILE | grep href | grep mp3 | awk -F "/" '{print $6}' | uniq | wc -l)" >>; then
BEGIN=$(grep $ALBUM $TMPFILE | grep href | grep mp3 | head -n 1 | awk -F "/" '{print $5}')
END=$(grep $ALBUM $TMPFILE | grep href | grep mp3 | tail -n 1 | awk -F "/" '{print $5}')
downloading;
else
BEGIN=$(grep $ALBUM $TMPFILE | grep href | grep mp3 | head -n 1 | awk -F "/" '{print $5}')
COUNT=$(grep $ALBUM $TMPFILE | grep href | grep mp3 | awk -F "/" '{print $6}' | uniq | wc -l)
END=$(($BEGIN+$COUNT))
downloading;
fi
done

rm $TMPFILE



P.S. Кто живёт в Томске и интересуется тяжметом, пишите в личку, скажу, для какого сайта это написано.


Тэги: bash script
+ 1 -
Похожие Поделиться

wiz 26.06.2010 10:54 #
https://chrome.google.com/extensions/detail/ehohhddamheegbbkabfgegbaeminghlb
cppmm 26.06.2010 11:28 #
Скачать весь килограмм mp3'шек с сайта я могу и регекспом для wget'а. Мне же надо скачать именно определённую группу, именно по альбомам. Именно для этого пришлось писать свой костыль.
wiz 27.06.2010 20:01 #
Оно не скачивает а делает музыкальную библиотеку типа ритмбоксовской, там уже как удобно можно слушать.

Да, это я не предлагаю альтернативу костылю, а просто пиарю хороший плагинг по схожей тематике.