Example #1
0
        /// <summary>
        /// Returns the weekly album chart for this group in the given <see cref="Lastfm.Services.WeeklyChartTimeSpan"/>.
        /// </summary>
        /// <param name="span">
        /// A <see cref="WeeklyChartTimeSpan"/>
        /// </param>
        /// <returns>
        /// A <see cref="WeeklyAlbumChart"/>
        /// </returns>
        public WeeklyAlbumChart GetWeeklyAlbumChart(WeeklyChartTimeSpan span)
        {
            RequestParameters p = getParams();

            p["from"] = Utilities.DateTimeToUTCTimestamp(span.From).ToString();
            p["to"]   = Utilities.DateTimeToUTCTimestamp(span.To).ToString();

            XmlDocument doc = request("group.getWeeklyAlbumChart", p);

            XmlNode n = doc.GetElementsByTagName("weeklyalbumchart")[0];

            DateTime nfrom = Utilities.TimestampToDateTime(Int64.Parse(n.Attributes[1].InnerText), DateTimeKind.Utc);
            DateTime nto   = Utilities.TimestampToDateTime(Int64.Parse(n.Attributes[2].InnerText), DateTimeKind.Utc);

            WeeklyAlbumChart chart = new WeeklyAlbumChart(new WeeklyChartTimeSpan(nfrom, nto));

            foreach (XmlNode node in doc.GetElementsByTagName("album"))
            {
                int rank      = Int32.Parse(node.Attributes[0].InnerText);
                int playcount = Int32.Parse(extract(node, "playcount"));

                WeeklyAlbumChartItem item =
                    new WeeklyAlbumChartItem(new Album(extract(node, "artist"), extract(node, "name"), Session),
                                             rank, playcount, new WeeklyChartTimeSpan(nfrom, nto));

                chart.Add(item);
            }

            return(chart);
        }
Example #2
0
        /// <summary>
        /// Returns the latest weekly track chart.
        /// </summary>
        /// <returns>A <see cref="WeeklyTrackChart"/></returns>
        public WeeklyTrackChart GetWeeklyTrackChart()
        {
            XmlDocument doc = Request("user.getWeeklyTrackChart");

            XmlNode n = doc.GetElementsByTagName("weeklytrackchart")[0];

            var nfrom = Utilities.TimestampToDateTime(long.Parse(n.Attributes[1].InnerText), DateTimeKind.Utc);
            var nto   = Utilities.TimestampToDateTime(long.Parse(n.Attributes[2].InnerText), DateTimeKind.Utc);

            var chart = new WeeklyTrackChart(new WeeklyChartTimeSpan(nfrom, nto));

            foreach (XmlNode node in doc.GetElementsByTagName("track"))
            {
                var rank      = int.Parse(node.Attributes[0].InnerText);
                var playcount = int.Parse(Extract(node, "playcount"));

                var track    = new Track(Extract(node, "artist"), Extract(node, "name"), Session);
                var timeSpan = new WeeklyChartTimeSpan(nfrom, nto);
                var item     = new WeeklyTrackChartItem(track, rank, playcount, timeSpan);

                chart.Add(item);
            }

            return(chart);
        }
Example #3
0
        /// <summary>
        /// Returns a weekly album chart of a specified week.
        /// </summary>
        /// <param name="span">A <see cref="WeeklyChartTimeSpan"/></param>
        /// <returns>A <see cref="WeeklyAlbumChart"/></returns>
        public WeeklyAlbumChart GetWeeklyAlbumChart(WeeklyChartTimeSpan span)
        {
            var parameters = GetParams();

            parameters["from"] = Utilities.DateTimeToUTCTimestamp(span.From).ToString();
            parameters["to"]   = Utilities.DateTimeToUTCTimestamp(span.To).ToString();

            XmlDocument doc = Request("user.getWeeklyAlbumChart", parameters);

            XmlNode n = doc.GetElementsByTagName("weeklyalbumchart")[0];

            var nfrom = Utilities.TimestampToDateTime(long.Parse(n.Attributes[1].InnerText), DateTimeKind.Utc);
            var nto   = Utilities.TimestampToDateTime(long.Parse(n.Attributes[2].InnerText), DateTimeKind.Utc);

            var chart = new WeeklyAlbumChart(new WeeklyChartTimeSpan(nfrom, nto));

            foreach (XmlNode node in doc.GetElementsByTagName("album"))
            {
                var rank      = int.Parse(node.Attributes[0].InnerText);
                var playcount = int.Parse(Extract(node, "playcount"));

                var album    = new Album(Extract(node, "artist"), Extract(node, "name"), Session);
                var timeSpan = new WeeklyChartTimeSpan(nfrom, nto);
                var item     = new WeeklyAlbumChartItem(album, rank, playcount, timeSpan);

                chart.Add(item);
            }

            return(chart);
        }
 internal WeeklyAlbumChartItem(Album album, int rank, int playcount, WeeklyChartTimeSpan span)
     : base(rank, playcount, span)
 {
     Album = album;
 }
		internal WeeklyAlbumChartItem(Album album, int rank, int playcount, WeeklyChartTimeSpan span)
			:base(rank, playcount, span)
		{
			Album = album;
		}
Example #6
0
 internal WeeklyTrackChartItem(Track track, int rank, int playcount, WeeklyChartTimeSpan span)
     : base(rank, playcount, span)
 {
     Track = track;
 }
		internal WeeklyArtistChartItem(Artist artist, int rank, int playcount, WeeklyChartTimeSpan span)
			:base(rank, playcount, span)
		{
			Artist = artist;
		}
Example #8
0
 internal WeeklyArtistChartItem(Artist artist, int rank, int playcount, WeeklyChartTimeSpan span)
     : base(rank, playcount, span)
 {
     Artist = artist;
 }
Example #9
0
 public WeeklyTrackChart(WeeklyChartTimeSpan span)
     : base(span)
 {
 }
		internal WeeklyChartItem(int rank, int playcount, WeeklyChartTimeSpan span)
		{
			Rank = rank;
			Playcount = playcount;
			Span = span;
		}
Example #11
0
 internal WeeklyChart(WeeklyChartTimeSpan span)
 {
     Span = span;
 }
Example #12
0
 public WeeklyAlbumChart(WeeklyChartTimeSpan span)
     : base(span)
 {
 }
 public WeeklyArtistChart(WeeklyChartTimeSpan span)
     : base(span)
 {
 }
		internal WeeklyTrackChartItem(Track track, int rank, int playcount, WeeklyChartTimeSpan span)
			:base(rank, playcount, span)
		{
			Track = track;
		}
Example #15
0
 internal WeeklyChartItem(int rank, int playcount, WeeklyChartTimeSpan span)
 {
     Rank      = rank;
     Playcount = playcount;
     Span      = span;
 }