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

【建议】希望直播挂机可以添加跳过某个或某些粉丝牌的功能,或者添加异常处理自动跳过不能挂机的牌子 #608

Closed
MTChaoyi opened this issue Sep 25, 2023 · 9 comments

Comments

@MTChaoyi
Copy link

之前就有因为自动关注添加的【在7楼】账号被封导致全部粉丝牌挂机出错
不过这个粉丝牌不太需要,所以直接删了或添加自动取关的脚本就行

但是最近关注了一个官号没开通直播间却有粉丝牌的,无法进行直播间挂机,导致全部挂机都出错
这个粉丝牌不想删,也不想取关,就只能全卡着无法挂机

所以希望可以添加个功能跳过这些无法挂机的粉丝牌,手动添加或自动识别出错就跳过都行
image

@MTChaoyi
Copy link
Author

MTChaoyi commented Sep 25, 2023

foreach (var medal in medalWallInfo.Data.List)
{
_logger.LogInformation("【主播】{name} ", medal.Target_name);
if (_liveFansMedalTaskOptions.IsSkipLevel20Medal && medal.Medal_info.Level >= 20)
{
_logger.LogInformation("粉丝牌等级为 {level},观看将不再增长亲密度,跳过", medal.Medal_info.Level);
continue;
}

我在这段代码后面加了个 continue 凑合用着,倒是不急需这个功能,但还是希望能加上,不然每次更新订阅或有其他问题牌子都得重新改一遍,很麻烦。

        if (medal.Target_name == "MyGO_AveMujica")
        {
          _logger.LogInformation("跳过 {name} ", medal.Target_name);
          continue;
        }

@Fizzyi
Copy link

Fizzyi commented Oct 8, 2023

谢谢老哥,之前就是这个原因导致我的直播挂机任务一直执行不成功

@Polaris-cn10086
Copy link
Contributor

我这里没有不能挂机的牌子,没办法进行验证具体情况。
直播挂机全卡着是指在进行到不能挂机的牌子时,程序直接卡死,只能重启。
还是会跳过之后的牌子?导致后面的牌子没能挂机?

@Fizzyi
Copy link

Fizzyi commented Oct 11, 2023

我这里没有不能挂机的牌子,没办法进行验证具体情况。 直播挂机全卡着是指在进行到不能挂机的牌子时,程序直接卡死,只能重启。 还是会跳过之后的牌子?导致后面的牌子没能挂机?

程序直接报错退出了,就算重启也没用

@MTChaoyi
Copy link
Author

我这里没有不能挂机的牌子,没办法进行验证具体情况。
直播挂机全卡着是指在进行到不能挂机的牌子时,程序直接卡死,只能重启。
还是会跳过之后的牌子?导致后面的牌子没能挂机?

我这边的话主要是检测到的第一个牌子就是没直播间的
我看了代码逻辑是拿到所有牌子列表后循环获取每个牌子的直播间,但是没直播间的牌子检测不到直播间信息,就导致直接整个循环中断报错
我后面没问题的牌子还没运行到就都结束了,就像我一开始发的图里那样,我还有其他牌子但是连信息都没打印出来

所以我希望可以加个异常处理之类的,直播间信息获取失败就跳过那个牌子
或者加个自行选择跳过牌子的环境变量(我用的青龙),循环那边检测到需要跳过就直接跳过获取那个牌子的直播间

@Polaris-cn10086
Copy link
Contributor

Polaris-cn10086 commented Oct 11, 2023

var roomId = spaceInfo.Data.Live_room.Roomid;

// 获取直播间详细信息
var liveRoomInfo = await _liveApi.GetLiveRoomInfo(roomId);
if (liveRoomInfo.Code != 0)
{
    _logger.LogError("【获取直播间信息】失败");
    _logger.LogError("【原因】{message}", liveRoomInfo.Message);
    continue;
}

根据排查,当有up主的粉丝牌不能挂机时spaceInfo.Data.Live_roomnull会导致出现异常

简单的解决方法:在此之前判断其值是否为null

// 用以排除有牌子无直播间的up主
if (spaceInfo.Data.Live_room is null)
    continue;

var roomId = spaceInfo.Data.Live_room.Roomid;

理论上来说应该就能解决了,我先将其推送到我的fork中了。

看一下你们的测试情况如何,能不能解决问题。
6991632908ccf2f3bc24260ec434ac9e

@MTChaoyi
Copy link
Author

好的,我晚点测试一下,可能明天才能给你结果

@MTChaoyi
Copy link
Author

我这里没有不能挂机的牌子,没办法进行验证具体情况。
直播挂机全卡着是指在进行到不能挂机的牌子时,程序直接卡死,只能重启。
还是会跳过之后的牌子?导致后面的牌子没能挂机?

我这边的话主要是检测到的第一个牌子就是没直播间的 我看了代码逻辑是拿到所有牌子列表后循环获取每个牌子的直播间,但是没直播间的牌子检测不到直播间信息,就导致直接整个循环中断报错 我后面没问题的牌子还没运行到就都结束了,就像我一开始发的图里那样,我还有其他牌子但是连信息都没打印出来

所以我希望可以加个异常处理之类的,直播间信息获取失败就跳过那个牌子 或者加个自行选择跳过牌子的环境变量(我用的青龙),循环那边检测到需要跳过就直接跳过获取那个牌子的直播间

我这边测试过可以用了,起码有牌子没直播间的情况已解决。
感觉可以再加个跳过提示

@Polaris-cn10086
Copy link
Contributor

#613 PR已经提交。

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