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

简介: 下载网易云音乐(我喜欢的歌曲)
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)
576 3
|
8月前
|
安全 物联网 API
《探秘浏览器Web Bluetooth API设备发现流程》
本文深入解析浏览器Web Bluetooth API的设备发现流程,从技术演进、基础架构切入,拆解从 requestDevice() 调用触发,到权限校验、蓝牙扫描、设备筛选、信息解析,再到GATT连接准备的全环节逻辑。同时分析浏览器兼容性、硬件环境、安全隐私等影响因素,提出精准筛选、资源管理、错误处理等优化策略。文章结合实际应用场景,阐明该流程对前端开发蓝牙交互应用的关键价值,为开发者规避陷阱、提升设备发现效率与稳定性提供底层技术支撑。
309 0
|
C语言 C++ 容器
【数据结构】二叉搜索树(二叉排序树)
本文介绍了二叉搜索树(Binary Search Tree, BST)的定义、实现及其性能分析。二叉搜索树是一种特殊的二叉树,其特点是左子树所有节点值小于根节点值,右子树所有节点值大于根节点值,且每个子树也满足此特性。文中详细讲解了BST的节点结构、插入、查找、删除等操作的实现,并通过C++代码展示了这些功能。此外,还讨论了BST的性能:在理想情况下,时间复杂度接近O(logN),但在最坏情况下可能退化为O(N)。为了提高效率,后续将学习自平衡二叉搜索树如AVL树和红黑树。掌握BST有助于理解STL中的set和map容器。感谢阅读,欢迎点赞支持。
1296 9
|
数据采集 机器学习/深度学习 数据可视化
使用Jupyter Notebook进行数据分析:入门与实践
【6月更文挑战第5天】Jupyter Notebook是数据科学家青睐的交互式计算环境,用于创建包含代码、方程、可视化和文本的文档。本文介绍了其基本用法和安装配置,通过一个数据分析案例展示了如何使用Notebook进行数据加载、清洗、预处理、探索、可视化以及建模。Notebook支持多种语言,提供直观的交互体验,便于结果呈现和分享。它是高效数据分析的得力工具,初学者可通过本文案例开始探索。
1412 3
|
数据采集 传感器 机器学习/深度学习
人工智能在农业中的应用:从数据采集到智能决策
本篇文章将详细探讨人工智能(AI)技术在现代农业中的应用,包括从数据采集、分析到智能决策的全过程。通过具体案例,展示AI如何帮助提高农业生产效率、降低成本并增强环境可持续性。
2188 0
|
关系型数据库 MySQL 应用服务中间件
|
存储 监控 数据管理
如何设置绿联云与PC电脑同步?
【7月更文挑战第1天】如何设置绿联云与PC电脑同步?
5243 2
|
监控 数据挖掘 数据安全/隐私保护
ERP系统中的绩效管理与考核
【7月更文挑战第25天】 ERP系统中的绩效管理与考核
660 2
|
存储 算法 数据安全/隐私保护
基于A律压缩的PCM脉冲编码调制通信系统simulink建模与仿真
本项目展示了一种基于MATLAB 2022a的脉冲编码调制(PCM)算法,用于将模拟信号转换为数字信号。A律压缩是非均匀量化方法之一,适用于语音信号编码,能够提高信噪比和编码效率。核心代码已提供,并附有详细中文注释和操作视频。A律压缩通过调整量化间隔来适应人耳的听觉特性,减少量化噪声,实现高质量的语音通信。此技术广泛应用于电话通信、VoIP和数字音频处理等领域。
|
SQL 监控 安全
sql数据库清除工具
在SQL数据库管理中,清理和优化数据库是一个重要的环节,特别是当数据库日志文件过大时。虽然没有特定的“SQL数据库清除工具”可以一键解决所有问题,但你可以使用多种方法和工具来清理SQL Server数
581 6