FengLiuFeseliud / pycloudmusic

优雅的异步高性能 Python 音乐 API 库 (网易云音乐)
https://fengliufeseliud.github.io/pycloudmusic/
MIT License
25 stars 4 forks source link

能否添加proxy的选项 #2

Closed TimG233 closed 1 year ago

TimG233 commented 1 year ago

在国外ip地址测试下,一些地区限制歌曲通过music._play_url 会显示 'url': None. 所以能否添加proxy或者real-ip的选项?

FengLiuFeseliud commented 1 year ago

可,下一个版本更新

FengLiuFeseliud commented 1 year ago

更新至 v0.1.4.3 可以这样设置 proxy, 不过 aiohttp 只支持 proxy 为 http

from pycloudmusic import Music163Api, set_proxy, set_proxy_callback
import asyncio

# 正常这里是多个 proxy ip
proxy = [
    "http://117.114.149.66:55443"
]

# 设置 proxy
set_proxy(proxy[0])

# proxy 更新回调
def proxy_callback(err):
    # 如果 proxy 时出现错误这里更新
    # 第一个返回值新的 proxy ip
    # 第二个返回值 aiohttp.BasicAuth proxy 身份验证, 没有为 None
    return proxy[0], None

# 设置 proxy 更新回调
set_proxy_callback(proxy_callback)

async def main():
    musicapi = Music163Api()
    # 获取歌曲 421531
    # https://music.163.com/#/song?id=421531
    music = await musicapi.music(421531)
    await music.play()
    # 打印歌曲信息
    print(music)
    print("=" * 50)

asyncio.run(main())