Git Product home page Git Product logo

sdmusic's Introduction

SDMusic多平台音乐搜索下载工具

 ______     _____     __    __     __  __     ______     __     ______    
/\  ___\   /\  __-.  /\ "-./  \   /\ \/\ \   /\  ___\   /\ \   /\  ___\   
\ \___  \  \ \ \/\ \ \ \ \-./\ \  \ \ \_\ \  \ \___  \  \ \ \  \ \ \____  
 \/\_____\  \ \____-  \ \_\ \ \_\  \ \_____\  \/\_____\  \ \_\  \ \_____\ 
  \/_____/   \/____/   \/_/  \/_/   \/_____/   \/_____/   \/_/   \/_____/

Search && Download Music Cli version 0.13

本软件只用来交流测试与学习。 支持的搜索和下载平台:网易,QQ,酷狗,虾米,一听 支持的系统:理论上支持所有的系统,已测试系统Linux(Arch,Ubuntu,Mac(网友测试,十分感谢))

代码写的如屎一般,还请各位提提写法上的issue。谢谢。根据文件下载音乐将在下个commit中实现

4-25 使用qq音乐无损平台(感谢BigUncle提供的接口),代替原本的百度音乐。注意现在无损接口是尽可能下载相关的音乐。无法使用-l参数

4-17 修复qq音乐平台无法下载的BUG

4-15 修改了部分BUG,美化了结果输出。非常感谢raawaa

3-5 量下载UK榜,美国Billboard周榜,Beatport全球电子舞曲榜,法国 NRJ Vos Hits 周榜,日本Oricon周榜,**Hito排行榜

3-1 新增飙升榜(网易云,QQ)音乐下载,新增原创榜下载(网易云,虾米音乐),热歌榜新增虾米音乐

2-28 新增网易云和QQ音乐热歌榜下载,指定参数-hot加平台就可以了,修复/的BUG

2-27 增QQ音乐歌单下载,需要指定-p qq。注意qq音乐批量下载中需要将https://y.qq.com/w/taoge.html?ADTAG=newyqq.taoge&id=3710267240改为https://y.qq.com/w/taoge.html?ADTAG=newyqq.taoge\&id=3710267240否则无法正常工作。

新增加虾米歌单下载,注意歌单下载默认是网易云,可以通过-p xiami来下载虾米音乐,修复高清测试空格出错的情况.

功能清单

  • 搜索
  • 下载
  • 歌词
  • 专辑图片下载与嵌入(在下载时指定-a参数,实现此功能依赖你电脑的ffmpeg)
  • 批量下载(使用-t参数,后跟playlist的URL,暂时只支持网易云,虾米,支持批量歌词下载,批量专辑图嵌入)
  • 高清音乐源(使用-tfc(test flac)参数来测试音乐是否有flac无损格式的,通过-dfc(download flac)来下载flac格式的音乐,flac格式自带信息嵌入,所以不需要也不容许使用-a,但可以使用-l)
  • 增加配置文件,给用户更多自定义功能
  • 批量下载hot(网易云热歌榜,QQ音乐热歌榜,虾米音乐榜)
  • 批量下载soar(网易云飙升榜,QQ飙升榜)
  • 批量下载origin(网易云原创,虾米原创)
  • 批量下载new(网易云新歌榜,QQ音乐新歌榜)
  • 批量下载UK榜,美国Billboard周榜,Beatport全球电子舞曲榜,法国 NRJ Vos Hits 周榜,日本Oricon周榜,**Hito排行榜
  • 根据文件下载音乐

配置

配置文件的位置~/.sdmusic/sdmusic.config

可配置的项

文件名的命名格式

  1. 歌曲名
  2. 歌手 - 歌曲名
  3. 歌曲名 - 歌手

例如:我想使用第二种命名方式,那么我们只需要将配置文件中

 song.name_type = 2

歌曲默认下载路径 例如修改到/home/{username}/Music/test/目录下:

注意:路径要写全,否则可能报错

 download.dir = /home/{username}/Music/test/

安装

方法一

pip3 install sdmusic

方法二

git clone [email protected]:pcdack/SDMUSIC.git
cd SDMUSIC/
python3 setup.py install

使用

搜索命令

sdmusic -n "体面" -s

可选参数 -p[platform]:可以指定搜索平台{netease(网易:默认),qq,xiami(虾米),kugou(酷狗),1ting(一听)} 例子

sdmusic -n "体面" -p qq -s

-g[page]:指定搜索的页面为第几页默认为第一页,如果第一页没有找到相关的歌曲,可以指定移动到第二页

sdmusic -n "体面" -p qq -g 1 -s

-o[output]:指定输出路径(只有在指定为下载是有效)

-l[lyric]:下载歌词(只有在指定为下载是有效,不支持一听平台)

-a[album]:下载并嵌入专辑图片,专辑名字,作者名字等信息,全平台适用

下载命令

可选参数与搜索命令一样

很简单只要把上面的s参数改为d,然后用-i在去指定你要下载那一条音乐

例如

sdmusic -n "体面" -p qq -s

在命令行的结果为

Index   MusicName       MusicAuthor
1       体面    于文文
2       体面    艾辰
3       体面    简弘亦
4       体面    罗之豪
5       体面    胖胖胖
6       体面    阿细
7       体面    妖蝠sama
8       体面    冯允澈
9       体面    阿祥
10      体面    简弘亦

我们如果想下载第一个音乐,那么

技巧使用键盘的上键更改即可

sdmusic -n "体面" -p qq -d -i 1

回车就可下载

批量下载

歌单下载

sdmusic -l -a -t http://music.163.com/#/playlist?id=932596614

sdmusic -l -a -t 932596614

批量下载虾米歌单:

sdmusic -p xiami -t http://www.xiami.com/collect/281354699?spm=a1z1s.2943601.6856193.2.LkPhvN

批量下载QQ音乐歌单:

注意&符号前一定要加\否则会报错

sdmusic -p qq -t https://y.qq.com/w/taoge.html?ADTAG=newyqq.taoge\&id=3710267240 

直接指定ID

sdmusic -p qq -t 3710267240

下载热歌 网易云

sdmusic -hot

QQ音乐

sdmusic -hot -p qq

虾米音乐

sdmusic -hot -p xiami

下载飙升榜 网易云

sdmusic -soar

QQ音乐

sdmusic -soar -p qq

下载原创 网易云

sdmusic -origin

虾米

sdmusic -origin -p xiami

下载其他榜单 这里以UK榜为例

sdmusic -uk

其他榜

  • 日本Oricon周榜:oricon

  • 美国Billboard周榜:billboard

  • Beatport全球电子舞曲榜:beatport

  • 法国 NRJ Vos Hits 周榜:hits

  • **Hito排行榜:hito

  • -l:批量下载歌词

  • -a:批量将专辑图嵌入音乐

无损音乐测试与下载

  • 测试是否存在无损音乐
sdmusic -tfc -n "黄色大门"
  • 下载无损音乐(先测试是否存在)
sdmusic -dfc -n "黄色大门"

自带专辑图片和专辑信息,所以emmmmm-a属性没什么软用。当然-l(下载歌词)依然可用

Enjoy!

sdmusic's People

Contributors

pcdack avatar raawaa avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sdmusic's Issues

只能下载免费歌曲

测试了一下qq音乐,下载只可以下载免费,付费的不知道会不会提供接口。付费的应该是没有解析到真正地址吧

error when start

[loongson@bogon ~]$ sdmusic
Traceback (most recent call last):
File "/usr/bin/sdmusic", line 9, in <module>
load_entry_point('sdmusic==0.14', 'console_scripts', 'sdmusic')()
File "/usr/lib/python3.4/site-packages/pkg_resources.py", line 348, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python3.4/site-packages/pkg_resources.py", line 2311, in load_entry_point
return ep.load()
File "/usr/lib/python3.4/site-packages/pkg_resources.py", line 2025, in load
entry = __import__(self.module_name, globals(),globals(), ['__name__'])
File "/usr/lib/python3.4/site-packages/sd_music/start.py", line 10, in <module>
from .net.qq_flac_api import QQFlacCloud #QQ flac格式音乐
File "/usr/lib/python3.4/site-packages/sd_music/net/qq_flac_api.py", line 31
print(f'正在抓取关键词>>{music_name}<<的基本信息,共有{total_num}首歌')
^
SyntaxError: invalid syntax

QQ音乐失效

Traceback (most recent call last):
File "/usr/local/bin/sdmusic", line 11, in
sys.exit(main())
File "/usr/local/lib/python3.6/dist-packages/sd_music/start.py", line 366, in main
search_or_download(name, offset, platform, False, index - 1, output, args.lyric, args.album)
File "/usr/local/lib/python3.6/dist-packages/sd_music/start.py", line 94, in search_or_download
download_from_url(music_info.download_url, output+song_file_name)
File "/usr/local/lib/python3.6/dist-packages/sd_music/utils/downloader.py", line 44, in download_from_url
file_size = int(urlopen(url).info().get('Content-Length', -1))
File "/usr/lib/python3.6/urllib/request.py", line 223, in urlopen
return opener.open(url, data, timeout)
File "/usr/lib/python3.6/urllib/request.py", line 532, in open
response = meth(req, response)
File "/usr/lib/python3.6/urllib/request.py", line 642, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/lib/python3.6/urllib/request.py", line 570, in error
return self._call_chain(*args)
File "/usr/lib/python3.6/urllib/request.py", line 504, in _call_chain
result = func(*args)
File "/usr/lib/python3.6/urllib/request.py", line 650, in http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden

mac系统也可以用

我用conda创建了一个虚拟的py3.6环境,然后下载了网易云下架的周华健-风雨无阻,good!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.