Created
January 22, 2012 23:55
-
-
Save kelan/1659457 to your computer and use it in GitHub Desktop.
Revisions
-
kelan revised this gist
Jan 22, 2012 . 1 changed file with 3 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,5 +1,8 @@ #!/usr/bin/env ruby -wKU # # by Kelan Champagne # http://yeahrightkeller.com # # A script to generate a personal podcast feed, hosted on Dropbox # # Inspired by http://hints.macworld.com/article.php?story=20100421153627718 -
kelan created this gist
Jan 22, 2012 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,76 @@ #!/usr/bin/env ruby -wKU # # A script to generate a personal podcast feed, hosted on Dropbox # # Inspired by http://hints.macworld.com/article.php?story=20100421153627718 # # Simply put this, and some .mp3 or .m4a files in a sub-dir under your Dropbox # Public folder, update the config values below, and run the script. To get # the public_url_base value, you can right click on a file in that folder # in Finder, then go to Dropbox > Copy Public Link, and then remove the # filename. # # Notes: # * You'll need to re-run it after adding new files to the dir, or you can # set up Folder Actions as suggested by the above hint. # * This script uses `mdls` to get the title and summary of the podcast # from the Spotlight metadata, which requires it to be run on a Mac. But, # the rest of the script should be cross-platform compatible. require 'date' # Config values podcast_title = "My personal podcast" podcast_description = "My personal podcast description" public_url_base = "<put the public url to your dropbox folder here>" # Generated values date_format = '%a, %d %b %Y %H:%M:%S %z' podcast_pub_date = DateTime.now.strftime(date_format) # Build the items items_content = "" Dir.entries('.').each do |file| next if file =~ /^\./ # ignore invisible files next unless file =~ /\.(mp3|m4a)$/ # only use audio files puts "adding file: #{file}" item_size_in_bytes = File.size(file).to_s item_pub_date = File.mtime(file).strftime(date_format) item_title = `mdls --name kMDItemTitle #{file}`.sub(/^.*? = "/, '').sub(/"$/, '').chomp item_subtitle = `mdls --name kMDItemComment #{file}`.sub(/^.*? = "/, '').sub(/"$/, '').chomp item_summary = item_subtitle item_url = "#{public_url_base}/#{file}" item_content = <<-HTML <item> <title>#{item_title}</title> <itunes:subtitle>#{item_subtitle}</itunes:subtitle> <itunes:summary>#{item_summary}</itunes:summary> <enclosure url="#{item_url}" length="#{item_size_in_bytes}" type="audio/mpeg" /> <pubDate>#{item_pub_date}</pubDate> </item> HTML items_content << item_content end # Build the whole file content = <<-HTML <?xml version="1.0" encoding="ISO-8859-1"?> <rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"> <channel> <title>#{podcast_title}</title> <description>#{podcast_description}</description> <pubDate>#{podcast_pub_date}</pubDate> #{items_content} </channel> </rss> HTML # write it out output_file = File.new("podcast.rss", 'w') output_file.write(content) output_file.close