Blogengine.net and Podcasting

 

I have recently been working hard to launch a new Podcast dedicated to the community, and in that spirit I wanted to use a community built blog to publish my new show.  I choose Blogengine.net because it supported enclosures in the RSS feed out of the box. One of the other really cool features I found was the ability to supply an alternate feed URL which allowed me to point new subscribers to my FeedBurner URL http://feeds.feedburner.com/UserGroupRadio.

This post is going to go over what I did to get it working the way I wanted:

The Requirements

  • Have only blog post that are in the Podcast category be in the RSS Feed for the show
  • Create post that had the mp3 file associated with it but not visible on the post.  We want everyone to subscribe.

The Solution

Getting the mp3 file to show in the RSS feed

It took me a few tries and a few forums post to figure out how to get the mp3 file to show up in the RSS feed.  It seems straight forward, use the file upload function when creating a new entry right?  Well, that didn’t work.

It created a URL that looked like this:

<a href="/file.axd?file=myfile.mp3">myfile.mp3 (70.00 bytes)</a>

After downloading and looking at the Blogengine.net source code I found out that  it actually parse all anchor tags with the following regular expression ‘<a href=((.|\n)*?)>((.|\n)*?)</a>’.  For some reason the auto generated URL from the file upload didn’t match.

So, I put in a complete anchor tag like so.

<a href=”myfile.mp3”>myfile.mp3 (70.00 bytes)</a>

And that worked great.  Sure, would be nice if that file upload had worked but that’s ok.  I really want to host my .mp3 files on my LibSyn account anyway, so that works out fine.

Setting up the RSS Feed

I like using FeedBurner for my feeds, it allows me to move my site and not force everyone to have to re-subscribe.  I also like to use a sing category so I can control what is in the feed versus what is available on the site. Blogengine provides a unique feed for each category, the id is a GUID so the feed for a category looks like this http://mysite.com/syndication.axd?category=7f1c7a73-7290-4637-83f0-804b8499a5345 (This is not a real URL).  Plugging that into FeedBurner allows me to use http://feeds.feedburner.com/UserGroupRadio to point to the category but the subscribers just use the FeedBurner URL.  FeedBurner also allows me to plug-in all the iTunes required tags without having to modify the Blogengine source.

Hiding the link in the post

Once I got the file showing in the RSS feed I wanted to make it so that you couldn’t see it in the actual post.  This may be a little overkill for some but I have learned from other shows I have done if I really want to know how many people are listening to the show I want them to subscribe.  I realize this might push some listeners away but it is a chance I am willing to take to get some accurate metrics.  And besides most of the listeners will be pretty tech savvy and will probably not have an issue.

So to hide the file form the post wasn’t too hard all you really had to do was remove the text between > and </a>.  My new URL looked like this:

<a href="/shows/UGR-00000.mp3"></a>

This solution was not exactly as smooth as I had hoped for but, still I was able get my show up and running without adding any extensions or having to modify the core code.

Thanks Blogengine.net for helping me get my show off the ground!

User Group Radio is ON THE AIR!!!

Over the last several years I have been involved with the developer community that has been growing in Northwest Arkansas.  After attending a Community Leadership Summit in Dallas, TX hosting by Caleb Jenkins I realized that many user group leaders struggle with the same problems, after looking around I realized that there wasn't really any resources around to help us. 

So I decided to start a podcast dedicated to the ones that keep user groups and technical communities going.  Hopefully through open dialog and sharing we can help make it easier to keep them running and maybe even take them to the next level. The new podcast called User Group Radio, as you might have guessed, and you can find out more about it at http://usergroupradio.com.

If you are passionate about community, have a story to tell, or have a question please email it to show  at usergroupradio dot com. In our first full episode I will be talking to Michael Paladino about his experience launching the Ft. Smith .NET User Group earlier this year.  Look for this episode to be released the first week of October.

4th Annual Podcast Awards: The People’s Choice

The Fourth annual Podcast Awards will recognize the best podcasters in the world by allowing the people (Listeners and Podcasters) to nominate, and then vote for their favorite podcast.

This will culminate with awards and prizes being awarded during the 2008 Online Awards ceremony!.

The nomination submissions start Sept 15, 2008 followed by voting in early October the site will see over 300,000 hits per day based upon 2007 levels.

If you have a favorite podcast and would like to give them some props then head on over to http://podcastawards.com and nominate them for a People’s Choice award.  Even if they don’t win I am sure they would appreciate the nomination.

You only get to submit the form one time, so be sure to fill in all the nominations you would like to make.  Also, do not submit the same show for more than one category, unless it is for "People's Choice" or "Best Produced" and one other category.

There are several great technology podcast out there and let’s make sure they are represented well.

JetBrains releases ReSharper v4.1

If you are a ReSharper fan like I am you need to know that v4.1 has just be released.  This version has a huge list of improvements, the main one are support for VS 2008 SP1, Better ASP.NET support, Performance improvements, and a ton of stability improvements and bug-fixes.  Read the 4.1 release notes to see all the goodness in this release. If you are new to ReSharper check out the feature map to see what you are missing.

Generate your own RSS feed with WCF: Syndication

On a recent project I needed to expose some data via an RSS feed.  I came across Derik Whittaker’s blog post Generate your own RSS feed with Argotic.

Argotic Syndication Framework is a Microsoft .NET class library framework that enables developers to easily consume and/or generate syndicated content from within their own applications.  The Argotic Syndication Framework is very powerful and easy to use.

I didn’t go with the Argotic Syndication Framework for the project because I didn’t want to have yet another assembly in my project, maybe a lame reason but I found the solution I needed already existed in the .NET Framework with WCF: Syndication.  WCF: Syndication is a set of classes available in the .NET Framework that enables the creation and consumption of RSS feed in RSS and ATOM.

I thought it would be a good exercise for me to take Derik’s original article and show how you would accomplish the same thing using WCF: Syndication, so here goes.

In this post we will review the following steps needed to add a feed to your site. image

  1. Creating the xml (rss feed) document for publication
  2. Creating an access point for the feed
  3. Adding the feed to your site 

Creating the xml (rss feed) document for publication

Using the Syndication objects available in the .NET Framework is pretty easy.  The first thing we need to do is add a reference to the assembly that holds the classes we need to add a reference to the System.ServiceModel.Web.dll.

Once we have the reference to the assembly all we have to do is add a using statement and away we go.

 1: public SyndicationFeed GenerateRssFeed()
 2: {
 3:     var items = RssRepository.GetRssItems();
 4:     var syndicationItems = new List<SyndicationItem>();
 5:  
 6:     var feed = new SyndicationFeed("Main RSS Feed for site", "Title", null);
 7:  
 8:     foreach (var rssItem in items)
 9:     {
 10:         var newItem = new SyndicationItem
 11:                           {
 12:                               Title = new TextSyndicationContent(rssItem.Title),
 13:                               Content = new TextSyndicationContent(rssItem.Content),
 14:                               Id = Guid.NewGuid().ToString()
 15:                           };
 16:         
 17:         newItem.Links.Add(new SyndicationLink(rssItem.Link));
 18:         newItem.Authors.Add(new SyndicationPerson("author@example.com", "Author Name", "http://example.com"));
 19:         
 20:         // Add the new syndication item to the generic list
 21:         syndicationItems.Add(newItem);
 22:     }
 23:  
 24:     // add the SyndicationItems to the Syndication Items
 25:     feed.Items = syndicationItems;
 26:  
 27:     // Return the Syndication feed
 28:     return feed;
 29: }

 

Creating an access point for the feed

Following along with the original post we now need to create an access point for users to be able to consume the feed.  Instead of using a static .xml document to expose the content lets look at how we can dynamically generate the feed.  The simplest way is to create an .aspx page and change the content type to “text/xml” and place the following code in the Page_Load event.

Another good idea is to add the OutputCache to the page.

 1: // Put this code here in your html part of the page. 
 2: // This will cache the output for a given number of seconds 
 3: <%@ OutputCache Duration="600" VaryByParam="none" %> 

 

Adding the feed to your site

In order to let the world know you have a feed, you need to expose it in your html documents.  One way to accomplish this is to add it to you master page, this will make it available on every page of the site.

After you have added the reference to your html page you should see the RSS feed icon on your URL bar in your browser.

 1: <link title="[Your title here]" 
 2:         href="http://www.yourdomain.com/[rssfilehere]" 
 3:         type="application/rss+xml"
 4:         rel="alternate">

 

Conclusion

First I would like to thank  Derik for his easy to follow post on using the Argotic Syndication Framework and I hope that you can also see how easy it is to also create Syndication feed using the new classes made available in WCF.

Download the full source SyndicationVsArgotic.zip (27.26 kb).

Calendar

<<  March 2024  >>
MonTueWedThuFriSatSun
26272829123
45678910
11121314151617
18192021222324
25262728293031
1234567

View posts in large calendar

Widget Category list not found.

Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))X

Tag cloud

    Widget Month List not found.

    Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))X

    Widget AuthorList not found.

    Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))X

    Widget TextBox not found.

    Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))X