[python]喜马拉雅mp3批量下载工具

独自等待 2017年5月12日02:49:08评论829 views字数 1194阅读3分58秒阅读模式

最近没啥好听的歌,准备给小虎子补充点好听的,于是就有了喜马拉雅mp3批量下载工具,喜欢的拿去用。

程序说明:

1、使用类写的,简洁明了。

2、取消使用lxml库解析,使用正则表达式获取数据。

3、程序尽可能多的给出了注释,喜欢的拿去研究。

4、可以自动获取专辑下面的所有专辑并下载。

5、取消使用脚本下载,单线程会卡住。

6、脚本只负责解析,剩下的事,交给其它工具下载。

喜马拉雅mp3解析工具:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Date: 2016/10/10
# Created by 独自等待
# 博客 http://www.waitalone.cn/
import requests
import json
import sys
import re
import os

reload(sys)
sys.setdefaultencoding('utf-8')


class ximalaya:
    def __init__(self, url):
        self.url = url  # 传入的专辑URL,类似http://www.ximalaya.com/16960840/album/294567
        self.urlheader = {
            'Accept': 'application/json, text/javascript, */*; q=0.01',
            'X-Requested-With': 'XMLHttpRequest',
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36',
            'Content-Type': 'application/x-www-form-urlencoded',
            'Referer': self.url,
            'Cookie': '_ga=GA1.2.1628478964.1476015684; _gat=1',
        }

    def getpage(self):
        '获取分页数方法'
        pagelist = []  # 保存分页数
        try:
            response = requests.get(self.url, headers=self.urlheader).text.encode('utf-8')
        except Exception, msg:
            print u'网页打开出错,请检查!', msg
        else:
            reg_list = [
                re.compile(r"class=\"pagingBar_wrapper\" url=\"(.*?)\""),
                re.compile(r"

ximalaya

关于多线程下载:

由于python的多线程下载,我研究的不深,所以实现起来比较麻烦,这里提供一种使用其它工具代替的方法,速度也很快。

http://www.waitalone.cn/aria2c-download.html

请点击上面的链接,去下载cmd下面的多线程工具,aria2c。

1、首先使用脚本解析你要下载的专辑,在cmd下执行如下命令:

ximalaya.py http://www.ximalaya.com/31240537/album/2867229

2、脚本会自动解析,并保存解析结果到 mp3.txt 失败的解析会保存在:analyze_false.txt

3、mp3.txt默认为utf-8格式,请重新保存为ansi格式,否则aria2c保存时文件名乱码。

4、将下面的代码保存为download.bat 然后双击即可自动多线程下载。

for /f "tokens=1,2 delims=|" %%i in (mp3.txt) do aria2c.exe -s 10 -j 10 %%j --out=%%i

MAC OS可以使用下面的方式下载文件:

1、安装axel,可以使用brew install axel

2、使用ximalaya.py生成要下载的文件列表 mp3.txt

3、保存下面的代码为down.sh 增加执行权限,然后运行即可。

#!/bin/bash
filename='mp3.txt'
cat $filename | while read line
do  
    name=$(echo $line|cut -d "|" -f 1)
    url=$(echo $line|cut -d "|" -f 2)
    axel -a -n 10 $url -o "$name"
done  

更新日志:

2016年3月11日更新,支持单条mp3地址解析

2016年3月13日更新,修复mp3总数计算错误, 增加限制下载数量。

2016年7月29日更新,使用正则获取数据,更加易用。

2016年10月10日更新,原有解析失效,重写代码,提高解析速度。

2016年12月8日更新, 增加MAC下多线程下载方法。

2017年5月3日更新, 修正windows下面mp3.txt乱码问题。



from www.waitalone.cn.thanks for it.

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
独自等待
  • 本文由 发表于 2017年5月12日02:49:08
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   [python]喜马拉雅mp3批量下载工具http://cn-sec.com/archives/50426.html

发表评论

匿名网友 填写信息