同步代码

This commit is contained in:
shaonianzhentan 2024-01-17 10:11:21 +08:00
parent 20effe9503
commit 74753122af
1 changed files with 38 additions and 32 deletions

View File

@ -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
pass