/** 获取带截图文件夹的root路径 */
  public static File getShotRoot(
      ShotInfo shotInfo, AnimeEpisode animeEpisode, AnimeInfo animeInfo) {
    if (shotInfo != null) {
      // if (XStringUtils.isNotBlank(shotInfo.getLocalRootPath())) {
      // return new File(shotInfo.getLocalRootPath(), ShotConstants.LOCAL_ROOT_SHOT_PATH);
      // }
    }

    if (animeEpisode != null) {
      if (XStringUtils.isNotBlank(animeEpisode.getShotLocalRootPath())) {
        return new File(
            animeEpisode.getShotLocalRootPath(), ShotCoreConstants.LOCAL_ROOT_SHOT_PATH);
      }

      if (XStringUtils.isNotBlank(animeEpisode.getLocalRootPath())) {
        return new File(animeEpisode.getLocalRootPath(), ShotCoreConstants.LOCAL_ROOT_SHOT_PATH);
      }
    }

    if (animeInfo != null) {
      if (XStringUtils.isNotBlank(animeInfo.getLocalDetailPath())) {
        return new File(animeInfo.getLocalDetailPath(), ShotCoreConstants.LOCAL_ROOT_SHOT_PATH);
      }
    }

    return getShotRootDefault();
  }
  /** 获取带动画文件夹的root路径 */
  public static File getAnimeRoot(AnimeInfo animeInfo, AnimeEpisode animeEpisode) {
    if (animeEpisode != null && XStringUtils.isNotBlank(animeEpisode.getLocalRootPath())) {
      return new File(animeEpisode.getLocalRootPath(), ShotCoreConstants.LOCAL_ROOT_ANIME_PATH);
    }

    if (animeInfo != null && XStringUtils.isNotBlank(animeInfo.getLocalRootPath())) {
      return new File(animeInfo.getLocalRootPath(), ShotCoreConstants.LOCAL_ROOT_ANIME_PATH);
    }

    return getAnimeRootDefault();
  }
  /** 获取动画的detail路径 */
  public static String getDetailPath(AnimeInfo animeInfo, AnimeEpisode animeEpisode) {
    if (animeEpisode != null && XStringUtils.isNotBlank(animeEpisode.getLocalDetailPath())) {
      return animeEpisode.getLocalDetailPath();
    }

    if (animeInfo != null && XStringUtils.isNotBlank(animeInfo.getLocalDetailPath())) {
      return animeInfo.getLocalDetalPath();
    }

    return null;
  }
  /** 获取截图的detail路径 */
  public static String getDetailPath(
      ShotInfo shotInfo, AnimeEpisode animeEpisode, AnimeInfo animeInfo) {
    // if (shotInfo != null && XStringUtils.isNotBlank(shotInfo.getLocalDetailPath())) {
    // return shotInfo.getLocalDetailPath();
    // }

    if (animeEpisode != null) {
      if (XStringUtils.isNotBlank(animeEpisode.getShotLocalDetailPath())) {
        return animeEpisode.getShotLocalDetailPath();
      }

      if (XStringUtils.isNotBlank(animeEpisode.getLocalDetailPath())) {
        return animeEpisode.getLocalDetailPath();
      }
    }

    if (animeInfo != null) {
      if (XStringUtils.isNotBlank(animeInfo.getLocalDetailPath())) {
        return animeInfo.getLocalDetailPath();
      }
    }

    return null;
  }