Ejemplo n.º 1
0
        public RankingList(RankingContract contract)
        {
            ParamIs.NotNull(() => contract);

            CreateDate = DateTime.Now;
            Description = contract.Description;
            Name = contract.Name;
            NicoId = contract.NicoId;
            WVRId = contract.WVRId;
        }
Ejemplo n.º 2
0
		public RankingContract GetSongs(string url, bool parseAll) {

			if (string.IsNullOrEmpty(url))
				throw new InvalidFeedException("Feed URL cannot be empty");

			if (!url.Contains("rss="))
				url += "?rss=2.0";

			RssFeed feed;
			
			try {
				feed = RssFeed.Read(url);
			} catch (UriFormatException x) {
				throw new InvalidFeedException("Unable to parse URL", x);
			} catch (WebException x) {
				throw new InvalidFeedException("Unable to parse feed", x);				
			}

			if (feed.Exceptions.LastException != null) {
				throw new InvalidFeedException("Unable to parse feed", feed.Exceptions.LastException);
			}

			var result = new RankingContract();
			var channel = feed.Channels[0];
			result.Name = channel.Title;
			var wvrIdMatch = wvrIdRegex.Match(result.Name);

			if (wvrIdMatch.Success)
				result.WVRId = int.Parse(wvrIdMatch.Groups[1].Value);

			var songs = new List<SongInRankingContract>();
			var order = 1;

			foreach (var item in channel.Items.Cast<RssItem>()) {

				var node = HtmlNode.CreateNode(item.Description);

				if (parseAll || (node.InnerText.Any() && char.IsDigit(node.InnerText, 0))) {

					var nicoId = VideoService.NicoNicoDouga.GetIdByUrl(item.Link.ToString());
					songs.Add(new SongInRankingContract { NicoId = nicoId, SortIndex = order, Name = item.Title, Url = item.Link.ToString() });
					++order;

				}

			}

			result.Songs = songs.ToArray();
			return result;

		}
Ejemplo n.º 3
0
        public void CreateWVRPoll(RankingContract contract)
        {
            HandleTransaction(session => {

                var poll = new RankingList(contract);

                foreach (var songContract in contract.Songs) {

                    var c = songContract;
                    var song = session.Query<Song>().FirstOrDefault(s => s.NicoId == c.NicoId);

                    if (song == null) {
                        song = new Song(songContract);
                        session.Save(song);
                    }

                    poll.AddSong(song, songContract.SortIndex);
                    session.Save(poll);

                }
            });
        }
Ejemplo n.º 4
0
        public RankingContract GetSongs(string url)
        {
            var feed = RssFeed.Read(url);

            if (feed.Exceptions.LastException != null) {
                throw new InvalidFeedException("Unable to parse feed", feed.Exceptions.LastException);
            }

            var result = new RankingContract();
            var channel = feed.Channels[0];
            result.Name = channel.Title;
            var wvrIdMatch = wvrIdRegex.Match(result.Name);

            if (wvrIdMatch.Success)
                result.WVRId = int.Parse(wvrIdMatch.Groups[1].Value);

            var songs = new List<SongInRankingContract>();
            var order = 1;

            foreach (var item in channel.Items.Cast<RssItem>()) {

                var node = HtmlNode.CreateNode(item.Description);

                if (char.IsDigit(node.InnerText, 0)) {

                    var nicoId = VideoService.NicoNicoDouga.GetIdByUrl(item.Link.ToString());
                    songs.Add(new SongInRankingContract { NicoId = nicoId, SortIndex = order, Name = item.Title, Url = item.Link.ToString() });
                    ++order;

                }

            }

            result.Songs = songs.ToArray();
            return result;
        }