下载网易云音乐(我喜欢的歌曲)

简介: 下载网易云音乐(我喜欢的歌曲)
import time
import os
import requests
import json
from concurrent.futures import ThreadPoolExecutor

def getsongsid(id=3778678):
    root = "http://localhost:3000"
    cmd = f"/playlist/detail?id={id}"
    url = root + cmd
    res = requests.get(url)
    res_dict = json.loads(res.text)
    playlist = res_dict["playlist"]["trackIds"]
    ob = []
    for i in playlist:
        temp = {}
        temp["id"] = i["id"]
        ob.append(temp)
    return ob

# 第二步:循环遍历获取歌曲详细信息(ID ,歌名,歌手名字,下载链接)

def downsong(i):
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'}
    import requests,json
    root = "http://localhost:3000"
    cmd = f"/song/detail?ids={i['id']}"
    url = root + cmd
    res = requests.get(url,headers=headers)
    res_dict = json.loads(res.text)
    i["name"] = res_dict["songs"][0]["name"]
    i["author"] = res_dict["songs"][0]["ar"][0]["name"]
    i["url"] = f"http://music.163.com/song/media/outer/url?id={i['id']}.mp3"

    # 判断是否可以下载
    url = f"{root}/song/url?id={i['id']}"
    res = requests.get(url,headers=headers)
    res_dict = json.loads(res.text)
    if res_dict["data"][0]["url"] != None:
        # print("可以下载")
        url = f"http://music.163.com/song/media/outer/url?id={i['id']}.mp3"
        # print(url)
        # print(f"正在下载{i['name']}...")
        r = os.path.isfile(f"D://2/{i['name']}.mp3")
        if r == False:
            res = requests.get(url,headers=headers)
            with open(f"D://2/{i['name']}.mp3","wb") as f:
                f.write(res.content)
    else:
        print(f"{i['name']}不可以下载")

def main():
    """
    6834406177
    :return:
    """
    playlist_arr = [
        6834406177,
        6834632250,
        6834567650,
        7443636626,

    ]
    ob = []
    for index in playlist_arr:

        temp_ob = getsongsid(index)  

        ob += temp_ob
    print(ob)
    tps = ThreadPoolExecutor(100)
    for i in ob:
        tps.submit(downsong,i)
        time.sleep(0)
    tps.shutdown()
if __name__ == "__main__":
    main()
相关文章
|
边缘计算 Kubernetes Devops
KubeSphere平台安装系列之二【Linux单节点部署KubeSphere】(2/3)
KubeSphere平台安装系列之二【Linux单节点部署KubeSphere】(2/3)
682 3
|
10月前
|
安全 物联网 API
《探秘浏览器Web Bluetooth API设备发现流程》
本文深入解析浏览器Web Bluetooth API的设备发现流程,从技术演进、基础架构切入,拆解从 requestDevice() 调用触发,到权限校验、蓝牙扫描、设备筛选、信息解析,再到GATT连接准备的全环节逻辑。同时分析浏览器兼容性、硬件环境、安全隐私等影响因素,提出精准筛选、资源管理、错误处理等优化策略。文章结合实际应用场景,阐明该流程对前端开发蓝牙交互应用的关键价值,为开发者规避陷阱、提升设备发现效率与稳定性提供底层技术支撑。
390 0
|
人工智能 自然语言处理 搜索推荐
HiFox AI:一站式 AI 应用平台,多模型快速接入,自由选用
HiFox AI 是一站式AI应用平台,整合了30多个主流AI模型,提供文本生成、对话交流、图片生成等多种应用场景。平台内置1000+预构建AI应用,支持无代码搭建个性化应用和复杂工作流,帮助用户高效处理重复任务,显著提升工作效率。无论是普通用户还是技术专家,都能在HiFox AI上找到适合自己的解决方案,实现“人人都能使用AI”的愿景。
|
数据采集 机器学习/深度学习 数据可视化
使用Jupyter Notebook进行数据分析:入门与实践
【6月更文挑战第5天】Jupyter Notebook是数据科学家青睐的交互式计算环境,用于创建包含代码、方程、可视化和文本的文档。本文介绍了其基本用法和安装配置,通过一个数据分析案例展示了如何使用Notebook进行数据加载、清洗、预处理、探索、可视化以及建模。Notebook支持多种语言,提供直观的交互体验,便于结果呈现和分享。它是高效数据分析的得力工具,初学者可通过本文案例开始探索。
1549 3
|
数据采集 传感器 机器学习/深度学习
人工智能在农业中的应用:从数据采集到智能决策
本篇文章将详细探讨人工智能(AI)技术在现代农业中的应用,包括从数据采集、分析到智能决策的全过程。通过具体案例,展示AI如何帮助提高农业生产效率、降低成本并增强环境可持续性。
2282 0
|
JavaScript
Vue 双向数据绑定原理
Vue的双向数据绑定通过其核心的响应式系统实现,主要由Observer、Compiler和Watcher三个部分组成。Observer负责观察数据对象的所有属性,将其转换为getter和setter;Compiler解析模板指令,初始化视图并订阅数据变化;Watcher作为连接Observer和Compiler的桥梁,当数据变化时触发相应的更新操作。这种机制确保了数据模型与视图之间的自动同步。
|
关系型数据库 MySQL 应用服务中间件
|
存储 监控 数据管理
如何设置绿联云与PC电脑同步?
【7月更文挑战第1天】如何设置绿联云与PC电脑同步?
5912 2
|
存储 算法 数据安全/隐私保护
基于A律压缩的PCM脉冲编码调制通信系统simulink建模与仿真
本项目展示了一种基于MATLAB 2022a的脉冲编码调制(PCM)算法,用于将模拟信号转换为数字信号。A律压缩是非均匀量化方法之一,适用于语音信号编码,能够提高信噪比和编码效率。核心代码已提供,并附有详细中文注释和操作视频。A律压缩通过调整量化间隔来适应人耳的听觉特性,减少量化噪声,实现高质量的语音通信。此技术广泛应用于电话通信、VoIP和数字音频处理等领域。
|
监控 数据挖掘 数据安全/隐私保护
ERP系统中的绩效管理与考核
【7月更文挑战第25天】 ERP系统中的绩效管理与考核
694 2