抓了极客下载的API,写了个脚本自用 主要是MAC要批量下载太蛋疼了
1#!/usr/bin/env bash
2#Author zsnmwy
3#v1.1 fix https error
4judge(){
5 if [[ $? -eq 0 ]];then
6 echo -e "$1 完成"
7 sleep 1
8 else
9 echo -e "$1 失败"
10 exit 1
11 fi
12}
13url=$1
14check_url=$(echo $url | grep "http://www.ximalaya.com")
15check_url_https=$(echo $url | grep "https://www.ximalaya.com")
16if [ -n $check_url_https ]
17then
18 check_url=$(echo $url | sed s/https/http/)
19 url=$check_url
20fi
21if [ "$check_url" = "" ]
22then
23 echo "请输入正确的喜马拉雅地址"
24 echo "
25例子
26
27下载单个节目请使用:
28http://www.ximalaya.com/youshengshu/249504/2482208
29http://www.ximalaya.com/8889234/sound/42857655/
30http://www.ximalaya.com/8889234/sound/42857655
31
32专辑不超过200集请使用:
33http://www.ximalaya.com/renwen/5939130/
34http://www.ximalaya.com/39200626/album/3385980
35http://www.ximalaya.com/39200626/album/3385980/
36
37专辑超过200集请使用以下链接形式下载:
38http://www.ximalaya.com/shangye/3385980/p1/
39http://www.ximalaya.com/shangye/3385980/p2/
40http://www.ximalaya.com/shangye/3385980/p3/
41"
42 exit
43else
44 echo -e "\n\n输入的地址的为 $1"
45fi
46
47api_url="http://jikexiazai.cn/get_xmly.php?url=$url"
48
49echo -e "\n"
50echo -e "API请求地址为 $api_url \n\n"
51
52data=$(curl -s $api_url)
53#echo -e "$data"
54
55length_data=$(echo -e "$data" | awk '{print NR}'| tail -n1)
56#echo $length_data
57
58if [ $length_data -eq 0 ] || [ $length_data -eq 1 ]
59then
60 echo "没有找到下载地址,请确保输入的地址正确"
61 exit
62elif [ $length_data -eq 2 ]
63then
64 echo "找到一个下载地址,准备下载"
65elif [ $length_data -gt 2 ]
66then
67 file_number=$(expr $length_data / 2)
68 echo "找到 $file_number 个下载地址,准备下载"
69fi
70
71name_data=$(echo -e "$data" | sed -n '1~2p')
72
73echo -e "\n\n\n\n"
74echo -e "准备下载这些文件 按回车以继续下载 \n\n"
75echo -e "$name_data"
76echo -e "\n\n准备下载这些文件 按回车以继续下载 \n\n"
77read -p "按回车以继续 不想下载这些文件请按 Ctrl + C "
78echo -e "\n\n"
79
80
81link_data=$(echo -e "$data" | sed -n '0~2p')
82#echo -e "$link_data"
83
84#echo -e "\n\n\n"
85
86
87length_link=$(echo -e "$link_data" | awk '{print NR}'| tail -n1)
88
89#echo "########### NAME #############"
90
91#OLDIFS=$IFS
92#IFS='\n'
93i=0
94k=1
95
96for link in $link_data
97do
98 #echo $i
99 a[$i]=$(echo -e "$name_data" | sed -n ${k}p)
100 #echo ${i} ${a[$i]}
101 i=$(expr $i + 1)
102 k=$(expr $k + 1)
103done
104
105#echo ${a[*]}
106#echo "########### NAME #############"
107
108#echo "###########LINK#############"
109i=0
110for link in $link_data
111do
112 #echo $i
113 b[$i]="$link"
114 #echo ${b[$i]}
115 i=$(expr $i + 1)
116 #echo $i
117done
118#echo "###########LINK#############"
119
120i=0
121for link in $link_data
122do
123 echo "准备下载 ${a[$i]}"
124 echo "这是第 $(expr $i + 1) 个 , 总共 $file_number 个"
125 file_type=$(basename "${b[$i]}" | cut -d "." -f2)
126 curl -o "$(echo ${a[$i]}).$(echo $file_type)" "$(echo ${b[$i]})"
127
128 judge "下载 ${a[$i]}"
129
130 if [ $i == $(expr $length_link - 1) ]
131 then
132 echo "全部下载完成"
133 exit
134 fi
135 echo "暂停十秒"
136 sleep 10
137 i=$(expr $i + 1)
138 echo -e "\n\n\n\n"
139done