Logic 我会用什么逻辑按季节和情节循环播放电视节目的每一集?
我正在从TVRage API中提取剧集数据——这是一种类似IMDb的服务,如果您发送“4681秀第四季第五集”的请求,它将返回剧集数据 我想从第1季第1集开始,反复讲述一切,直到节目结束。我只是不知道该怎么写这个逻辑。我猜在伪代码中应该是Logic 我会用什么逻辑按季节和情节循环播放电视节目的每一集?,logic,Logic,我正在从TVRage API中提取剧集数据——这是一种类似IMDb的服务,如果您发送“4681秀第四季第五集”的请求,它将返回剧集数据 我想从第1季第1集开始,反复讲述一切,直到节目结束。我只是不知道该怎么写这个逻辑。我猜在伪代码中应该是 $season = 1; $episode = 1; add_title_to_database($season,$episode); if (that worked) $episode++, and do it again; else $e
$season = 1;
$episode = 1;
add_title_to_database($season,$episode);
if (that worked) $episode++, and do it again;
else $e=1, $season++, and do it again; // because we've hit the end of the season
if you get two errors in a row, then incrementing the season counter didn't work because there are none left, so exit
但我不确定我该如何用类似C的语言来写,或者这是否是正确的逻辑。我无法提前查看插曲计数,我知道季节和节目结束的唯一方法是当请求没有结果时
那么我该怎么办呢?这会管用,但您可能无法区分上一集的错误和其他原因导致的错误。我注意到TVRage可以返回一个事件列表。为什么不先打个电话让你知道你的请求是有效的 编辑:
如果您使用的是XML解析器,那么您的逻辑应该如下所示:
for (season : episodelist.getChildren()) {
for (episode: season.getChildren()) {
}
}
为了记录在案,在没有剧集列表的情况下解决这个问题的方法是:
int season = 1;
while (true) {
boolean success = add_title_to_database(season, 1);
if (! success) break;
int episode = 2;
while (true) {
success = add_title_to_database(season, episode);
if (! success) break;
episode++;
}
season++;
}
我想你会一直请求直到请求失败。因此,只需定义失败条件是什么-它是否算作“失败”,因为返回的字符串/数据是空的/空的?哦,这是一个很好的捕获,我确实错过了。然而,处理事件列表仍然需要相同或非常相似的逻辑。插曲列表的结构是一个具有多个季节属性的对象,每个季节属性包含多个插曲属性,每个插曲属性包含多行数据,其中一行是我想要的标题。所以我还是要说“第0季第1集,然后第2集,然后第3集,直到失败,然后第1季,第1集,然后第2集,直到失败…在连续两次失败后退出”,等等,这就是我不知道如何写的。