python调用api免费获取播放下载任意音乐歌曲代码

代码语言:python

所属分类:其他

代码描述:python调用api免费获取播放下载任意音乐歌曲代码,下载就能用,cookie自动获取。

代码标签: python 调用 api 免费 获取 播放 下载 任意 音乐 歌曲 代码

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

#!/usr/local/python3/bin/python3
# -*- coding: utf-8 -*
import tkinter as tk
from tkinter import ttk, messagebox, simpledialog
import requests
import threading
import time
import pygame
import json
import urllib.parse
from random import randrange
from hashlib import md5
from cryptography.hazmat.primitives import padding
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
import os

class NeteaseMusicPlayer:
    def __init__(self, root):
        self.root = root
        self.root.title("音乐任意下载播放器 (游客模式)")
        self.root.geometry("800x600")
        
        pygame.mixer.init()
        self.current_song = None
        self.is_playing = False
        self.search_results = []
        
        self.music_cache_dir = "music_cache"
        self._create_cache_directory()
        
        self.session = requests.Session()
        self.session.headers.update({
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 NeteaseMusicDesktop/2.10.2.200154',
            'Referer': 'https://music.163.com/',
        })
        self.cookies = None

        self.create_widgets()
        
        self.status_var.set("正在初始化,自动获取服务器初始Cookie...")
        threading.Thread(target=self._get_initial_visitor_cookie, daemon=True).start()

    def _create_cache_directory(self):
        if not os.path.exists(self.music_cache_dir):
            os.makedirs(self.music_cache_dir)

    # --- 新增:专门用于打印调试信息的函数 ---
    def _print_debug_info(self, response):
        """一个辅助函数,用于格式化并打印请求和响应的头信息。"""
        print("\n" + "="*80)
        print(">>> [REQUEST INFO] >>>")
        print(f"URL    : {response.request.method} {response.request.url}")
        print("HEADERS:")
        for key, value in response.request.headers.items():
            print(f"  {key}: {value}")
        
        # 如果是POST请求,也打印一下请求体(截断以防过长)
        if response.request.body:
            body_preview = response.request.body
            if isinstance(body_preview, bytes):
                body_preview = body_preview.decode('utf-8', errors='ignore')
            if len(body_preview) > 300:
                body_preview = body_preview[:300] + '...'
            print(f"BODY   :\n  {body_preview}")

        print("\n" + "---" * 25)

        print("<<< [RESPONSE INFO] <<<")
        print(f"STATUS : {response.status_code} {response.reason}")
        print(&qu.........完整代码请登录后点击上方下载按钮下载查看

网友评论0