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

[Bug]:运行结果错误 #841

Closed
5 of 7 tasks
go626201 opened this issue Jan 17, 2025 · 19 comments
Closed
5 of 7 tasks

[Bug]:运行结果错误 #841

go626201 opened this issue Jan 17, 2025 · 19 comments
Labels
bug Something isn't working enhancement New feature or request

Comments

@go626201
Copy link

go626201 commented Jan 17, 2025

Don't skip these steps | 不要跳过这些步骤

  • I understand that I will be blocked if I intentionally remove or skip any mandatory* field | 我明白,如果我“故意”删除或跳过任何强制性的*字段,我将被限制
  • I am sure that this is a running error exception problem and will not submit any problems unrelated to this project | 我确定这是运行报错异常问题,不会提交任何与本项目无关的问题
  • I have searched and double-checked that there are no similar issues that have been created | 我已经通过搜索并仔细检查过没有存在已经创建的类似问题

Occurrence environment | 触发环境

  • Workflow | 工作流
  • GUI | 软件
  • Docker
  • Command line | 命令行

Bug description | 具体描述

今天新下的Docker image 重建后运行第一次正常,但重启第二次开始运行 会出现错误。
❌ Write channel to file failed: list index out of range
✅ M3U result file generated at: /iptv-api/output/result.m3u
🥳 Update completed! Total time spent: 23:21. Please check the output/result.txt file!

Error log | 报错日志

Config
[Settings]
open_driver = False
open_empty_category = False
open_filter_resolution = True
open_filter_speed = True
open_hotel = False
open_hotel_foodie = True
open_hotel_fofa = True
open_keep_all = False
open_local = True
open_m3u_result = True
open_multicast = False
open_multicast_foodie = True
open_multicast_fofa = True
open_online_search = False
open_proxy = False
open_request = False
open_service = True
open_sort = True
open_subscribe = True
open_supply = False
open_update = True
open_update_time = True
open_url_info = False
open_use_cache = True
open_history = True
app_port = 8000
final_file = output/result.txt
hotel_num = 10
hotel_page_num = 1
hotel_region_list = 全部
ipv4_num = 5
ipv6_num = 5
ipv6_support = True
ipv_type = 全部
ipv_type_prefer = 自动
local_file = config/local.txt
local_num = 10
min_resolution = 1920x1080
min_speed = 0.5
multicast_num = 10
multicast_page_num = 1
multicast_region_list = 全部
online_search_num = 0
online_search_page_num = 1
origin_type_prefer =
recent_days = 30
request_timeout = 10
sort_timeout = 10
source_file = config/demo.txt
subscribe_num = 10
time_zone = Asia/Shanghai
urls_limit = 6
update_time_position = top

@go626201 go626201 added the bug Something isn't working label Jan 17, 2025
@go626201 go626201 changed the title [Bug]: [Bug]:Docker 运行结果错误 Jan 17, 2025
@go626201
Copy link
Author

今天更新的版本应该是有代码问题,有某个设定更改了必定触发❌ Write channel to file failed: list index out of range。
我试了好多次,不改设定 不会出错,但是改了某个config 就会触发。

@go626201
Copy link
Author

不好意思 又研究了一下 应该可能不是代码问题,好像是最近一次更新的订阅源的问题。 我再尝试一下 等下会在下面回复尝试结果。

@go626201
Copy link
Author

go626201 commented Jan 17, 2025

好吧 最后尝试了一下 还是不太清楚到底是哪里出了问题。。。我放弃了,等后续看有没有人遇到类似问题。

@go626201 go626201 reopened this Jan 17, 2025
@go626201
Copy link
Author

大大好,稍早我尝试用Github Action 自行运行了一次,订阅源跟这个git 完全一致,只做了设定config上的更改。然后出现了一样的错误。
只更改了这些
open_driver = False
open_hotel = False
open_hotel_foodie = False
open_hotel_fofa = False
open_multicast = False
open_multicast_foodie = False
open_multicast_fofa = False
open_service = False
open_supply = False
ipv6_support = True
min_speed = 1.2
request_timeout = 12
sort_timeout = 12

错误和我自己的Docker也是一样
❌ Write channel to file failed: list index out of range
🥳 Update completed! Total time spent: 14:41. Please check the output/result.txt file!

大大如果有时间,也可以到我的git上面看一下action 跑的结果。希望能修正这个问题。

然后就是下午我在discussion说的测速的问题。我认为当前的代码应该存在部分问题,好像只会获取部分订阅源的直播源然后进行测速,其他的直播源就不会成功测速。(不会成功测速的直播源有确定能顺畅运行的,但是IPTV-API当前的代码不会使用相关直播源)

@go626201 go626201 changed the title [Bug]:Docker 运行结果错误 [Bug]:运行结果错误 Jan 17, 2025
@Guovin
Copy link
Owner

Guovin commented Jan 18, 2025

我查看了你的工作流运行结果,近两次似乎都是成功没有问题的。
关于测速,程序并不会对所有的接口都进行测速,这并不是bug,因为单次更新会涉及上万个接口,耗时、效率会很低,所以相同域名的接口会共享测速数据。

@Guovin Guovin added the incomplete Further information is needed label Jan 18, 2025
@go626201
Copy link
Author

go626201 commented Jan 18, 2025

我查看了你的工作流运行结果,近两次似乎都是成功没有问题的。 关于测速,程序并不会对所有的接口都进行测速,这并不是bug,因为单次更新会涉及上万个接口,耗时、效率会很低,所以相同域名的接口会共享测速数据。

近两次是用特地回退的旧版本branch-回退到前几天的版本跑的(feat:docker proxy -Commit aed9b91),一旦用了master的代码 就是会出现错误,我中午跑了2次都一样,不太清楚问题出在哪里。 (您可以查看 Update schedule #1 UPDATE最后是显示错误的)

您说的 “相同域名的接口”的部分,我印象中好像是没有出现的,测速列表内没有出现我所谓的速度快的直播源。

关于接口测速-能不能加个设定,可以对全部直播源进行测速。因为海外几乎有98%的直播源是肯定不能用的,如果随机对直播源测速,那要刷好多次才能出部分可以用的结果,而且隔12小时可能又没有那些直播源了。
然后默认就是现在的设定,再加一个对全部直播源测速的设定开关,或是设定一个量达到对应速率和分辨率的直播源数量就停。
毕竟现在测速应该也是有达到5k个左右,全部测速也是大概2-4w(取决于开不开酒店源和组播源,我在海外这两个肯定用不上所以我关了就只有2w直播源左右),也就多花4倍的时间,1小时内还是能跑的完,然后sort的时间减少的话 应该还能再减少时间。
希望能采纳,谢谢。

分辨率检测应该还是有点问题的,因为有些直播源速度很快,然后检测会出现没有解析率,然后实际直播源是1080P的。

@Guovin
Copy link
Owner

Guovin commented Jan 18, 2025

1.关于写入文件报错问题,我有空会去复现解决。
2.测速日志没有出现这类可能无效的接口是因为你使用了旧版本,最新代码是已经支持显示了。相同域名的意思是对于多个接口具备一样的域名,它们位于同一个服务器下,按理应该具备类似的访问速度,只需测试其一即可。但不排除有一定的误差存在,因为有可能单一资源失效了的情况。我会验证增加测试相同域名接口是否会明显改善,然后考虑增加增量测速配置。
3.分辨率是采用ffprobe获取,偶尔个别接口获取不到属正常误差内,这属于ffprobe的问题。或许你可以提供这些接口我具体去验证。

@go626201
Copy link
Author

go626201 commented Jan 18, 2025

3.分辨率是采用ffprobe获取,偶尔个别接口获取不到属正常误差内,这属于ffprobe的问题。或许你可以提供这些接口我具体去验证。

不清楚是不是我的网络问题,我得出的结果有85%都是得不出解析率的。
我理解速度慢的直播源可能得不出解析率,但是速度快的也得不出解析率就不太明白是什么问题。
我这里提供几个速度还可以但是解析率得不出来的。

Name: CCTV-1, URL: http://z.b.bkpcp.top/m.php?id=cctv1$订阅源, Date: None, Delay: 200 ms, Speed: 1.80 M/s, Resolution: None

Name: CCTV-1, URL: https://www.freetv.top/migu/608807420.m3u8?migutoken=5b04cf0d91179ab2d3d71703f0a8bc3d32dd02f7d8fb55ee70e05c216b8a9d1a73d911fbde798459fb66d94934157c996f8306c0dd37917775f2ed73dcc22cf84b25ca500bff5c636ff48d6344$订阅源, Date: None, Delay: 267 ms, Speed: 1.41 M/s, Resolution: None

Name: CCTV-1, URL: http://cc-ynbit-wszhibo.ifengli.com:2000/live/cctv-1hd/2500.m3u8?innersid=1587240374177179388$订阅源, Date: None, Delay: 13 ms, Speed: 44.80 M/s, Resolution: None

Name: CCTV-1, URL: http://182.92.109.190:1668/72/72.php?id=cctv1$订阅源, Date: None, Delay: 200 ms, Speed: 1.63 M/s, Resolution: None

Name: CCTV-1, URL: http://182.92.109.190:1668/migu720/migu720.php?id=cctv1$订阅源, Date: None, Delay: 200 ms, Speed: 1.63 M/s, Resolution: None

Name: CCTV-2, URL: http://z.b.bkpcp.top/m.php?id=cctv2$订阅源, Date: None, Delay: 200 ms, Speed: 1.80 M/s, Resolution: None

Name: 万州综合, URL: http://wanzhoulive.cbg.cn:8017/iTXwrGs/800/live.m3u8$订阅源, Date: None, Delay: 59 ms, Speed: 5.15 M/s, Resolution: None

Name: 凤凰中文, URL: https://k44991.kylintv.tv/live/pxna_iphone.m3u8$订阅源, Date: None, Delay: 567 ms, Speed: 6.23 M/s, Resolution: None

Name: CHC家庭影院, URL: http://eastscreen.tv/ooooo.php?id=chcjt$订阅源, Date: None, Delay: 231 ms, Speed: 7.17 M/s, Resolution: None

Name: 音乐之声, URL: http://ngcdn003.cnr.cn/live/yyzs/index.m3u8$订阅源, Date: None, Delay: 17 ms, Speed: 8.24 M/s, Resolution: None

Name: 湖南卫视, URL: http://antvlive.ab5c6921.cdnviet.com/antv/playlist.m3u8$订阅源, Date: None, Delay: 71 ms, Speed: 10.15 M/s, Resolution: None

恰巧这些还都是我最终测速结果内速度快的直播源,且还是应该进到最终列表内的(但因为检测不到分辨率,没列入最终m3u内),有少量速度慢的反而能测出分辨率。
当前我是禁止分辨率判定,就会列入m3u内,但是就会出现部分720P直播源速率比较高所以排在了1080P上面/之前。

Image

额外补充:
关于第二点,我发现有些接口可能因为是2次转接,会有相同域名(能播的话速度应该是不慢的),但是有的能秒播,有些要一点时间才播,或是播不了的情况。会不会是因为刚好测到同域名播不出的直播源,然后导致相同的域名接口其他直播源被刷掉呢?

@Guovin
Copy link
Owner

Guovin commented Jan 20, 2025

我依次测试了你提供的这些接口,发现只有一个接口是有延迟、速率却没有获取分辨率的情况,其余有效的接口都能获取到分辨率。我猜测大概率是因为引用了同域名接口的结果导致的情况。

@skyyou5
Copy link

skyyou5 commented Jan 20, 2025 via email

@skyyou5
Copy link

skyyou5 commented Jan 20, 2025 via email

Guovin added a commit that referenced this issue Jan 20, 2025
@Guovin
Copy link
Owner

Guovin commented Jan 20, 2025

1.已修复文件写入问题;
2.新增了sort_duplicate_limit配置允许重复的域名接口执行操作数量(默认值为2),作用于执行测速和获取分辨率。相当于如果有5个相同域名的接口,只会对其中2个接口进行测速等操作,然后取结果平均值。
3.建议谨慎修改sort_duplicate_limit,因为会导致测速耗时明显增加。鉴于此情况,暂没有开放全部接口测速的配置,因为我觉得它是没必要和具有风险的。

@Guovin Guovin removed the incomplete Further information is needed label Jan 20, 2025
@go626201
Copy link
Author

好的 感谢回复与更新 稍后我重建docker,再测试看看。

@Guovin
Copy link
Owner

Guovin commented Jan 20, 2025

好的 感谢回复与更新 稍后我重建docker,再测试看看。

guovern/iptv-api镜像已更新

@go626201
Copy link
Author

go626201 commented Jan 20, 2025

好的 感谢回复与更新 稍后我重建docker,再测试看看。

guovern/iptv-api镜像已更新

不好意思 那个重复测速好像没正常运行。我看我的测速列表内同一个域名 全部都出现一样的速度和延迟。
我是设定sort_duplicate_limit=3。测速列表内同一个域名接口全部都是一样的结果。

补充:
刚看了你新更新的代码用的 平均值。
但不清楚为什么测速结果都变慢了。
最新版本:
Name: CCTV-1, URL: http://112.46.85.60:8009/hls/501/index.m3u8$订阅源, Date: None, Delay: 240 ms, Speed: 0.29 M/s, Resolution: 1920x1080

Name: CCTV-1, URL: https://www.freetv.top/migu/608807420.m3u8?migutoken=5b04cf0d91179ab2d3d71703f0a8bc3d32dd02f7d8fb55ee70e05c216b8a9d1a73d911fbde798459fb66d94934157c996f8306c0dd37917775f2ed73dcc22cf84b25ca500bff5c636ff48d6344$订阅源, Date: None, Delay: 730 ms, Speed: 0.95 M/s, Resolution: None

回退的旧版本:
Name: CCTV-1, URL: http://112.46.85.60:8009/hls/501/index.m3u8$订阅源, Date: None, Delay: 99 ms, Speed: 4.58 M/s, Resolution: None

Name: CCTV-1, URL: https://www.freetv.top/migu/608807420.m3u8?migutoken=5b04cf0d91179ab2d3d71703f0a8bc3d32dd02f7d8fb55ee70e05c216b8a9d1a73d911fbde798459fb66d94934157c996f8306c0dd37917775f2ed73dcc22cf84b25ca500bff5c636ff48d6344$订阅源, Date: None, Delay: 220 ms, Speed: 1.61 M/s, Resolution: None

两个版本测速的时间非常接近,大概误差在15分钟内。
新版本,6点多跑了一次,最终列表是空的。
旧版本当时刚巧6点刷新,是有得出结果的。

但好消息是分辨率有比较高的几率读出来了。

我现在在单独重跑一次新版本看看。

@go626201
Copy link
Author

go626201 commented Jan 20, 2025

跑了第二次 还是得不出结果。
但是上面回复的第一个
Name: CCTV-1, URL: http://112.46.85.60:8009/hls/501/index.m3u8$订阅源, Date: None, Delay: 240 ms, Speed: 0.29 M/s, Resolution: 1920x1080
确实是我网络问题,连接速度不行。

第二个
ame: CCTV-1, URL: https://www.freetv.top/migu/608807420.m3u8?migutoken=5b04cf0d91179ab2d3d71703f0a8bc3d32dd02f7d8fb55ee70e05c216b8a9d1a73d911fbde798459fb66d94934157c996f8306c0dd37917775f2ed73dcc22cf84b25ca500bff5c636ff48d6344$订阅源
Resolution: None

跑第二次还是得不出解析率,自己打开的速度确实是快的 能跑到2m,不缓冲。

现在尝试关闭 分辨率判定,再跑一次看。

@Guovin
Copy link
Owner

Guovin commented Jan 21, 2025

你似乎误解了,sort_duplicate_limit=3是指3个域名相同的接口都执行测速等操作,结果取平均值,所以它们的结果是一样的,都是平均值结果,属于正确情况。
下面你提到取不了分辨率的那个接口,我单独试运行了一下,是可以的,偶尔获取不到可能是网络波动等因素导致的。
由于该问题的bug已解决,如果对于这个问题没有疑问了,我将关闭该问题,若有其它问题欢迎新建issue。

@Guovin Guovin added the enhancement New feature or request label Jan 21, 2025
@go626201
Copy link
Author

好的 不好意思。
无法保存新结果的问题确实解决了。
但是新版本测速 我早上最新的结果确实还是存在问题。
新版本完全是得不出最终列表的,完全为空。(已设定关闭分辨率判定,仅用速率判定,但是得出来的速度都比旧版本慢)
但是旧版本是可以按照速率得出少量能看的最终列表。

我提供一下 新旧版本的log
生成时间差了2个小时,是因为新版本我设定8点更新。 但不至于会完全出现一个都得不出来的结果。

sort-new.log
result-new-m3u.txt

sort-old.log
result-old-m3u.txt

@Guovin
Copy link
Owner

Guovin commented Jan 21, 2025

这是因为你设定的最小速率太高了,很多接口并不满足这个要求,同时你又把补偿关了,所以结果为空。

@Guovin Guovin closed this as completed Jan 21, 2025
@Guovin Guovin mentioned this issue Jan 22, 2025
15 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants