From 74753122af11bccea51ecf0ec3675e48920668f0 Mon Sep 17 00:00:00 2001 From: shaonianzhentan Date: Wed, 17 Jan 2024 10:11:21 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- custom_components/ha_cloud_music/http.py | 70 +++++++++++++----------- 1 file changed, 38 insertions(+), 32 deletions(-) diff --git a/custom_components/ha_cloud_music/http.py b/custom_components/ha_cloud_music/http.py index ff5efc7..4f3c56f 100644 --- a/custom_components/ha_cloud_music/http.py +++ b/custom_components/ha_cloud_music/http.py @@ -1,4 +1,5 @@ -import os, json, requests +import base64 +import requests from urllib.parse import parse_qsl, quote from homeassistant.components.http import HomeAssistantView from aiohttp import web @@ -17,55 +18,60 @@ class HttpView(HomeAssistantView): play_url = None async def get(self, request): - hass = request.app["hass"] + + hass = request.app["hass"] cloud_music = hass.data['cloud_music'] - query = request.query + query = {} + data = request.query.get('data') + if data is not None: + decoded_data = base64.b64decode(data).decode('utf-8') + qsl = parse_qsl(decoded_data) + for q in qsl: + query[q[0]] = q[1] + id = query.get('id') source = query.get('source') song = query.get('song') singer = query.get('singer') not_found_tips = quote(f'当前没有找到编号是{id},歌名为{song},作者是{singer}的播放链接') - play_url = f'https://fanyi.baidu.com/gettts?lan=zh&text={not_found_tips}&spd=5&source=web' - - if id is None or source is None: - return web.HTTPFound(play_url) + play_url = f'http://fanyi.baidu.com/gettts?lan=zh&text={not_found_tips}&spd=5&source=web' # 缓存KEY play_key = f'{id}{song}{singer}{source}' if self.play_key == play_key: return web.HTTPFound(self.play_url) - + source = int(source) if source == MusicSource.PLAYLIST.value \ - or source == MusicSource.ARTISTS.value \ - or source == MusicSource.DJRADIO.value \ - or source == MusicSource.CLOUD.value: - # 获取播放链接 - url, fee = await cloud_music.song_url(id) - if url is not None: - # 收费音乐 - if fee == 1: - url = await hass.async_add_executor_job(self.getVipMusic, id) - if url is None or url == '': - result = await cloud_music.async_music_source(song, singer) - if result is not None: - url = result.url - - play_url = url - else: - # 从云盘里获取 - url = await cloud_music.cloud_song_url(id) - if url is not None: - play_url = url - else: + or source == MusicSource.ARTISTS.value \ + or source == MusicSource.DJRADIO.value \ + or source == MusicSource.CLOUD.value: + # 获取播放链接 + url, fee = await cloud_music.song_url(id) + if url is not None: + # 收费音乐 + if fee == 1: + url = await hass.async_add_executor_job(self.getVipMusic, id) + if url is None or url == '': result = await cloud_music.async_music_source(song, singer) if result is not None: - play_url = result.url + url = result.url + + play_url = url + else: + # 从云盘里获取 + url = await cloud_music.cloud_song_url(id) + if url is not None: + play_url = url + else: + result = await cloud_music.async_music_source(song, singer) + if result is not None: + play_url = result.url self.play_key = play_key - self.play_url = play_url + self.play_url = play_url # 重定向到可播放链接 return web.HTTPFound(play_url) @@ -80,4 +86,4 @@ class HttpView(HomeAssistantView): data = res.json() return data.get('url') except Exception as ex: - pass \ No newline at end of file + pass From 24e9a3a1d8ecce52dd2bf794e13573e2379592ae Mon Sep 17 00:00:00 2001 From: shaonianzhentan Date: Sat, 20 Jan 2024 11:42:26 +0800 Subject: [PATCH 2/3] fix #46 --- custom_components/ha_cloud_music/cloud_music.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/ha_cloud_music/cloud_music.py b/custom_components/ha_cloud_music/cloud_music.py index c2b8920..25c4e77 100644 --- a/custom_components/ha_cloud_music/cloud_music.py +++ b/custom_components/ha_cloud_music/cloud_music.py @@ -156,7 +156,7 @@ class CloudMusic(): # 获取歌单列表 async def async_get_playlist(self, playlist_id): - res = await self.netease_cloud_music(f'/playlist/track/all?id={playlist_id}') + res = await self.netease_cloud_music(f'/playlist/track/all?id={playlist_id}&limit=1000') def format_playlist(item): id = item['id'] From 53d76e02f0a8593f1811d69964670f6dba0df278 Mon Sep 17 00:00:00 2001 From: shaonianzhentan Date: Sat, 20 Jan 2024 11:43:44 +0800 Subject: [PATCH 3/3] update --- custom_components/ha_cloud_music/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/ha_cloud_music/manifest.json b/custom_components/ha_cloud_music/manifest.json index 03fb407..55db72c 100644 --- a/custom_components/ha_cloud_music/manifest.json +++ b/custom_components/ha_cloud_music/manifest.json @@ -1,7 +1,7 @@ { "domain": "ha_cloud_music", "name": "\u4E91\u97F3\u4E50", - "version": "2024.1.17", + "version": "2024.1.20", "config_flow": true, "documentation": "https://github.com/shaonianzhentan/ha_cloud_music", "requirements": [