使用python中you-get库实现下载网抑云

前言

前几天,我做了b站视频的下载,有好兄弟表示,只下载视频,不能够让人满足,我还希望能够下载网易云的音乐。

上一次在我发布的b站视频下载中,使用了you-get库作为下载方式,但是实际上,这个库也可以下载网易云音乐,因此,我们只需要参考我们上次的b站视频下载,简单的进行一下修改,就可以完成音乐的下载了。

为了能够更加方便的批量下载音乐,这里采用了“按艺术家“的下载方式,除了默认提供的以外,你也可以将你喜欢的歌手的id放入其中,即可轻松完成下载。当然,并非所有音乐都是可以下载的,只有原本在网易云音乐的网站上可以播放的音乐,才是可以下载的,如果原本就不可以播放,是“灰色的”,那么我们的程序也是无法完成下载的。


代码实现

import requests
import subprocess
from parsel import Selector


def yun_music_download(song_url, song_name):
    command = [
        "you-get",
        "-o", "./music",
        "-O", song_name,
        "--no-caption",
        song_url
    ]
    subprocess.run(command, capture_output=True, text=True, encoding='utf-8')
    return song_name


def yun_artists_playlist_download(artist_id):
    url = f"https://music.163.com/artist?id={artist_id}"
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
    }

    r = requests.get(url, headers=headers)

    s = Selector(r.text)

    for li in s.xpath("//ul[@class='f-hide']/li"):
        song_url = "https://music.163.com" + li.xpath("./a/@href").get()
        song_name = li.xpath("./a/text()").get()
        yun_music_download(song_url, song_name)


def yun_artists_choose():
    artists = [('林俊杰', 3684), ('陈奕迅', 2116), ('汪苏泷', 5538), ('薛之谦', 5781), ('郑润泽', 29051613), ('G.E.M.邓紫棋', 7763), ('方大同', 2738), ('周传雄', 6652), ('颜人中', 31376161), ('陶喆', 5196), ('h3R3', 12631485), ('Dave', 47197216), ('张杰', 6472), ('单依纯', 29802127), ('毛不易', 12138269), ('李荣浩', 4292), ('DJ阿智', 58149097), ('Taylor Swift', 44266), ('张碧晨', 1024308), ('周杰伦', 6452), ('罗言', 33863232), ('赵雷', 6731), ('蔡健雅', 7214), ('王贰浪', 14312549), ('许嵩', 5771), ('阿冗', 30116848), ('宝石Gem', 12084497), ('队长', 1143033), ('Justin Bieber', 35531), ('王赫野', 47091532), ('徐佳莹', 9940), ('张韶涵', 10562), ('周深', 1030001), ('宝宝巴士', 14714082), ('刘大拿', 29588305), ('Zy', 37123911), ('马思唯', 1132392), ('初音ミク', 159692), ('王力宏', 5346), ('蔡依林', 7219), ('梁静茹', 8325), ('Beyond', 11127), ('五月天', 13193), ('孙燕姿', 9272), ('法老', 865007), ('王菲', 9621), ('郭顶', 2843), ('曾舜晞', 12008056), ('海洋Bo', 36985903), ('JORDANN', 338718), ('陈楚生', 2124), ('杨宗纬', 6066), ('Aioz', 29235210), ('容祖儿', 9269), ('CashMoon', 34516758), ('王宇宙Leto', 49144727), ('余佳运', 1079074), ('邵帅', 29392693), ('就是南方凯', 46360442), ('DJ阿布', 58160751), ('The Weeknd', 185858), ('告五人', 12676697), ('黄丽玲', 7063), ('杜宣达', 12060040), ('张学友', 6460), ('莫文蔚', 8926), ('Wiz_H张子豪', 13112601), ('Capper', 12193174), ('陈粒', 1007170), ('kkluv', 28642672), ('陈绮贞', 7217), ('傲七爷', 13145036), ('HOYO-MiX', 12487174), ('姚晓棠', 33709222), ('BIGBANG', 126339), ('en', 32220939), ('小瑞', 47058186), ('华晨宇', 861777), ('DJ铁柱', 53212744), ('胡彦斌', 3066), ('那奇沃夫', 12570417), ('刘思达LOFTHESTAR', 12030367), ('鹿晗', 1038093), ('韦礼安', 5379), ('王云宏', 34624664), ('阿YueYue', 12227865), ('曲婉婷', 9178), ('杨丞琳', 10199), ('贝乐虎', 30109388), ('买辣椒也用券', 12085562), ('国风堂', 31862479), ('凤凰传奇', 11564), ('沈以诚', 12002248), ('张叶蕾', 12213291), ('任然', 9255), ('梨冻紧', 33259235), ('王以太', 12236125), ('梁博', 166010), ('HOPERUI', 33954709), ('人工智能小霸王', 59638593)]
    for i in range(len(artists)):
        print(i + 1, artists[i][0])
    u = int(input("请选择你要下载的内容,或自行提供歌手id:"))
    if 0 <= u - 1 < len(artists):
        yun_artists_playlist_download(artists[u - 1][1])
    else:
        yun_artists_playlist_download(u)


yun_artists_choose()

使用说明

寻找歌手id
首先,从页面https://music.163.com/discover/artist,选择一位歌手。
点进去以后,比如说找到https://music.163.com/#/artist?id=12675330,那么这里的12675330就是歌手id

写入到artists中,artists = [('歌手', 歌手id),('歌手', 歌手id),('歌手', 歌手id),('歌手', 歌手id)]or直接输入你想下载的歌手id

下载到的文件会保存在./music,也就是当前代码文件运行目录下的music文件夹里。


注意:本方法下载音乐仅供学习交流,任何下载应当在24小时内删除,避免侵权。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瞎老弟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值