/// <summary> /// Create Filename based on format on job and image information. /// </summary> /// <param name="job"></param> /// <param name="image"></param> /// <param name="currPage"></param> /// <returns></returns> public static string makeFilename(JobDownloadViewModel job, NijieImage image, int currPage = 0, FilenameFormatType type = FilenameFormatType.Image) { try { string filenameFormat = null; switch (type) { case FilenameFormatType.Image: filenameFormat = job.SaveFilenameFormat; break; case FilenameFormatType.Manga: filenameFormat = job.SaveMangaFilenameFormat; break; case FilenameFormatType.Avatar: filenameFormat = job.SaveAvatarFilenameFormat; break; } if (string.IsNullOrWhiteSpace(filenameFormat)) { throw new NijieException("Empty filename format!", NijieException.INVALID_SAVE_FILENAME_FORMAT); } if (image.Member != null) { filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_MEMBER_ID, image.Member.MemberId.ToString()); filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_MEMBER_NAME, image.Member.UserName); } else { filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_MEMBER_ID, ""); filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_MEMBER_NAME, ""); Log.Warn("No Member Information"); } if (job.JobType == JobType.Tags) { filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_SEARCH_TAGS, job.SearchTag); } else { filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_SEARCH_TAGS, ""); } if (type != FilenameFormatType.Avatar) { filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_IMAGE_ID, image.ImageId.ToString()); filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_IMAGE_TITLE, image.Title); if (image.IsManga) { filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_PAGE, "_p" + (currPage + 1).ToString()); filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_PAGE_ZERO, "_p" + currPage.ToString()); filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_MAX_PAGE, image.ImageUrls.Count.ToString()); filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_SERVER_FILENAME, Util.ExtractFilenameFromUrl(image.ImageUrls[currPage])); } else { filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_PAGE, ""); filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_PAGE_ZERO, ""); filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_MAX_PAGE, ""); filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_SERVER_FILENAME, Util.ExtractFilenameFromUrl(image.BigImageUrl)); } if (image.Tags != null || image.Tags.Count > 0) { filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_TAGS, String.Join(" ", image.Tags)); } else { filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_TAGS, ""); } } else { filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_IMAGE_ID, ""); filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_IMAGE_TITLE, ""); filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_PAGE, ""); filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_PAGE_ZERO, ""); filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_MAX_PAGE, ""); filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_SERVER_FILENAME, Util.ExtractFilenameFromUrl(image.Member.AvatarUrl)); } if (image.BookmarkedBy != null) { filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_BOOKMARKED_MEMBER_ID, image.BookmarkedBy.MemberId.ToString()); filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_BOOKMARKED_MEMBER_NAME, image.BookmarkedBy.UserName); } else { filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_BOOKMARKED_MEMBER_ID, ""); filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_BOOKMARKED_MEMBER_NAME, ""); } // workdate if (FILENAME_FORMAT_WORKDATE.IsMatch(filenameFormat)) { var match = FILENAME_FORMAT_WORKDATE.Match(filenameFormat); var fmtDate = "yyyyMMdd"; if (!String.IsNullOrEmpty(match.Groups[1].Value)) { fmtDate = match.Groups[1].Value; } var strDate = image.WorkDate.ToString(fmtDate); filenameFormat = filenameFormat.Replace(match.Value, strDate); } return(filenameFormat); } catch (Exception ex) { Log.Error("filenameFormat=" + job.SaveFilenameFormat, ex); throw new NijieException("Failed when renaming", ex, NijieException.RENAME_ERROR); } }
/// <summary> /// Create Filename based on format on job and image information. /// </summary> /// <param name="job"></param> /// <param name="image"></param> /// <param name="currPage"></param> /// <returns></returns> public static string makeFilename(JobDownloadViewModel job, NijieImage image, int currPage = 0, FilenameFormatType type = FilenameFormatType.Image) { try { string filenameFormat = null; switch (type) { case FilenameFormatType.Image: filenameFormat = job.SaveFilenameFormat; break; case FilenameFormatType.Manga: filenameFormat = job.SaveMangaFilenameFormat; break; case FilenameFormatType.Avatar: filenameFormat = job.SaveAvatarFilenameFormat; break; } if (string.IsNullOrWhiteSpace(filenameFormat)) throw new NijieException("Empty filename format!", NijieException.INVALID_SAVE_FILENAME_FORMAT); if (image.Member != null) { filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_MEMBER_ID, image.Member.MemberId.ToString()); filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_MEMBER_NAME, image.Member.UserName); } else { filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_MEMBER_ID, ""); filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_MEMBER_NAME, ""); Log.Warn("No Member Information"); } if (job.JobType == JobType.Tags) { filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_SEARCH_TAGS, job.SearchTag); } else { filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_SEARCH_TAGS, ""); } if (type != FilenameFormatType.Avatar) { filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_IMAGE_ID, image.ImageId.ToString()); filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_IMAGE_TITLE, image.Title); if (image.IsManga) { filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_PAGE, "_p" + (currPage + 1).ToString()); filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_PAGE_ZERO, "_p" + currPage.ToString()); filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_MAX_PAGE, " of " + image.ImageUrls.Count); filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_SERVER_FILENAME, Util.ExtractFilenameFromUrl(image.ImageUrls[currPage])); } else { filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_PAGE, ""); filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_PAGE_ZERO, ""); filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_MAX_PAGE, ""); filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_SERVER_FILENAME, Util.ExtractFilenameFromUrl(image.BigImageUrl)); } if (image.Tags != null || image.Tags.Count > 0) filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_TAGS, String.Join(" ", image.Tags)); else filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_TAGS, ""); } else { filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_IMAGE_ID, ""); filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_IMAGE_TITLE, ""); filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_PAGE, ""); filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_PAGE_ZERO, ""); filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_MAX_PAGE, ""); filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_SERVER_FILENAME, Util.ExtractFilenameFromUrl(image.Member.AvatarUrl)); } if (image.BookmarkedBy != null) { filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_BOOKMARKED_MEMBER_ID, image.BookmarkedBy.MemberId.ToString()); filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_BOOKMARKED_MEMBER_NAME, image.BookmarkedBy.UserName); } else { filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_BOOKMARKED_MEMBER_ID, ""); filenameFormat = filenameFormat.Replace(FILENAME_FORMAT_BOOKMARKED_MEMBER_NAME, ""); } return filenameFormat; } catch (Exception ex) { Log.Error("filenameFormat=" + job.SaveFilenameFormat, ex); throw new NijieException("Failed when renaming", ex, NijieException.RENAME_ERROR); } }