Exemplo n.º 1
0
        private static TVSeriesWatch GetSeriesWatch(string urlPart)
        {
            var           tvSeriesQuery = new TVSeriesQuery(WebSettingsConfig.Instance.DefaultUserLanguages.From.Id);
            TVSeriesWatch result        = tvSeriesQuery.GetSeriesWatch(urlPart);

            return(result);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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));
        }
Exemplo n.º 6
0
        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);
                }
            }
        }
Exemplo n.º 7
0
        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)));
        }
Exemplo n.º 8
0
        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));
        }
Exemplo n.º 9
0
        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();
             * }*/
        }