Logic 我会用什么逻辑按季节和情节循环播放电视节目的每一集?

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

我正在从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=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集,直到失败…在连续两次失败后退出”,等等,这就是我不知道如何写的。