public File GetFanartArtifactDir(
      Object mediaObject,
      MediaType mediaType,
      String mediaTitle,
      MediaArtifactType artifactType,
      String artifactTitle,
      Map<String, String> metadata,
      boolean create) {
    SimpleMediaFile mf = SageFanartUtil.GetSimpleMediaFile(mediaObject);
    mediaType = Utils.returnNonNull(mediaType, mf.getMediaType());
    mediaTitle = Utils.returnNonNull(mediaTitle, mf.getTitle());
    metadata = Utils.returnNonNull(metadata, getMetadata(mediaType, mediaObject));
    String fanartFolder = GetFanartCentralFolder();
    File f =
        FanartUtil.getCentralFanartDir(
            mediaType, mediaTitle, artifactType, artifactTitle, fanartFolder, metadata);

    if (create && f != null && !f.exists()) {
      sagex.phoenix.util.FileUtils.mkdirsQuietly(f);
      if (!f.exists()) {
        log.warn("Unable to create directory: " + f.getAbsolutePath() + "; Pemission issue?");
      }
    }

    return f;
  }
  public File[] GetFanartArtifacts(
      Object mediaObject,
      MediaType mediaType,
      String mediaTitle,
      MediaArtifactType artifactType,
      String artifactTitle,
      Map<String, String> metadata) {
    File files[] = null;
    SimpleMediaFile mf = SageFanartUtil.GetSimpleMediaFile(mediaObject);
    mediaType = Utils.returnNonNull(mediaType, mf.getMediaType());
    mediaTitle = Utils.returnNonNull(mediaTitle, mf.getTitle());
    metadata = Utils.returnNonNull(metadata, getMetadata(mediaType, mediaObject));
    String fanartFolder = GetFanartCentralFolder();

    if (!fanartConfig.getUseSeason()) {
      // if we are setup to not use season specific fanart, null out
      // metadata
      metadata = null;
    }

    files =
        GetFanartArtifactsForTitle(
            mediaObject,
            mediaType,
            mediaTitle,
            artifactType,
            artifactTitle,
            metadata,
            fanartFolder);

    if (!exists(files) && mf.getMediaType() == MediaType.MUSIC) {
      files =
          GetFanartArtifactsForTitle(
              mediaObject,
              mediaType,
              SageFanartUtil.GetAlbumArtist(mediaObject),
              artifactType,
              artifactTitle,
              metadata,
              fanartFolder);
      if (!exists(files)) {
        files =
            GetFanartArtifactsForTitle(
                mediaObject,
                mediaType,
                SageFanartUtil.GetAlbumPersonArtist(mediaObject),
                artifactType,
                artifactTitle,
                metadata,
                fanartFolder);
      }
    }

    // if no central fanart, then check for local fanart
    // if (!exists(files)) {
    // File f = localFanart.GetFanartArtifact(mediaObject, mediaType,
    // mediaTitle, artifactType, artifactTitle, metadata);
    // if (f.exists()) {
    // files = new File[] {f};
    // }
    // }

    return files;
  }
  public File GetFanartArtifact(
      Object mediaObject,
      MediaType mediaType,
      String mediaTitle,
      MediaArtifactType artifactType,
      String artifactTitle,
      Map<String, String> metadata) {
    File file = null;
    SimpleMediaFile mf = SageFanartUtil.GetSimpleMediaFile(mediaObject);
    mediaType = Utils.returnNonNull(mediaType, mf.getMediaType());
    mediaTitle = Utils.returnNonNull(mediaTitle, mf.getTitle());
    metadata = Utils.returnNonNull(metadata, getMetadata(mediaType, mediaObject));
    String fanartFolder = GetFanartCentralFolder();

    if (!fanartConfig.getUseSeason()) {
      // if we are setup to not use season specific fanart, null out
      // metadata
      metadata = null;
    }

    // check for a default file
    file = getDefaultArtifact(mediaObject, artifactType);

    if (file == null) {
      file =
          GetFanartArtifactForTitle(
              mediaObject,
              mediaType,
              mediaTitle,
              artifactType,
              artifactTitle,
              metadata,
              fanartFolder);
    }

    if (!exists(file) && mf.getMediaType() == MediaType.MUSIC) {
      file =
          GetFanartArtifactForTitle(
              mediaObject,
              MediaType.MUSIC,
              SageFanartUtil.GetAlbumArtist(mediaObject),
              artifactType,
              artifactTitle,
              metadata,
              GetFanartCentralFolder());

      if (!exists(file)) {
        file =
            GetFanartArtifactForTitle(
                mediaObject,
                MediaType.MUSIC,
                SageFanartUtil.GetAlbumPersonArtist(mediaObject),
                artifactType,
                artifactTitle,
                metadata,
                GetFanartCentralFolder());
      }
    }

    // fallback to local fanart
    // if (!file.exists()) {
    // file = localFanart.GetFanartArtifact(mediaObject, mediaType,
    // mediaTitle, artifactType, artifactTitle, metadata);
    // }

    return file;
  }