同步代码
This commit is contained in:
parent
20effe9503
commit
74753122af
|
@ -1,4 +1,5 @@
|
||||||
import os, json, requests
|
import base64
|
||||||
|
import requests
|
||||||
from urllib.parse import parse_qsl, quote
|
from urllib.parse import parse_qsl, quote
|
||||||
from homeassistant.components.http import HomeAssistantView
|
from homeassistant.components.http import HomeAssistantView
|
||||||
from aiohttp import web
|
from aiohttp import web
|
||||||
|
@ -17,55 +18,60 @@ class HttpView(HomeAssistantView):
|
||||||
play_url = None
|
play_url = None
|
||||||
|
|
||||||
async def get(self, request):
|
async def get(self, request):
|
||||||
hass = request.app["hass"]
|
|
||||||
|
hass = request.app["hass"]
|
||||||
cloud_music = hass.data['cloud_music']
|
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')
|
id = query.get('id')
|
||||||
source = query.get('source')
|
source = query.get('source')
|
||||||
song = query.get('song')
|
song = query.get('song')
|
||||||
singer = query.get('singer')
|
singer = query.get('singer')
|
||||||
|
|
||||||
not_found_tips = quote(f'当前没有找到编号是{id},歌名为{song},作者是{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'
|
play_url = f'http://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)
|
|
||||||
|
|
||||||
# 缓存KEY
|
# 缓存KEY
|
||||||
play_key = f'{id}{song}{singer}{source}'
|
play_key = f'{id}{song}{singer}{source}'
|
||||||
if self.play_key == play_key:
|
if self.play_key == play_key:
|
||||||
return web.HTTPFound(self.play_url)
|
return web.HTTPFound(self.play_url)
|
||||||
|
|
||||||
source = int(source)
|
source = int(source)
|
||||||
if source == MusicSource.PLAYLIST.value \
|
if source == MusicSource.PLAYLIST.value \
|
||||||
or source == MusicSource.ARTISTS.value \
|
or source == MusicSource.ARTISTS.value \
|
||||||
or source == MusicSource.DJRADIO.value \
|
or source == MusicSource.DJRADIO.value \
|
||||||
or source == MusicSource.CLOUD.value:
|
or source == MusicSource.CLOUD.value:
|
||||||
# 获取播放链接
|
# 获取播放链接
|
||||||
url, fee = await cloud_music.song_url(id)
|
url, fee = await cloud_music.song_url(id)
|
||||||
if url is not None:
|
if url is not None:
|
||||||
# 收费音乐
|
# 收费音乐
|
||||||
if fee == 1:
|
if fee == 1:
|
||||||
url = await hass.async_add_executor_job(self.getVipMusic, id)
|
url = await hass.async_add_executor_job(self.getVipMusic, id)
|
||||||
if url is None or url == '':
|
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:
|
|
||||||
result = await cloud_music.async_music_source(song, singer)
|
result = await cloud_music.async_music_source(song, singer)
|
||||||
if result is not None:
|
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_key = play_key
|
||||||
self.play_url = play_url
|
self.play_url = play_url
|
||||||
# 重定向到可播放链接
|
# 重定向到可播放链接
|
||||||
return web.HTTPFound(play_url)
|
return web.HTTPFound(play_url)
|
||||||
|
|
||||||
|
@ -80,4 +86,4 @@ class HttpView(HomeAssistantView):
|
||||||
data = res.json()
|
data = res.json()
|
||||||
return data.get('url')
|
return data.get('url')
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
pass
|
pass
|
||||||
|
|
Loading…
Reference in New Issue