public List<ISubtitle> GetLastSubtitles(int number = 100, SubtitleLanguage type = SubtitleLanguage.VOVF)
        {
            List<ISubtitle> list = new List<ISubtitle>();
            if (type == SubtitleLanguage.Other)
            {
                throw new ArgumentException("Cannot use SubtitleLanguage : Other for this request");
            }
            string stype = type.ToString();

            if (number < 0)
            {
                number = 100;
            }

            XmlDocument doc = Utils.UtilsXML.GetUrl("/subtitles/last.xml", "&number=" + number + "&language=" + stype);
            XmlElement xe = doc["root"]["subtitles"];

            if (xe == null)
            {
                throw new BetaSeriesException(1003, "Invalid action.");
            }
            foreach (XmlElement sub in xe.GetElementsByTagName("subtitle"))
            {
                ISubtitle s = SubtitleFactory.CreateSubtitle(sub);
                list.Add(s);
            }

            return list;
        }
Example #2
0
        protected override bool EnumerateStreams(bool forceRefresh)
        {
            //FIXME: TSReader only offers Audio in IAMStreamSelect, it would be cleaner to expose subs as well.
            bool refreshed = base.EnumerateStreams(forceRefresh);

            if (refreshed)
            {
                // If base class has refreshed the stream infos, then update the subtitle streams.
                ISubtitleStream subtitleStream = _sourceFilter as ISubtitleStream;
                int             count          = 0;
                if (subtitleStream != null)
                {
                    _streamInfoSubtitles = new StreamInfoHandler();
                    subtitleStream.GetSubtitleStreamCount(ref count);
                    if (count > 0)
                    {
                        StreamInfo subStream = new StreamInfo(null, NO_STREAM_INDEX, NO_SUBTITLES, 0);
                        _streamInfoSubtitles.AddUnique(subStream);
                    }
                    for (int i = 0; i < count; ++i)
                    {
                        //FIXME: language should be passed back also as LCID
                        SubtitleLanguage language = new SubtitleLanguage();
                        subtitleStream.GetSubtitleStreamLanguage(i, ref language);
                        int lcid = LookupLcidFromName(language.lang);
                        // Note: the "type" is no longer considered in MP1 code as well, so I guess DVBSub3 only supports Bitmap subs at all.
                        string     name      = language.lang;
                        StreamInfo subStream = new StreamInfo(null, i, name, lcid);
                        _streamInfoSubtitles.AddUnique(subStream);
                    }
                }
            }
            return(refreshed);
        }
Example #3
0
        public async Task <SubtitleData> SubtitleDataAsync(string id, SubtitleLanguage language, int?seasonNumber = null)
        {
            try
            {
                string initUrl = $"{language.ToString()}/API/Subtitles/{_apiKey}/{id}";
                if (seasonNumber.HasValue)
                {
                    initUrl = $"{language.ToString()}/API/Subtitles/{_apiKey}/{id}/{seasonNumber}";
                }

                string url  = $"{BaseUrl}/{initUrl}";
                string json = await Utils.DownloadJsonAsync(url);

                if (string.IsNullOrEmpty(json))
                {
                    return new SubtitleData()
                           {
                               ErrorMessage = "Server Not Founded"
                           }
                }
                ;

                var data = JsonConvert.DeserializeObject <SubtitleData>(json);
                return(data);
            }
            catch (Exception ex)
            {
                return(new SubtitleData()
                {
                    ErrorMessage = ex.Message
                });
            }
        }
        public TsReaderStreamInfoHandler(ISubtitleStream subtitleStream)
        {
            if (subtitleStream == null)
            {
                return;
            }

            int count = 0;

            _subtitleStream = subtitleStream;
            subtitleStream.GetSubtitleStreamCount(ref count);
            if (count > 0)
            {
                StreamInfo subStream = new StreamInfo(null, NO_STREAM_INDEX, VideoPlayer.NO_SUBTITLES, 0);
                AddUnique(subStream);
            }
            for (int i = 0; i < count; ++i)
            {
                //FIXME: language should be passed back also as LCID
                SubtitleLanguage language = new SubtitleLanguage();
                subtitleStream.GetSubtitleStreamLanguage(i, ref language);
                int lcid = BaseDXPlayer.LookupLcidFromName(language.lang);
                // Note: the "type" is no longer considered in MP1 code as well, so I guess DVBSub3 only supports Bitmap subs at all.
                string     name      = language.lang;
                StreamInfo subStream = new StreamInfo(null, i, name, lcid);
                AddUnique(subStream);
            }
        }
        public SettingsViewModel(INavigator navigator)
        {
            this.navigator = navigator;
            var wantLangs = App.Settings.WantedLanguages;

            foreach (var x in SubtitleLanguage.AllLanguages)
            {
                LanguageList.Add(x);
            }

            if (wantLangs != null)
            {
                foreach (var x in wantLangs)
                {
                    WantedLanguageList.Add(x);
                }
            }

            selectedLanguage          = null;
            selectedWantedLanguage    = null;
            alwaysOnTop               = App.Settings.KeepWindowOnTop;
            downloadToSubsFolder      = App.Settings.DownloadToSubsFolder;
            allowMultipleDownloads    = App.Settings.AllowMultipleDownloads;
            overwriteSameLanguageSubs = App.Settings.OverwriteSameLanguageSub;
        }
 public Settings(bool enabled, byte size, Color color, SubtitleLanguage language)
 {
     Size     = size >= MinSize ? size : throw new ArgumentException(nameof(size));
     Enabled  = enabled;
     Color    = color;
     Language = language;
 }
        public TsReaderTeletextInfoHandler(ITeletextSource teletextSource)
        {
            if (teletextSource == null)
            {
                return;
            }
            int teletextStreamCount = 0;

            _teletextSource = teletextSource;
            teletextSource.GetTeletextStreamCount(ref teletextStreamCount);
            if (teletextStreamCount > 0)
            {
                StreamInfo subStream = new StreamInfo(null, NO_STREAM_INDEX, VideoPlayer.GetNoSubsName(), 0);
                AddUnique(subStream);
            }
            for (int i = 0; i < teletextStreamCount; ++i)
            {
                //FIXME: language should be passed back also as LCID
                SubtitleLanguage language = new SubtitleLanguage();
                teletextSource.GetTeletextStreamLanguage(i, ref language);
                int        lcid      = BaseDXPlayer.LookupLcidFromName(language.lang);
                string     name      = language.lang;
                StreamInfo subStream = new StreamInfo(null, i, name, lcid);
                AddUnique(subStream);
            }
        }
Example #8
0
        public static async Task<SubtitleData[]> GetSubtitles(int imdbid, SubtitleLanguage langid)
        {
            try
            {
                Debug.WriteLine($"Requesting http://www.opensubtitles.org/en/search/imdbid-{imdbid}/sublanguageid-{langid}/xml");
                var rq = (HttpWebRequest)WebRequest.Create($"http://www.opensubtitles.org/en/search/imdbid-{imdbid}/sublanguageid-{langid}/xml");

                rq.Timeout = 1000;
                rq.ReadWriteTimeout = 10000;

                var response = await rq.GetResponseAsync() as HttpWebResponse;

                using (var responseStream = response.GetResponseStream())
                {
                    XmlTextReader reader = new XmlTextReader(responseStream);
                    var osXml = XDocument.Load(reader, LoadOptions.None);
                    var subs = osXml.XPathSelectElements("//opensubtitles/search/results/subtitle").Select(x => new SubtitleData
                    {
                        LinkDownload = x.Element("IDSubtitle")?.Attribute("LinkDownload")?.Value,
                        ReleaseName = x.Element("MovieReleaseName")?.Value
                    }).ToArray();
                    return subs;
                }
            }
            catch (Exception ex)
            {
                // ignored
            }

            return new SubtitleData[0];
        }
Example #9
0
        private HashSet <SubtitleLanguage> GetSupportedLanguages(HashSet <string> languages)
        {
            var result = new HashSet <SubtitleLanguage>();

            foreach (var language in languages)
            {
                result.Add(SubtitleLanguage.Find(language));
            }
            return(result);
        }
Example #10
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="output">The output from the server.</param>
        public GetSubLanguagesOutput(XmlRpcStruct output) : base(output)
        {
            XmlRpcStruct[] data = output.GetXmlRpcStructArray("data");
            Languages = new SubtitleLanguage[data.Length];

            for (int Index = 0; Index < data.Length; Index++)
            {
                Languages[Index] = new SubtitleLanguage(data[Index]);
            }
        }
        private int CompareLanguages(ListViewItem row1, ListViewItem row2)
        {
            string lang1 = row1.SubItems[Columns.Language].Text;
            string lang2 = row2.SubItems[Columns.Language].Text;

            bool pref1 = SubtitleLanguage.IsPrefferedLanguage(lang1);
            bool pref2 = SubtitleLanguage.IsPrefferedLanguage(lang2);

            // Preferred language should go on top
            int res = (pref2 ? 1 : 0) - (pref1 ? 1 : 0);
            if (res != 0)
                return res;

            return string.Compare(lang1, lang2);
        }
        private void lvSubtitles_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
        {
            // Show preffered language with bold text
            if (e.ColumnIndex == Columns.Language)
            {
                if (e.Value != null && SubtitleLanguage.IsPrefferedLanguage(e.Value.ToString()))
                {
                    e.CellStyle.Font = new Font(ThemeManager.NormalFont, FontStyle.Bold);
                }

                e.Handled = true;
                return;
            }

            // Mark higherst prio items with red
            if (e.ColumnIndex == Columns.ServerOrder)
            {
                if (e.Value != null && e.Value.ToString() == _highestPrio.ToString())
                {
                    e.CellStyle.ForeColor = ThemeManager.SelectedColor;
                    e.CellStyle.BackColor = ThemeManager.BackColor;

                    e.CellStyle.SelectionForeColor = ThemeManager.BackColor;
                    e.CellStyle.SelectionBackColor = ThemeManager.SelectedColor;
                }

                e.Handled = true;
                return;
            }
            
            if (e.Value != null && e.Value.ToString() == none)
            {
                e.CellStyle.ForeColor = ThemeManager.BorderColor;
                e.Handled = true;
                return;
            }
        }
Example #13
0
        protected override bool EnumerateStreams(bool forceRefresh)
        {
            //FIXME: TSReader only offers Audio in IAMStreamSelect, it would be cleaner to expose subs as well.
            bool refreshed = base.EnumerateStreams(forceRefresh);

            if (refreshed)
            {
                // If base class has refreshed the stream infos, then update the subtitle streams.
                ISubtitleStream subtitleStream = _fileSource as ISubtitleStream;
                int             count          = 0;
                if (subtitleStream != null)
                {
                    _streamInfoSubtitles = new StreamInfoHandler();
                    subtitleStream.GetSubtitleStreamCount(ref count);
                    if (count > 0)
                    {
                        StreamInfo subStream = new StreamInfo(null, NO_STREAM_INDEX, NO_SUBTITLES, 0);
                        _streamInfoSubtitles.AddUnique(subStream);
                    }
                    for (int i = 0; i < count; ++i)
                    {
                        //FIXME: language should be passed back also as LCID
                        SubtitleLanguage language = new SubtitleLanguage();
                        int type = 0;
                        subtitleStream.GetSubtitleStreamLanguage(i, ref language);
                        subtitleStream.GetSubtitleStreamType(i, ref type);
                        int    lcid = LookupLcidFromName(language.lang);
                        string name = type == 0
                            ? String.Format("{0} (DVB)", language.lang)
                            : String.Format("{0} (Teletext)", language.lang);
                        StreamInfo subStream = new StreamInfo(null, i, name, lcid);
                        _streamInfoSubtitles.AddUnique(subStream);
                    }
                }
            }
            return(refreshed);
        }
 public SubtitleSettingsBuilder WithLanguage(SubtitleLanguage language)
 {
     _language = language;
     return(this);
 }
Example #15
0
 public void GetSubtitleStreamLanguage(int stream, ref SubtitleLanguage szLanguage)
 {
     szLanguage.lang = _subtitleLanguage;
 }
Example #16
0
 public void GetTeletextStreamLanguage(int stream, ref SubtitleLanguage szLanguage)
 {
     szLanguage.lang = _teletextSubtitleLanguage;
 }
 public List<ISubtitle> GetSubtitles(string urlSerie, int season, int episode, SubtitleLanguage type = SubtitleLanguage.VOVF)
 {
     IEpisode ep = EpisodeFactory.CreateEpisode();
     ep.UrlShow = urlSerie;
     ep.Season = season;
     ep.Number = episode;
     return ep.GetSubtitles(type);
 }
 public List<ISubtitle> GetSubtitles(string urlSerie, SubtitleLanguage type = SubtitleLanguage.VOVF)
 {
     IShow show = ShowFactory.CreateShow();
     show.Url = urlSerie;
     return show.GetSubtitles(type);
 }
        void SubtitleDownloadNotifyForm_Load(object sender, EventArgs e)
        {
            foreach (SubtitleDownloader sd in _subtitleDownloadInfo.Keys)
            {
                if (sd.Priority < _highestPrio)
                    _highestPrio = sd.Priority;
            }

            foreach (KeyValuePair<SubtitleDownloader, List<SubtitleInfo>> kvp in _subtitleDownloadInfo)
            {
                SubtitleDownloader sd = kvp.Key;
                List<SubtitleInfo> list = kvp.Value;

                if (sd != null && list != null)
                {
                    foreach (SubtitleInfo si in list)
                    {
                        string[] data = new string[] 
                        { 
                            string.IsNullOrEmpty(si.SubFileName) ? none : si.SubFileName,
                            string.IsNullOrEmpty(sd.ServerUrl) ? none : sd.ServerUrl, 
                            sd.Priority.ToString(), 
                            string.IsNullOrEmpty(si.LanguageName) ? none : si.LanguageName, 
                            string.IsNullOrEmpty(si.SubSize) ? none : si.SubSize
                        };

                        ListViewItem item = new ListViewItem(data);
                        SubtitleDownloadInfo sdi = new SubtitleDownloadInfo();
                        sdi.sd = sd;
                        sdi.si = si;
                        item.Tag = sdi;
                        lvSubtitles.Items.Add(item);

                        //item.UseItemStyleForSubItems = true;

                        if (SubtitleLanguage.IsPrefferedLanguage(si.LanguageName))
                        {
                            item.ForeColor = ThemeManager.HighlightColor;
                            foreach (ListViewItem.ListViewSubItem lvsi in item.SubItems)
                            {
                                lvsi.ForeColor = ThemeManager.HighlightColor;
                            }
                        }

                        if (_highestPrio == sd.Priority)
                        {
                            item.Font = ThemeManager.SmallFont;
                            foreach (ListViewItem.ListViewSubItem lvsi in item.SubItems)
                            {
                                lvsi.Font = ThemeManager.SmallFont;
                            }
                        }

                        
                    }
                }
            }

            int count = lvSubtitles.Items.Count;
            string movieName = string.Format("'{0}'", Path.GetFileName(_movieFilePath));

            lvSubtitles.ListViewItemSorter = new SubtitleFormComparer(Columns.Language, _sortOrderParam);
            lvSubtitles.Sort();

            SetTitle(Translator.Translate("TXT_SUBTITLEDOWNLOADNOTIFY", count, movieName));
        }
Example #20
0
 public ImdbBrowserWorker(SubtitleLanguage subtitleLang)
 {
     _subtitleLang = subtitleLang;
     _imdbRepository = new ImdbMovieRepository();
 }
 public List<ISubtitle> GetLastSubtitles(string urlSerie, int number = 100, SubtitleLanguage type = SubtitleLanguage.VOVF)
 {
     IShow show = ShowFactory.CreateShow();
     show.Url = urlSerie;
     return show.GetLastSubtitles(number, type);
 }
Example #22
0
 public TorrentWorkerFacade(SubtitleLanguage subtitleLang, CancellationToken cancellationToken)
 {
     _cancellationToken = cancellationToken;
     _imdbWorker = new ImdbBrowserWorker(subtitleLang);
     _torrentWorker = new TorrentBrowserWorker();
 }
 public List<ISubtitle> GetSubtitles(string urlSerie, int season, SubtitleLanguage type = SubtitleLanguage.VOVF)
 {
     ISeason s = SeasonFactory.CreateSeason();
     s.UrlShow = urlSerie;
     s.Number = season;
     return s.GetSubtitles(type);
 }