protected void Page_Load(object sender, EventArgs e) { DateTime now = DateTime.Now; MediaEntries entries = (MediaEntries)Cache.Get(cacheKey); if (entries == null) { entries = MediaEntries.FromBlogKeyword("Piratpartiet", now.AddDays(-7)); Cache.Insert(cacheKey, entries, null, DateTime.UtcNow.AddMinutes(5), System.Web.Caching.Cache.NoSlidingExpiration); // five minute cache is plenty to prevent db F5 attacks } Response.ContentType = "text/xml"; XmlWriter xml = new XmlTextWriter(Response.Output); RssWriter rss = new RssWriter(xml); rss.WriteHeader("Bloggat om Piratpartiet", "http://www.piratpartiet.se", "Bloggposter som nämner Piratpartiet", null); foreach (MediaEntry entry in entries) { string title = entry.Title; if (title.Length > 30) { title = title.Substring(0, 27) + "..."; } rss.WriteItem(title, string.Empty, new Uri(entry.Url), entry.DateTime); } rss.Close(); xml.Close(); }
public static void Run() { // Get keywords. Read Frisim. Parse. Store. string[] keywords = MediaEntries.GetOldMediaKeywords(); foreach (string keyword in keywords) { // string rssUrl = String.Format("http://sesam.se/search/?c=m&q={0}&&output=rss", keyword.ToLower()); string rssUrl = String.Format("http://www.frisim.com/rss/?q={0}&k=nyheter", keyword.ToLower()); // Read the RSS URL into memory, then feed RssReader from a MemoryStream HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(rssUrl); request.UserAgent = "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5"; HttpWebResponse resp = (HttpWebResponse)request.GetResponse(); RssReader reader = new RssReader(resp.GetResponseStream()); try { Rss rss = reader.Read(); foreach (RssChannelItem item in rss.Channel.Items) { // We want the title, media name, link and pubdate. string url = item.Link; DateTime dateTime = item.PubDate; string title = item.Title; string mediaName = item.Categories[0].Name; MediaEntry.CreateFromKeyword(keyword, mediaName, false, url, title, dateTime); } } catch (Exception e) { throw new ReaderException("feed:" + rssUrl + "Status=" + resp.StatusCode, e); } finally { request.GetResponse().GetResponseStream().Close(); } } }
SeriesCollection GetMediaData(string keyword, string color) { MediaEntries entries = MediaEntries.FromBlogKeyword(keyword, new DateTime(2008, 7, 14)); entries.Reverse(); SeriesCollection collection = new SeriesCollection(); DateTime dateIterator = new DateTime(2008, 7, 14); Series series = new Series(); series.Name = ""; DateTime today = DateTime.Now.Date; int entryIndex = 0; int currentCount = 0; while (dateIterator < today) { DateTime nextDate = dateIterator.AddDays(7); while (entryIndex < entries.Count && entries[entryIndex].DateTime < nextDate) { currentCount++; entryIndex++; } Element newElement = new Element(); newElement.XDateTime = dateIterator; newElement.YValue = currentCount; series.Elements.Add(newElement); dateIterator = nextDate; currentCount = 0; } collection.Add(series); collection[0].DefaultElement.Color = Color.Green; // (Color)Enum.Parse(typeof(Color), color); return(collection); }
public static void Run() { // Get keywords. Read Knuff. Parse. Store. string[] keywords = MediaEntries.GetBlogKeywords(); foreach (string keyword in keywords) { string rssUrl = "http://knuff.se/rss/q/" + keyword; // Read the RSS URL into memory, then feed RssReader from a MemoryStream HttpWebRequest request = (HttpWebRequest)WebRequest.Create(rssUrl); request.UserAgent = "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5"; HttpWebResponse resp = (HttpWebResponse)request.GetResponse(); RssReader reader = new RssReader(resp.GetResponseStream()); try { Rss rss = reader.Read(); foreach (RssChannelItem item in rss.Channel.Items) { // We want the title, link and pubdate. string url = item.Link; DateTime dateTime = item.PubDate; int dividerIndex = item.Title.LastIndexOf('('); if (item.Title.EndsWith("))")) { dividerIndex = item.Title.Substring(0, item.Title.Length - 7).LastIndexOf('('); } string title = item.Title.Substring(0, dividerIndex).Trim(); string blogName = item.Title.Substring(dividerIndex + 1, item.Title.Length - dividerIndex - 2); bool newEntry = MediaEntry.CreateFromKeyword(keyword, blogName, true, url, title, dateTime); if (newEntry) { try { PingCreeper(url); } catch (Exception) { // Ignore exceptions here, move on to the next entry } } } } catch (Exception e) { throw new ReaderException("feed:" + rssUrl + ", Status=" + resp.StatusCode, e); } finally { request.GetResponse().GetResponseStream().Close(); } } }
SeriesCollection GetMediaData(bool blogs) { string[] seriesNames = { "Piratpartiet", "Moderaterna", "Folkpartiet", "Centern", "Kristdemokraterna", "Socialdemokraterna", "Milj" + '\xF6' + "partiet", "V" + '\xE4' + "nsterpartiet", "Sverigedemokraterna" }; Color[] seriesColors = { Color.FromArgb(0x66, 0, 0x87), Color.LightBlue, Color.Blue, Color.LawnGreen, Color.DarkBlue, Color.Salmon, Color.Green, Color.Red, Color.DarkGoldenrod }; int seriesCount = seriesNames.Length; // TODO: ADD CACHE HERE MediaEntries entries = MediaEntries.FromKeywordsSimplified(seriesNames); // Build the keyword-id-to-series-index table Dictionary <int, int> keywordSeries = new Dictionary <int, int>(); Dictionary <int, bool> mediaIdIsBlog = MediaEntries.GetMediaTypeTable(); int index = 0; foreach (string keyword in seriesNames) { // Suboptimal, but wtf keywordSeries [MediaEntries.GetKeywordId(keyword)] = index; index++; } SeriesCollection collection = new SeriesCollection(); DateTime dateIterator = new DateTime(2008, 7, 21); DateTime today = DateTime.Now.Date; int entryIndex = 0; Series[] series = new Series[seriesCount]; int[] count = new int[seriesCount]; while (entries[entryIndex].DateTime < dateIterator) { entryIndex++; } while (dateIterator.AddDays(7) < today) { if (entryIndex >= entries.Count) { break; } DateTime nextDate = dateIterator.AddDays(7); count = new int[seriesCount]; while (entryIndex < entries.Count && entries[entryIndex].DateTime < nextDate) { int seriesIndex = keywordSeries [entries [entryIndex].KeywordId]; if (mediaIdIsBlog[Int32.Parse(entries[entryIndex].MediaName)] == blogs) { count[seriesIndex]++; } entryIndex++; } for (int seriesIndex = 0; seriesIndex < seriesCount; seriesIndex++) { if (series[seriesIndex] == null) { series[seriesIndex] = new Series(); // this init should probably be earlier and not conditional... } Element newElement = new Element(); newElement.XDateTime = dateIterator; newElement.YValue = count[seriesIndex]; series[seriesIndex].Elements.Add(newElement); } entryIndex++; dateIterator = nextDate; } for (int seriesIndex = 0; seriesIndex < seriesCount; seriesIndex++) { series[seriesIndex].Type = SeriesType.Spline; series[seriesIndex].Line.Width = 2; series[seriesIndex].DefaultElement.Color = seriesColors[seriesIndex]; series[seriesIndex].DefaultElement.Marker = new ElementMarker(ElementMarkerType.None); series[seriesIndex].Name = seriesNames[seriesIndex]; collection.Add(series[seriesIndex]); } collection[0].Line.Width = 7; return(collection); }
protected void Page_Load(object sender, EventArgs e) { string blogResult = string.Empty; string oldMediaResult = string.Empty; List <BlogEntry> blogEntries = new List <BlogEntry>(); Dictionary <string, string> blogNameReplace = new Dictionary <string, string>(); blogNameReplace["Erik Laakso | På Uppstuds"] = "Erik Laakso"; blogNameReplace["opassande"] = "Opassande"; blogNameReplace["Tommy k Johanssons blogg om datorer & Internet"] = "Tommy K Johansson"; blogNameReplace["MinaModerataKarameller..."] = "Mary X Jensen"; blogNameReplace["d y s l e s b i s k ."] = "Dyslesbisk"; blogNameReplace["syrrans granne"] = "Syrrans Granne"; blogNameReplace["SURGUBBEN"] = "Surgubben"; blogNameReplace["Henrik-Alexandersson.se"] = "Henrik Alexandersson"; blogNameReplace["BIOLOGY & POLITICS"] = "Biology & Politics"; blogNameReplace["Blogge Bloggelito - regeringsblogg"] = "Blogge Bloggelito"; blogNameReplace["drottningsylt"] = "Drottningsylt"; blogNameReplace["RADIKALEN"] = "Radikalen"; blogNameReplace["Idéer, tankar och reflektionerHeit…"] = "Idéer Tankar Reflektioner"; blogNameReplace["stationsvakt"] = "Stationsvakt"; blogNameReplace["Framtidstanken - Accelererande för…"] = "Framtidstanken"; blogNameReplace["CONJOINER"] = "Conjoiner"; blogNameReplace["..:: josephzohn | gås blogger ::.."] = "Josephzohn"; blogNameReplace["S I N N E R"] = "Sinner"; blogNameReplace["mp) blog från Staffanstorp"] = "Olle (mp) från Staffanstorp"; blogNameReplace["Oväsentligheter ... ?? ???"] = "Oväsentligheter"; blogNameReplace["SJÖLANDER"] = "Sjölander"; blogNameReplace["UPPSALAHANSEN - en og en halv nordmann i sverige"] = "Uppsala-Hansen"; blogNameReplace["se|com|org|nu)"] = "Lex Orwell"; blogNameReplace["s) blogg"] = "John Johansson (s)"; blogNameReplace["m) 3.0"] = "Edvin Ala(m) 3.0"; blogNameReplace["PLIKTEN FRAMFÖR ALLT"] = "Plikten framför allt"; blogNameReplace["*Café Liberal"] = "Café Liberal"; blogNameReplace["Disruptive - En blogg om entreprenörskap, riskkapital och webb 2.0"] = "Disruptive"; blogNameReplace["C)KER"] = "Törnqvist tänker och tycker"; blogNameReplace["serier mot FRA)"] = "Inte så PK (Serier mot FRA)"; blogNameReplace["BÄSTIGAST.SNYGGAST.SNÄLLAST.ÖDMJUKAST"] = "Johanna Wiström"; blogNameReplace["LOKE - KULTUR & POLITIK"] = "Loke kultur & politik"; blogNameReplace["Webnewspaper)"] = "The Awkward Swedeblog"; blogNameReplace["SOCIALIST OCH BAJARE- Livets passion"] = "Nicke Grozdanovski"; blogNameReplace["MÅRTENSSON"] = "Mårtensson"; blogNameReplace["FRADGA"] = "Fradga"; blogNameReplace["UD/RK Samhälls Debatt"] = "UD/RK Samhällsdebatt"; blogNameReplace["GRETAS SVAMMEL"] = "Gretas Svammel"; blogNameReplace["ISAK ENGQVIST"] = "Isak Engqvist"; blogNameReplace["Smålandsposten - Blogg - Marcus Svensson"] = "Marcus Svensson"; blogNameReplace["f.d. Patrik i Politiken)"] = "Mittenradikalen"; blogNameReplace["Rick Falkvinge (pp)"] = "Rick Falkvinge"; blogNameReplace["Christian Engström (pp)"] = "Christian Engström"; blogNameReplace["Basic personligt"] = "Daniel Brahneborg"; blogNameReplace["yo mstuff!"] = "Marcin de Kaminski"; blogNameReplace["EXORCISTEN"] = "Tommy Funebo"; blogNameReplace["www.webhackande.se"] = "Lars Holmqvist"; blogNameReplace["satmaran"] = "Satmaran"; blogNameReplace["PiratJanne"] = "Jan Lindgren"; blogNameReplace["EXORCISTEN"] = "Tommy Funebo"; blogNameReplace["Intensifier"] = "Christopher Kullenberg"; blogNameReplace["Anders Widén Författare"] = "Anders Widén"; blogNameReplace["ProjektPåRiktigt"] = "Urban Cat"; blogNameReplace["Davids åsikter"] = "David Wienehall"; blogNameReplace["Minimaliteter"] = "Mikael Nilsson"; blogNameReplace["scaber_nestor"] = "Scaber Nestor"; blogNameReplace["andra sidan"] = "Andra Sidan"; blogNameReplace["Klibbnisses Blogg"] = "Klibbnisse"; blogNameReplace["V, fildelning & upphovsrätt"] = "Mikael von Knorring"; blogNameReplace["SVT Opinion - redaktionsblogg"] = "SVT Opinion"; blogNameReplace["Copyriot"] = "Rasmus Fleischer"; blogNameReplace["Motpol"] = "Hans Engnell"; blogNameReplace["Dynamic Man"] = "Mattias Swing"; blogNameReplace["insane psycho clowns"] = "Insane Clowns"; blogNameReplace["Samtidigt i Uppsala"] = "Mattias Bjärnemalm"; blogNameReplace["Mattias tycker och tänker"] = "Mattias"; blogNameReplace["Josef säger..."] = "Josef"; blogNameReplace["Under den svarta natthimlen"] = "Peter Soilander"; blogNameReplace["Farmorgun i Norrtälje"] = "Farmor Gun"; blogNameReplace["lindahls blogg"] = "Johan Lindahl"; blogNameReplace["kamferdroppar"] = "Charlotte Wiberg"; blogNameReplace["Kulturbloggen"] = "Rose-Mari Södergren"; blogNameReplace["Ett Otygs funderingar och betraktelser"] = "Martin Otyg"; blogNameReplace["Jinges web och fotoblogg"] = "Jinge"; blogNameReplace["Högerkonspiration"] = "Wilhelm Svenselius"; blogNameReplace["piratbyran.org"] = "Piratbyrån"; blogNameReplace["ANGIE ROGER"] = "Angie Roger"; blogNameReplace["Lasses blogg"] = "Lasse Strömberg"; blogNameReplace["annarkia"] = "Annarkia"; blogNameReplace["Gontes förvirrade tankar i bloggvärlden"] = "Jonatan Kindh"; blogNameReplace["Rejås Blog"] = "Marcus Rejås"; Dictionary <string, double> blogWeight = new Dictionary <string, double>(); blogWeight["rickfalkvinge.se"] = 3.0; blogWeight["opassande.se"] = 3.0; blogWeight["christianengstrom"] = 3.0; blogWeight["rosettasten"] = 3.0; blogWeight["projo"] = 2.0; blogWeight["basic70.wordpress.com"] = 2.0; blogWeight["scriptorium.se"] = 2.0; blogWeight["teflonminne.se"] = 2.0; blogWeight["piratjanne"] = 3.0; blogWeight["kurvigheter.blogspot"] = 2.0; blogWeight["piratbyran.org"] = 2.0; // tekniskt sett inte pp, men... blogWeight["ravennasblogg.blogspot.com"] = 3.0; blogWeight["webhackande.se"] = 3.0; blogWeight["jinge"] = 0.5; // störig blogWeight["klaric.se"] = 0.001; // sd blogWeight["patrikohlsson.wordpress.com"] = 0.001; // sd blogWeight["funebo"] = 0.001; // sd blogWeight["astudillo"] = 0.001; // idiot blogWeight["wb.blogg.se"] = 0.001; // idiot blogWeight["fotolasse"] = 0.001; // kd double highestWeight = 3.0; double maximumAgeDays = 7.0; MediaEntries blogEntriesOriginal = MediaEntries.FromBlogKeyword("Piratjägarlagen", DateTime.Now.AddDays(-maximumAgeDays * highestWeight)); blogEntriesOriginal.Add(MediaEntries.FromBlogKeyword("Antipiratlagen", DateTime.Now.AddDays(-maximumAgeDays * highestWeight))); blogEntriesOriginal.Add(MediaEntries.FromBlogKeyword("IPRED1", DateTime.Now.AddDays(-maximumAgeDays * highestWeight))); blogEntriesOriginal.Add(MediaEntries.FromBlogKeyword("sanktionsdirektivet", DateTime.Now.AddDays(-maximumAgeDays * highestWeight))); Dictionary <string, bool> dupeCheck = new Dictionary <string, bool>(); foreach (MediaEntry entry in blogEntriesOriginal) { BlogEntry blogEntry = new BlogEntry(); blogEntry.entry = entry; blogEntry.ageAdjusted = new TimeSpan((long)((DateTime.Now - entry.DateTime).Ticks / GetBlogWeight(blogWeight, entry.Url))); if (entry.Url.StartsWith("http://knuff.se/k/")) { UrlTranslations.Create(entry.Url); } else if (blogEntry.ageAdjusted.Days < maximumAgeDays) { if (blogNameReplace.ContainsKey(entry.MediaName)) { blogEntry.entry = MediaEntry.FromBasic(new Activizr.Basic.Types.BasicMediaEntry(blogEntry.entry.Id, blogEntry.entry.KeywordId, blogNameReplace[entry.MediaName], true, blogEntry.entry.Title, blogEntry.entry.Url, blogEntry.entry.DateTime)); } if (!dupeCheck.ContainsKey(entry.Url)) { blogEntries.Add(blogEntry); dupeCheck[entry.Url] = true; } } } blogEntries.Sort(CompareBlogEntries); Dictionary <string, int> lookupSources = new Dictionary <string, int>(); foreach (BlogEntry entry in blogEntries) { if (blogResult.Length > 0) { blogResult += ", "; } blogResult += String.Format("<a href=\"{0}\" title=\"{1}\">{2}</a>", entry.entry.Url, HttpUtility.HtmlEncode(entry.entry.Title), HttpUtility.HtmlEncode(entry.entry.MediaName)); if (lookupSources.ContainsKey(entry.entry.MediaName)) { lookupSources[entry.entry.MediaName]++; if (lookupSources[entry.entry.MediaName] == 2) { // blogResult += " igen"; } else { // blogResult += " #" + lookupSources[entry.entry.MediaName].ToString(); } } else { lookupSources[entry.entry.MediaName] = 1; } } this.literalBlogOutput.Text = blogResult; MediaEntries oldMediaEntries = MediaEntries.FromOldMediaKeyword("Piratjägarlagen", DateTime.Now.AddDays(-maximumAgeDays / 2)); oldMediaEntries.Add(MediaEntries.FromOldMediaKeyword("Antipiratlagen", DateTime.Now.AddDays(-maximumAgeDays / 2))); oldMediaEntries.Add(MediaEntries.FromOldMediaKeyword("IPRED1", DateTime.Now.AddDays(-maximumAgeDays / 2))); oldMediaEntries.Add(MediaEntries.FromOldMediaKeyword("sanktionsdirektivet", DateTime.Now.AddDays(-maximumAgeDays * highestWeight))); foreach (MediaEntry entry in oldMediaEntries) { if (!entry.Url.Contains(".se/")) { continue; } if (oldMediaResult.Length > 0) { oldMediaResult += ", "; } oldMediaResult += String.Format("<a href=\"{0}\">{1} ({2})</a>", entry.Url, HttpUtility.HtmlEncode(entry.Title.Replace("`", "'").Replace("´", "'")), HttpUtility.HtmlEncode(entry.MediaName)); } this.literalOldMediaOutput.Text = oldMediaResult; }
protected void Page_Load(object sender, EventArgs e) { string blogResult = string.Empty; string oldMediaResult = string.Empty; List <BlogEntry> blogEntries = new List <BlogEntry>(); Dictionary <string, string> blogNameReplace = new Dictionary <string, string>(); blogNameReplace["Erik Laakso | På Uppstuds"] = "Erik Laakso"; blogNameReplace["opassande"] = "Opassande"; blogNameReplace["Tommy k Johanssons blogg om datorer & Internet"] = "Tommy K Johansson"; blogNameReplace["MinaModerataKarameller..."] = "Mina Moderata Karameller"; blogNameReplace["d y s l e s b i s k ."] = "Dyslesbisk"; blogNameReplace["syrrans granne"] = "Syrrans Granne"; blogNameReplace["SURGUBBEN"] = "Surgubben"; blogNameReplace["Henrik-Alexandersson.se"] = "Hax"; blogNameReplace["BIOLOGY & POLITICS"] = "Biology & Politics"; blogNameReplace["Blogge Bloggelito - regeringsblogg"] = "Blogge Bloggelito"; blogNameReplace["drottningsylt"] = "Drottningsylt"; blogNameReplace["RADIKALEN"] = "Radikalen"; blogNameReplace["Idéer, tankar och reflektionerHeit…"] = "Idéer Tankar Reflektioner"; blogNameReplace["stationsvakt"] = "Stationsvakt"; blogNameReplace["Framtidstanken - Accelererande för…"] = "Framtidstanken"; blogNameReplace["CONJOINER"] = "Conjoiner"; blogNameReplace["..:: josephzohn | gås blogger ::.."] = "Josephzohn"; blogNameReplace["S I N N E R"] = "Sinner"; blogNameReplace["mp) blog från Staffanstorp"] = "Olle (mp) från Staffanstorp"; blogNameReplace["Oväsentligheter ... ?? ???"] = "Oväsentligheter"; blogNameReplace["SJÖLANDER"] = "Sjölander"; blogNameReplace["UPPSALAHANSEN - en og en halv nordmann i sverige"] = "Uppsala-Hansen"; blogNameReplace["se|com|org|nu)"] = "Lex Orwell"; blogNameReplace["s) blogg"] = "John Johansson (s)"; blogNameReplace["m) 3.0"] = "Edvin Ala(m) 3.0"; blogNameReplace["PLIKTEN FRAMFÖR ALLT"] = "Plikten framför allt"; blogNameReplace["*Café Liberal"] = "Café Liberal"; blogNameReplace["Disruptive - En blogg om entreprenörskap, riskkapital och webb 2.0"] = "Disruptive"; blogNameReplace["C)KER"] = "Törnqvist tänker och tycker"; blogNameReplace["serier mot FRA)"] = "Inte så PK (Serier mot FRA)"; blogNameReplace["BÄSTIGAST.SNYGGAST.SNÄLLAST.ÖDMJUKAST"] = "Johanna Wiström"; blogNameReplace["LOKE - KULTUR & POLITIK"] = "Loke kultur & politik"; blogNameReplace["Webnewspaper)"] = "The Awkward Swedeblog"; blogNameReplace["SOCIALIST OCH BAJARE- Livets passion"] = "Nicke Grozdanovski"; blogNameReplace["MÅRTENSSON"] = "Mårtensson"; blogNameReplace["FRADGA"] = "Fradga"; blogNameReplace["UD/RK Samhälls Debatt"] = "UD/RK Samhällsdebatt"; blogNameReplace["GRETAS SVAMMEL"] = "Gretas Svammel"; blogNameReplace["ISAK ENGQVIST"] = "Isak Engqvist"; blogNameReplace["Smålandsposten - Blogg - Marcus Svensson"] = "Marcus Svensson (Smålandsposten)"; blogNameReplace["f.d. Patrik i Politiken)"] = "Mittenradikalen"; Dictionary <string, double> blogWeight = new Dictionary <string, double>(); blogWeight["rickfalkvinge.se"] = 3.0; blogWeight["opassande.se"] = 3.0; blogWeight["christianengstrom"] = 3.0; blogWeight["rosettasten"] = 3.0; blogWeight["projo"] = 2.0; blogWeight["basic70.wordpress.com"] = 2.0; blogWeight["scriptorium.se"] = 2.0; blogWeight["teflonminne.se"] = 2.0; blogWeight["kurvigheter.blogspot"] = 2.0; blogWeight["ravennasblogg.blogspot.com"] = 3.0; blogWeight["webhackande.se"] = 3.0; blogWeight["jinge"] = 0.5; // störig blogWeight["klaric.se"] = 0.1; // sd blogWeight["patrikohlsson.wordpress.com"] = 0.1; // sd double highestWeight = 3.0; double maximumAgeDays = 3.0; MediaEntries blogEntriesOriginal = MediaEntries.FromBlogKeyword("FRA", DateTime.Now.AddDays(-maximumAgeDays * highestWeight)); Dictionary <string, bool> dupeCheck = new Dictionary <string, bool>(); foreach (MediaEntry entry in blogEntriesOriginal) { BlogEntry blogEntry = new BlogEntry(); blogEntry.entry = entry; blogEntry.ageAdjusted = new TimeSpan((long)((DateTime.Now - entry.DateTime).Ticks / GetBlogWeight(blogWeight, entry.Url))); if (entry.Url.StartsWith("http://knuff.se/k/")) { UrlTranslations.Create(entry.Url); } else if (blogEntry.ageAdjusted.Days < maximumAgeDays) { if (blogNameReplace.ContainsKey(entry.MediaName)) { blogEntry.entry = MediaEntry.FromBasic(new Activizr.Basic.Types.BasicMediaEntry(blogEntry.entry.Id, blogEntry.entry.KeywordId, blogNameReplace[entry.MediaName], true, blogEntry.entry.Title, blogEntry.entry.Url, blogEntry.entry.DateTime)); } if (!dupeCheck.ContainsKey(entry.Url)) { blogEntries.Add(blogEntry); dupeCheck[entry.Url] = true; } } } blogEntries.Sort(CompareBlogEntries); Dictionary <string, int> lookupSources = new Dictionary <string, int>(); foreach (BlogEntry entry in blogEntries) { if (blogResult.Length > 0) { blogResult += " | "; } blogResult += String.Format("<a href=\"{0}\" title=\"{1}\">{2}</a>", entry.entry.Url, HttpUtility.HtmlEncode(entry.entry.Title), HttpUtility.HtmlEncode(entry.entry.MediaName)); if (lookupSources.ContainsKey(entry.entry.MediaName)) { lookupSources[entry.entry.MediaName]++; if (lookupSources[entry.entry.MediaName] == 2) { blogResult += " igen"; } else { blogResult += " #" + lookupSources[entry.entry.MediaName].ToString(); } } else { lookupSources[entry.entry.MediaName] = 1; } } this.literalBlogOutput.Text = blogResult; MediaEntries oldMediaEntries = MediaEntries.FromOldMediaKeyword("FRA", DateTime.Now.AddDays(-maximumAgeDays / 2)); foreach (MediaEntry entry in oldMediaEntries) { if (!entry.Url.Contains(".se/")) { continue; } if (oldMediaResult.Length > 0) { oldMediaResult += " | "; } oldMediaResult += String.Format("<a href=\"{0}\">{1} ({2})</a>", entry.Url, HttpUtility.HtmlEncode(entry.Title.Replace("`", "'").Replace("´", "'")), HttpUtility.HtmlEncode(entry.MediaName)); } this.literalOldMediaOutput.Text = oldMediaResult; }