Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pure 主题 #172

Merged
merged 7 commits into from
Sep 17, 2024
Merged

pure 主题 #172

merged 7 commits into from
Sep 17, 2024

Conversation

hanxi
Copy link
Owner

@hanxi hanxi commented Sep 16, 2024

No description provided.

@hanxi
Copy link
Owner Author

hanxi commented Sep 16, 2024

@52fisher 能否把 allow_origins 做成配置,多个用逗号隔离即可。

@52fisher
Copy link
Contributor

allow_origins 做成配置

allow_origins 做成配置是个危险行为,我只是为了在前端调用api方便,后端端口和vscode默认5173端口不能共用.

图片

@hanxi
Copy link
Owner Author

hanxi commented Sep 16, 2024

那如果想部署不同的前端是不是得都部署到一个端口下。

@52fisher
Copy link
Contributor

举个例子,xiaomusic占用的端口号为5678,在本地使用Docker desktop运行,地址localhost
默认会展示/static/目录下的index.html
如果我想原生开发xiaomusic的前端,直接修改对应的html文件就可以了,JQ+HTML+CSS 基本上是上古时代的技术了
要利用vue开发,就不能监听5678,得重新开一个端口,然后利用调用api接口获取数据
FastApi要设置CROS我才能通过不同端口获取数据
现在我的做法就是在Docker Desktop里面修改httpsever.py这个文件,释放两个端口
开发完成后,就不需要监听其他端口了,生成的文件就可以直接替换原/static/目录文件了

@hanxi
Copy link
Owner Author

hanxi commented Sep 16, 2024

那有点像切换主题的功能,都是静态文件。

@52fisher
Copy link
Contributor

差不多 主要是开发的时候不好处理

@hanxi
Copy link
Owner Author

hanxi commented Sep 16, 2024

@52fisher 有什么好的建议把你这套ui合并进来不?我想到的是像改主题一样,一套ui一个目录,设置页面加个修改主题的选项。然后修改 / 服务端路由,根据不同主题返回不同的 index.html 。

@app.get("/")
async def read_index(Verifcation=Depends(verification)):
    folder = os.path.dirname(__file__)
    return FileResponse(f"{folder}/static/{theme}/index.html")

@52fisher
Copy link
Contributor

52fisher commented Sep 16, 2024

@hanxi 服务端不需要修改啊 前端的路由由前端来决定的。前端自己配置好就行了啊

看你的代码就是就是以httpsever.py所在路径为绝对路径,后面的只要在/static/[theme]/增加相应的文件夹和资源。
前端只要保持路径在/static/[theme]/中。如果要使用/,通过设置来配置主题也可以。就是我觉得要增加很多的代理,又要多花性能,没必要。

如果前端来存路由,localStotage保存一个主题的名称或者路由,在/index.html使用location.href跳转到/static/[theme]/index.html就行了。

@52fisher
Copy link
Contributor

另外 你看一下携带这个参数后返回的数据中,devices 的值是 Object { },这个返回值是不是未转JSON,虽然有device_list,但是这个参数不应该丢失数据吧?FastApi基本上没啥作用,这个数据都得重新抓包才能看到返回数据的情况。我之前没注意到这个情况, 一直从devices 中取数据,调试后才终于找到了这个问题,我说数据渲染咋会出现白屏的情况
图片

@hanxi
Copy link
Owner Author

hanxi commented Sep 17, 2024

@hanxi 服务端不需要修改啊 前端的路由由前端来决定的。前端自己配置好就行了啊

看你的代码就是就是以httpsever.py所在路径为绝对路径,后面的只要在/static/[theme]/增加相应的文件夹和资源。 前端只要保持路径在/static/[theme]/中。如果要使用/,通过设置来配置主题也可以。就是我觉得要增加很多的代理,又要多花性能,没必要。

如果前端来存路由,localStotage保存一个主题的名称或者路由,在/index.html使用location.href跳转到/static/[theme]/index.html就行了。

你这个方案也挺好的,可以帮忙提个pr不?保留旧的也取个主题名,比如叫 origin 。

@hanxi
Copy link
Owner Author

hanxi commented Sep 17, 2024

另外 你看一下携带这个参数后返回的数据中,devices 的值是 Object { },这个返回值是不是未转JSON,虽然有device_list,但是这个参数不应该丢失数据吧?FastApi基本上没啥作用,这个数据都得重新抓包才能看到返回数据的情况。我之前没注意到这个情况, 一直从devices 中取数据,调试后才终于找到了这个问题,我说数据渲染咋会出现白屏的情况 图片

devices 字段是勾选了点设备,device_list 是账号下的所有设备。

@52fisher
Copy link
Contributor

@hanxi 我在fork的仓库提交了
不过我的主题那部分没写完,毕竟这不是我的主业,所以更新还比较慢,后面要花一些时间来pr
你的代码我改了一小部分以兼容主题模式,现在可以通过/static/[theme]来访问了
这是访问的主页
图片

@hanxi hanxi merged commit bfbd36f into hanxi:main Sep 17, 2024
@F-loat
Copy link

F-loat commented Sep 17, 2024

allow_origins 其实配置 * 也没什么,第三方客户端接入还方便些,clash 的各种客户端就是如此,独立迭代也便于更新,跨域这个限制简单加个代理就能破掉,xiaomusic 这个场景内网没安全问题,公网走账号验证了就

@hanxi
Copy link
Owner Author

hanxi commented Sep 17, 2024

allow_origins 其实配置 * 也没什么,第三方客户端接入还方便些,clash 的各种客户端就是如此,独立迭代也便于更新,跨域这个限制简单加个代理就能破掉,xiaomusic 这个场景内网没安全问题,公网走账号验证了就

https://fastapi.tiangolo.com/zh/tutorial/cors/

allow_credentials - 指示跨域请求支持 cookies。默认是 False。另外,允许凭证时 allow_origins 不能设定为 ['*'],必须指定源。

看上去还不能简单的改为 * ,中间件好像还不支持动态修改,就不好做成为配置项了,先不处理跨域问题了,我也认为加个代理就可以绕过去了。

@52fisher
Copy link
Contributor

allow_origins 其实配置 * 也没什么,第三方客户端接入还方便些,clash 的各种客户端就是如此,独立迭代也便于更新,跨域这个限制简单加个代理就能破掉,xiaomusic 这个场景内网没安全问题,公网走账号验证了就

作者之前的账号密码是明文的,所以我说不安全. 现在处理过了,配置*也没啥问题的

@52fisher
Copy link
Contributor

allow_origins 其实配置 * 也没什么,第三方客户端接入还方便些,clash 的各种客户端就是如此,独立迭代也便于更新,跨域这个限制简单加个代理就能破掉,xiaomusic 这个场景内网没安全问题,公网走账号验证了就

https://fastapi.tiangolo.com/zh/tutorial/cors/

allow_credentials - 指示跨域请求支持 cookies。默认是 False。另外,允许凭证时 allow_origins 不能设定为 ['*'],必须指定源。

看上去还不能简单的改为 * ,中间件好像还不支持动态修改,就不好做成为配置项了,先不处理跨域问题了,我也认为加个代理就可以绕过去了。

不需要cookies做验证之类的,直接配置也可以。我现在就是直接配置的

allow_origins=["*"],  # 允许访问的源
  allow_credentials=False,  # 支持 cookie

hanxi added a commit that referenced this pull request Sep 17, 2024
@hanxi
Copy link
Owner Author

hanxi commented Sep 17, 2024

@52fisher @F-loat 现在已经允许跨域访问了。之前密码明文返回给客户端的问题也是 F-loat 反馈的,后面抓紧修复了。感谢🙏!

@ycszadmin
Copy link

这个主题文件夹列表能不能优化下,多文件夹下就会无限向后拉滚动条。
dcd6f3c9-4c05-44f6-8688-249b20671c50

@52fisher
Copy link
Contributor

这个主题文件夹列表能不能优化下,多文件夹下就会无限向后拉滚动条。 dcd6f3c9-4c05-44f6-8688-249b20671c50

你加一下作者的QQ群吧 我们具体聊聊 全部列表当中已经把所有的歌曲都展示过了,我初步的想法就是只保留几个,然后通过搜索按钮进行播放

@hanxi hanxi changed the title allow CROS pure 主题 Sep 18, 2024
@grayana
Copy link
Contributor

grayana commented Sep 18, 2024

双击播放歌曲这个操作感觉比较反直觉,是否考虑改为单击播放或者加个提示? @52fisher

@52fisher
Copy link
Contributor

双击播放歌曲这个操作感觉比较反直觉,是否考虑改为单击播放或者加个提示? @52fisher

加一个提示 或者 当鼠标移动到 歌曲列表的时候增加一个按钮 点击按钮就可以在小爱设备上播放。我更加倾向于双击,因为这样速度快一点,你觉得呢?

@grayana
Copy link
Contributor

grayana commented Sep 18, 2024 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants