コード例 #1
0
        private void GetMixesFromMP3URLSource(string Mp3URLSource, string ShowName, string Date, DateTime RealDate, List <Mix> UpdatedMixes)
        {
            while (true)
            {
                if (!Mp3URLSource.Contains("data-source=\""))
                {
                    break;
                }

                try
                {
                    Mp3URLSource = Mp3URLSource.Substring(HTMLParserUtil.GetPositionOfStringInHTMLSource("data-source=\"", Mp3URLSource, false));
                    string MP3URL = HTMLParserUtil.GetContentAndSubstringInput("data-source=\"", "\">", Mp3URLSource, out Mp3URLSource, "", false);

                    if (!MP3URL.StartsWith("http:"))
                    {
                        MP3URL = "http:" + MP3URL;
                    }

                    string StartTime = HTMLParserUtil.GetContentAndSubstringInput("\">", "</span>", Mp3URLSource, out Mp3URLSource);

                    var MatchingMix = GetItems <Mix>().Where(m => m.MP3URL.Trim() == MP3URL.Trim()).FirstOrDefault();

                    if (MatchingMix != null)
                    {
                        if (MatchingMix.Old)
                        {
                            MatchingMix.Old = false;

                            lock (MixListLocker)
                            {
                                UpdatedMixes.Add(MatchingMix);
                            }
                        }
                    }
                    else
                    {
                        Mix CurrentMix = new Mix()
                        {
                            StartTime = StartTime, Date = Date, RealDate = RealDate, ShowName = ShowName, MP3URL = MP3URL, TimeInserted = DateTime.Now
                        };

                        lock (MixListLocker)
                        {
                            UpdatedMixes.Add(CurrentMix);
                        }
                    }
                }
                catch
                {
                    break;
                }
            }
        }
コード例 #2
0
        private async Task GetMixesFromInternet()
        {
            List <Mix>  UpdatedMixes = new List <Mix>();
            List <Task> URLTasks     = new List <Task>();
            string      Source       = await GetMixPageSource();

            if (Source.Contains("<div class=\"carousel-inner\">"))
            {
                Source = Source.Substring(HTMLParserUtil.GetPositionOfStringInHTMLSource("<div class=\"carousel-inner\">", Source, false));
            }

            while (true)
            {
                if (!Source.Contains("class=\"time\">"))
                {
                    break;
                }

                try
                {
                    Source = Source.Substring(HTMLParserUtil.GetPositionOfStringInHTMLSource("class=\"time\">", Source, false));
                    string Date     = HTMLParserUtil.GetContentAndSubstringInput("<br />", "</td>", Source, out Source).Trim();
                    string ShowName = HTMLParserUtil.GetContentAndSubstringInput("class=\"program\">", "</td>", Source, out Source).Trim();

                    if (!Whitelist.Contains(ShowName))
                    {
                        if (!Source.Contains("<table"))
                        {
                            break;
                        }

                        Source = Source.Substring(HTMLParserUtil.GetPositionOfStringInHTMLSource("<table style=\"width: 100%;\">", Source, false));
                        continue;
                    }

                    DateTime ConvertedDateTime = ParseDate(Date);

                    string Mp3URLSource = HTMLParserUtil.GetContentAndSubstringInput("class=\"uitzending\">", " </table>", Source, out Source);

                    URLTasks.Add(Task.Run(() => GetMixesFromMP3URLSource(Mp3URLSource, ShowName, Date, ConvertedDateTime, UpdatedMixes)));
                }
                catch
                {
                    break;
                }
            }

            Task.WaitAll(URLTasks.ToArray());

            SaveItems(UpdatedMixes);
        }