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

网站资源多线路而且还有多个解析接口的问题 #5

Open
948693350 opened this issue Feb 8, 2021 · 4 comments
Open

网站资源多线路而且还有多个解析接口的问题 #5

948693350 opened this issue Feb 8, 2021 · 4 comments

Comments

@948693350
Copy link

描述:我写好了一个新网站的资源引擎,但是稍微有一点问题,那个网站的对于同一个资源可能有多个资源链接,每个链接还有多个解析端口(例:第一集有阿里云的资源链接,还有腾讯云的资源链接,阿里云的那个资源链接可以用解析接口1播放,也可以用解析接口2播放,但是偶尔有些资源用某些接口解析不了)
问题:我现在是把每一个资源的资源链接放在一起作为一个播放线路(接口为默认获取的那个),但是这样的话如果这个资源链接的默认解析接口无法播放,我就无法切换成另一个接口了(不知道如何展现其他解析接口)。
我的想法:1.不修改前端框架的前提下,好像只能直接把其他的解析接口放到各条线路中(例:播放线路1:第一集、第一集备用解析接口1、第一集备用解析接口2),但是这样好像很不美观,所以不太想这么写。2.修改前端代码,将其他解析接口放在播放器下方(例:播放第一集的时候,播放器下方显示第一集备用解析接口1、第一集备用解析接口2),但是这样的话,感觉也会让使用者感觉不舒服,因为还有其他的线路。。
不知道两位大佬 @zaxtyson @lozyue 有没有什么想法呢,期待+感谢~

@lozyue
Copy link
Collaborator

lozyue commented Feb 8, 2021

这个播放路线切换,因为dplayer播放器切换线路会出现奇怪的问题。之前把代理作为一条路线的挂着,后面发现有问题干脆就把路线切换给关了。其次,因为并不是每个episode都有固定的线路数,api返回数据也没有把每一集的播放线路整合,所以展示也就是分开展示(重构后会美化这边的UI)。而且之前还有每个episode的url还要请求一下才能拿到real_url的原因……

@zaxtyson
Copy link
Owner

zaxtyson commented Feb 8, 2021

如果要支持某个播放列表中某一集动态选择解析线路, 这个得 API 和前端播放器一起修改, 有点麻烦

按照新版本 API 的设计, 不管视频来自哪里, 在 API 解析的结果中, 它都可以被唯一确定的地址表示. 隐藏这些细节, 把资源位置固定下来, 是为了更好的实现历史记录或者分享链接给其他人使用.

对于一部视频, 不同的引擎可能给出自己的搜索的结果, 一个搜索结果解析出来可能有多个播放列表, 这已经提供了很多的选择, 如果每一个视频还有不同的解析接口, 选择就太多了. 我们更倾向于给出更少更优质的结果, 避免用户在测试视频是否有效这件事情上面花费的时间, 最好点进来就能播放, 而不是需要手动切换解析线路.

所以, 对于一集视频的不同的解析接口, 可以在 AnimeUrlParser 类中加以筛选, 给出一个最优质的直链, 而非给出一个不能用的或者质量低的直链, 这个事情应该由程序完成, 减少用户手动操作.

API 正在重构中, 以下是基于新版本的 dev 的代码给出的参考:

class K1080UrlParser(AnimeUrlParser):

重写 AnimeUrlParser 类的 parse 方法实现解析一集视频的直链, 这里也是一个资源出现了不同的来源, 有些无效的就过滤了, 有些需要进一步解析, 最后给出一个可用的直链. 对于你那种情况, 可用在这个方法里面对不同的解析接口进行处理, 返回最好的结果

async for item in self.as_iter_completed(tasks):

对于多个解析接口的处理, 可用使用 API 框架提供的 as_iter_completedas_completed 并行处理多个协程任务, 花费的时间取决于最慢的解析接口. 对于这些直链, 可以筛选后返回最优解.

@948693350
Copy link
Author

948693350 commented Feb 9, 2021

如果要支持某个播放列表中某一集动态选择解析线路, 这个得 API 和前端播放器一起修改, 有点麻烦

按照新版本 API 的设计, 不管视频来自哪里, 在 API 解析的结果中, 它都可以被唯一确定的地址表示. 隐藏这些细节, 把资源位置固定下来, 是为了更好的实现历史记录或者分享链接给其他人使用.

对于一部视频, 不同的引擎可能给出自己的搜索的结果, 一个搜索结果解析出来可能有多个播放列表, 这已经提供了很多的选择, 如果每一个视频还有不同的解析接口, 选择就太多了. 我们更倾向于给出更少更优质的结果, 避免用户在测试视频是否有效这件事情上面花费的时间, 最好点进来就能播放, 而不是需要手动切换解析线路.

所以, 对于一集视频的不同的解析接口, 可以在 AnimeUrlParser 类中加以筛选, 给出一个最优质的直链, 而非给出一个不能用的或者质量低的直链, 这个事情应该由程序完成, 减少用户手动操作.

API 正在重构中, 以下是基于新版本的 dev 的代码给出的参考:

class K1080UrlParser(AnimeUrlParser):

重写 AnimeUrlParser 类的 parse 方法实现解析一集视频的直链, 这里也是一个资源出现了不同的来源, 有些无效的就过滤了, 有些需要进一步解析, 最后给出一个可用的直链. 对于你那种情况, 可用在这个方法里面对不同的解析接口进行处理, 返回最好的结果

async for item in self.as_iter_completed(tasks):

对于多个解析接口的处理, 可用使用 API 框架提供的 as_iter_completedas_completed 并行处理多个协程任务, 花费的时间取决于最慢的解析接口. 对于这些直链, 可以筛选后返回最优解.

好的,明白了,你讲的很详细,阿里嘎都~ 超级感谢~
那我就等新版本出来后再修改引擎,期待~

@948693350
Copy link
Author

948693350 commented Feb 9, 2021

这个播放路线切换,因为dplayer播放器切换线路会出现奇怪的问题。之前把代理作为一条路线的挂着,后面发现有问题干脆就把路线切换给关了。其次,因为并不是每个episode都有固定的线路数,api返回数据也没有把每一集的播放线路整合,所以展示也就是分开展示(重构后会美化这边的UI)。而且之前还有每个episode的url还要请求一下才能拿到real_url的原因……

因为我的前端知识比较薄弱,所以js代码并不是很能看得懂,只能坐等新版本的UI了
哈哈哈,有点期待重构后的UI~感谢感谢(o゚▽゚)o ~

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

No branches or pull requests

3 participants