您的位置:

喜马拉雅批量下载

一、喜马拉雅批量下载按钮在哪

在喜马拉雅网站上,每个专辑或电台页面下面都会有“下载”按钮,但是这个按钮只是下载单个音频文件,并不能批量下载。

如果想要批量下载,需要借助第三方工具或者脚本。

二、喜马拉雅批量下载器

喜马拉雅批量下载器是一款非常实用的批量下载工具。它可以帮助用户快速批量下载喜马拉雅上的音频,包括音频文件、专辑或者电台,而且还可以选择分段下载。

以下是使用Python语言实现的喜马拉雅批量下载器代码:



import requests
from lxml import etree
import time
import os

class XimalayaSpider(object):
    def __init__(self, album_url, save_path):
        self.album_url = album_url
        self.s = requests.session()
        self.headers = {
            # 在这里添加header
        }
        self.save_path = save_path
        if not os.path.exists(self.save_path):
            os.makedirs(self.save_path)

    def run(self):
        album_title, album_id = self.get_album_info()
        download_list = self.get_download_list(album_id)
        self.download(album_title, download_list)

    def get_album_info(self):
        res = self.s.get(self.album_url, headers=self.headers)
        html = etree.HTML(res.text)
        album_title = html.xpath('//h1/text()')[0]
        album_id = html.xpath('//input[@id="albumId"]/@value')[0]
        return album_title, album_id

    def get_download_list(self, album_id):
        download_list_url = "https://www.ximalaya.com/revision/play/album?albumId={}&pageNum=1&pageSize=-1".format(album_id)
        res = self.s.get(download_list_url)
        download_list = res.json()["data"]["tracksAudioPlay"]
        return download_list

    def download(self, album_title, download_list):
        print("专辑名称:", album_title)
        for i, item in enumerate(download_list):
            track_id = item["trackId"]
            title = item["trackName"]
            src = item["src"]
            duration = item["duration"]
            print("开始下载第{}个音频,名称为:{}".format(i + 1, title))
            res = self.s.get(src, headers=self.headers)
            with open(os.path.join(self.save_path, "{}-{}.m4a".format(str(i + 1).zfill(3), title)), "wb") as f:
                f.write(res.content)
            print("下载完成,休息2秒")
            time.sleep(2)

三、喜马拉雅批量下载绿色版

喜马拉雅批量下载绿色版是一款使用界面比较简洁的批量下载工具,支持大众化的操作,适用于不太熟悉Python等语言的用户。

四、喜马拉雅听书批量下载

对于喜马拉雅上的听书,我们可以借助助手插件工具进行批量下载。

五、喜马拉雅怎么批量下载50集

如果想要下载喜马拉雅上某个专辑下的前50个音频,可以使用以下代码实现:


import requests
import re
import os

def get_mp3_urls(voiceid, start, end):
    mp3_urls = []
    for i in range(start, end):
        base_url='https://www.ximalaya.com/revision/play/v1/audio?id={0}&ptype=1'.format(voiceid+str(i))
        headers = {
            # 添加headers
        }
        res = requests.get(base_url, headers=headers)
        data = res.json()

        play_url = data['data']['src']
        mp3_url = re.sub(r'_\d+.mp3', '.mp3', play_url)
        mp3_urls.append(mp3_url)
    return mp3_urls

def download_mp3(mp3_url, dir_path):
    r = requests.get(mp3_url)
    filename = mp3_url.split("/")[-1]
    filepath = os.path.join(dir_path, filename)
    with open(filepath, 'wb') as f:
        f.write(r.content)

def main():
    voiceid = 'VOICEID'
    start = 1
    end = 51
    mp3_urls = get_mp3_urls(voiceid, start, end)
    dir_path = "download"
    if not os.path.exists(dir_path):
        os.mkdir(dir_path)
    for mp3_url in mp3_urls:
        download_mp3(mp3_url, dir_path)

六、喜马拉雅下载工具

喜马拉雅下载工具可以帮助用户快速下载喜马拉雅上的音频,支持批量下载和单个下载,是一款比较实用的工具。

七、喜马拉雅批量下载在哪里

喜马拉雅批量下载工具可以在各大软件下载站和开源代码社区中下载,例如CSDN、GitHub等。

八、喜马拉雅批量下载器手机版

喜马拉雅批量下载器手机版同样也是一款非常实用的工具,通过它,用户可以方便快捷地在手机上下载喜马拉雅上的音频。

以下是使用Java语言实现的喜马拉雅批量下载器手机版代码:


public class XimalayaSpider {
    public static void main(String[] args) throws Exception {
        String url="https://www.ximalaya.com/ertong/4385351/";
        Document document=Jsoup.connect(url).get();
        // 解析页面信息
        Elements scripts=document.getElementsByTag("script");
        String mp3Url=null;
        for(Element element : scripts){
            String data=element.data();
            if(data.contains("window.__INITIAL_STATE__")){
                String jsonStr=data.substring(data.indexOf("{"),data.lastIndexOf("}")+1);
                JSONObject jsonObject=new JSONObject(jsonStr);
                String playPath=jsonObject.getJSONObject("sharePageInfo").getJSONObject("audio").getString("playPath");
                mp3Url=playPath.replaceAll("\\\\","");
                break;
            }
        }
        // 下载音频
        URLConnection conn=new URL(mp3Url).openConnection();
        InputStream is=conn.getInputStream();
        FileOutputStream fos=new FileOutputStream("D:/audio.mp3");
        byte[] buff=new byte[1024];
        int len=0;
        while((len=is.read(buff))!=-1){
            fos.write(buff,0,len);
        }
        fos.close();is.close();
    }
}