Back
Please upgrade your browser or check your network connection.

喜马拉雅下载脚本

抓了极客下载的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