private static TVSeriesWatch GetSeriesWatch(string urlPart) { var tvSeriesQuery = new TVSeriesQuery(WebSettingsConfig.Instance.DefaultUserLanguages.From.Id); TVSeriesWatch result = tvSeriesQuery.GetSeriesWatch(urlPart); return(result); }
public TVSeriesCreator(LanguageShortName language, string outputPath, string origSeriesName, string transSeriesName) { _outputPath = outputPath; _origSeriesName = origSeriesName; _transSeriesName = transSeriesName; var languagesQuery = new LanguagesQuery(language, LanguageShortName.Ru); _languageId = languagesQuery.GetByShortName(language).Id; _seriesQuery = new TVSeriesQuery(_languageId); }
public JsonResult GetAnotherSeries(long parentId, long id) { if (WebSettingsConfig.Instance.IsSectionForbidden(SectionId.TVSeries) || IdValidator.IsInvalid(parentId) || IdValidator.IsInvalid(id)) { //TODO: на другой урл return(JsonResultHelper.Error()); } var tvSeriesQuery = new TVSeriesQuery(WebSettingsConfig.Instance.DefaultUserLanguages.From.Id); List <TVSeriesWatch> watches = tvSeriesQuery.GetSeriesWatches(parentId, id); IEnumerable <TVSeriesShortModel> result = ConvertWatchesToModels(watches); return(JsonResultHelper.GetUnlimitedJsonResult(result)); }
private IEnumerable <TVSeriesShortModel> ConvertWatchesToModels(IEnumerable <TVSeriesWatch> watches) { IEnumerable <TVSeriesShortModel> result = watches.Select(e => { Tuple <string, string, string> parts = TVSeriesQuery.GetUrlParts(e.GetUrlPart()); var pars = new { baseUrlPart = parts.Item1, season = parts.Item2, episode = parts.Item3 }; return(new TVSeriesShortModel { Title = e.TransTitle, Episode = e.Episode, Url = Url.Action("Watch", RouteConfig.TV_SERIES_CONTROLLER, pars), ImageUrl = Url.Action("GetImageByName", RouteConfig.TV_SERIES_CONTROLLER, pars), }); }); return(result); }
public ActionResult Watch(long userId, string baseUrlPart, int season, int episode) { if (IsInvalid(baseUrlPart, season, episode)) { //TODO: на другой урл return(RedirectToAction("Index", RouteConfig.MAIN_CONTROLLER_NAME)); } string urlPart = TVSeriesQuery.GetUrlPart(baseUrlPart, season, episode); TVSeriesWatch watch = GetSeriesWatch(urlPart); if (watch == null) { //TODO: на другой урл return(RedirectToAction("Index", RouteConfig.MAIN_CONTROLLER_NAME)); } watch.IsAdmin = WebSettingsConfig.Instance.IsAdmin(userId); return(View("../Video/TVSeriesDetail", watch)); }
public void WriteTVSeries(XElement root) { var tvSeriesQuery = new TVSeriesQuery(_languageId); List <TVSeriesInfo> covers = tvSeriesQuery.GetSeriesCovers(); foreach (TVSeriesInfo tvSeriesInfo in covers) { string baseUrlPart = tvSeriesInfo.GetUrlPart(); _sitemapItemWriter.WriteUrlToResult(root, UrlBuilder.GetTVSeriesUrl(baseUrlPart), 0.7m, ChangeFrequency.WEEKLY); List <TVSeriesWatch> watches = tvSeriesQuery.GetSeriesWatches(tvSeriesInfo.GetId(), IdValidator.INVALID_ID); foreach (TVSeriesWatch tvSeriesWatch in watches) { Tuple <string, string, string> pars = TVSeriesQuery.GetUrlParts(tvSeriesWatch.GetUrlPart()); string url = UrlBuilder.GetTVSeriesDetailUrl(pars.Item1, pars.Item2, pars.Item3); _sitemapItemWriter.WriteUrlToResult(root, url, 0.6m, ChangeFrequency.MONTHLY); } } }
public ActionResult GetImageByName(string baseUrlPart, int season, int episode) { if (IsInvalid(baseUrlPart, season, episode)) { //TODO: на другой урл return(RedirectToAction("Index", RouteConfig.MAIN_CONTROLLER_NAME)); } string urlPart = TVSeriesQuery.GetUrlPart(baseUrlPart, season, episode); TVSeriesWatch seriesWatch = GetSeriesWatch(urlPart); if (seriesWatch == null) { return(null); } string fullFileName = WebSettingsConfig.Instance.GetDataFileName(SERIES_FOLDER, seriesWatch.GetPathToFiles(), seriesWatch.ImageFileName); TVSeriesInfo seriesInfo = seriesWatch.GetSeriesInfo(); return(GetImage(seriesInfo.OrigTitle + "_" + seriesWatch.ImageFileName, e => ReadFile(fullFileName))); }
public ActionResult Detail(string baseUrlPart) { if (WebSettingsConfig.Instance.IsSectionForbidden(SectionId.TVSeries)) { return(RedirectToAction("Index", RouteConfig.MAIN_CONTROLLER_NAME)); } var tvSeriesQuery = new TVSeriesQuery(WebSettingsConfig.Instance.DefaultUserLanguages.From.Id); List <TVSeriesWatch> watches = tvSeriesQuery.GetSeriesWatches(baseUrlPart); if (EnumerableValidator.IsEmpty(watches)) { return(RedirectToAction("Index", RouteConfig.MAIN_CONTROLLER_NAME)); } TVSeriesInfo seriesInfo = watches[0].GetSeriesInfo(); var model = new TVSeriesModel { Title = seriesInfo.Title, OrigTitle = seriesInfo.OrigTitle, Series = ConvertWatchesToModels(watches) }; return(View("../Video/TVSeriesIndex", model)); }
public void Create(int season, int episode, string videoFile, string sourceSubtitlesFile, string origTitle, string transTitle, TimeSpan thumbnailTime) { string urlPart = _transSeriesName; var tvSeriesInfo = new TVSeriesInfo { OrigTitle = _origSeriesName, Title = _transSeriesName, Description = null, PathToFiles = _origSeriesName, ImageFileName = null, }; tvSeriesInfo.SetUrlPart(urlPart); var coverId = _seriesQuery.SaveSeriesInfo(tvSeriesInfo); string newFileName = episode.ToString(CultureInfo.InvariantCulture); string timeShiftFile = episode.ToString(CultureInfo.InvariantCulture); if (season > 0) { timeShiftFile = season + "_" + timeShiftFile; timeShiftFile = timeShiftFile + "_time.txt"; } timeShiftFile = Path.Combine(Path.GetDirectoryName(sourceSubtitlesFile), timeShiftFile); var sourceAnalyzer = new SubtitlesAnalyzer(sourceSubtitlesFile, Encoding.UTF8); List <Subtitle> sourceSubtitles = sourceAnalyzer.Analyze(timeShiftFile); var tvSeriesWatch = new TVSeriesWatch { Season = season, Episode = episode, OrigTitle = origTitle, TransTitle = transTitle, Description = null, Subtitles = sourceSubtitles, VideoFileName = newFileName + Path.GetExtension(videoFile), }; tvSeriesWatch.SetSeriesInfo(tvSeriesInfo); urlPart = TVSeriesQuery.GetUrlPart(urlPart, season, episode); tvSeriesWatch.SetUrlPart(urlPart); string fullPath = Path.Combine(_outputPath, tvSeriesWatch.GetPathToFiles()); if (!Directory.Exists(fullPath)) { Directory.CreateDirectory(fullPath); } string destVideoFile = Path.Combine(fullPath, tvSeriesWatch.VideoFileName); File.Copy(videoFile, destVideoFile, true); tvSeriesWatch.ImageFileName = newFileName + ".jpeg"; CreateImage(videoFile, thumbnailTime, fullPath, tvSeriesWatch); long tvSeriesId = _seriesQuery.SaveSeriesWatch(coverId, tvSeriesWatch); if (IdValidator.IsInvalid(tvSeriesId)) { Console.WriteLine("Не удалось добавить видео {0}", videoFile); } /*int partNumber = 1; * var videoCutter = new VideoCutter(videoFileName, @"C:\Projects\Сериалы\Друзья\1_1_parts"); * foreach (Subtitle episode in enEpisodes) * { * //TODO: соединить с другими частями и получить более длинный отрывок * if (episode.Duration.TotalSeconds < 2) * { * continue; * } * string outFileName = partNumber.ToString(CultureInfo.InvariantCulture) + ".mp4"; * if (!videoCutter.Cut(outFileName, episode.TimeFrom, episode.TimeTo)) * { * Console.WriteLine("Не удалось разрезать файл {0}, часть №{1}", videoFileName, partNumber); * Console.ReadLine(); * } * Console.WriteLine("Обработана часть {0} у видео {1}", partNumber, videoFileName); * partNumber++; * }*/ /*string ruFileName = * @"C:\Projects\Сериалы\Друзья\Субтитры\ru\Friends - 1x01 - The One Where Monica Gets A Roommate.ru.srt"; * var ruAnalyzer = new SubtitlesAnalyzer(ruFileName, Encoding.GetEncoding(1251)); * var ruEpisodes = ruAnalyzer.Analyze(); * * var matcher = new VideoEpisodesMatcher(enEpisodes, ruEpisodes); * var result = matcher.Match(); * * foreach (var tuple in result) { * Console.WriteLine(tuple.Item1.ToPrettyFormat() + "\r\n" + tuple.Item2.ToPrettyFormat()); * Console.ReadLine(); * }*/ }