public
Last active

Download free Railscast video

  • Download Gist
railscasts.rb
Ruby
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
#!/usr/bin/ruby
require 'rss'
 
# Usage
# $ ./railscasts.rb http://railscasts.com/subscriptions/YOURRAILSCASTRSS/\/
# episodes.rss
# OR
# $ ./railscasts.rb
 
p 'Downloading rss index'
rss_url = ARGV.first ? ARGV.first : 'http://feeds.feedburner.com/railscasts'
 
rss_string = open(rss_url).read
rss = RSS::Parser.parse(rss_string, false)
videos_urls = rss.items.map { |it| it.enclosure.url }.reverse
 
videos_filenames = videos_urls.map { |url| url.split('/').last }
existing_filenames = Dir.glob('*.mov')
missing_filenames = videos_filenames - existing_filenames
p "Downloading #{missing_filenames.size} missing videos"
 
missing_videos_urls = videos_urls.select { |video_url|
missing_filenames.any? { |filename| video_url.match filename }
}
 
missing_videos_urls.each do |video_url|
filename = video_url.split('/').last
next if File.exists? filename
 
p filename
p %x(wget #{video_url} -O #{filename}.tmp )
p %x(mv #{filename}.tmp #{filename} )
end
 
p 'Finished synchronization'

http://media.railscasts.com/assets/episodes/videos/001-caching-with-instance-variables.mp4
http://media.railscasts.com/assets/episodes/videos/002-dynamic-find-by-methods.mp4
http://media.railscasts.com/assets/episodes/videos/003-find-through-association.mp4
http://media.railscasts.com/assets/episodes/videos/004-move-find-into-model.mp4
http://media.railscasts.com/assets/episodes/videos/005-using-with-scope.mp4
http://media.railscasts.com/assets/episodes/videos/006-shortcut-blocks-with-symbol-to-proc.mp4
http://media.railscasts.com/assets/episodes/videos/007-all-about-layouts.mp4
http://media.railscasts.com/assets/episodes/videos/008-layouts-and-content-for.mp4
http://media.railscasts.com/assets/episodes/videos/009-filtering-sensitive-logs.mp4
http://media.railscasts.com/assets/episodes/videos/010-refactoring-user-name-part-1.mp4
http://media.railscasts.com/assets/episodes/videos/011-refactoring-user-name-part-2.mp4
http://media.railscasts.com/assets/episodes/videos/012-refactoring-user-name-part-3.mp4
http://media.railscasts.com/assets/episodes/videos/013-dangers-of-model-in-session.mp4
http://media.railscasts.com/assets/episodes/videos/014-performing-calculations-on-models.mp4
http://media.railscasts.com/assets/episodes/videos/015-fun-with-find-conditions.mp4
http://media.railscasts.com/assets/episodes/videos/016-virtual-attributes.mp4
http://media.railscasts.com/assets/episodes/videos/017-habtm-checkboxes.mp4
http://media.railscasts.com/assets/episodes/videos/018-looping-through-flash.mp4
http://media.railscasts.com/assets/episodes/videos/019-where-administration-goes.mp4
http://media.railscasts.com/assets/episodes/videos/020-restricting-access.mp4
http://media.railscasts.com/assets/episodes/videos/021-super-simple-authentication.mp4
http://media.railscasts.com/assets/episodes/videos/022-eager-loading.mp4
http://media.railscasts.com/assets/episodes/videos/023-counter-cache-column.mp4
http://media.railscasts.com/assets/episodes/videos/024-the-stack-trace.mp4
http://media.railscasts.com/assets/episodes/videos/025-sql-injection.mp4
http://media.railscasts.com/assets/episodes/videos/026-hackers-love-mass-assignment.mp4
http://media.railscasts.com/assets/episodes/videos/027-cross-site-scripting.mp4
http://media.railscasts.com/assets/episodes/videos/028-in-groups-of.mp4
http://media.railscasts.com/assets/episodes/videos/029-group-by-month.mp4
http://media.railscasts.com/assets/episodes/videos/030-pretty-page-title.mp4
http://media.railscasts.com/assets/episodes/videos/031-formatting-time.mp4
http://media.railscasts.com/assets/episodes/videos/032-time-in-text-field.mp4
http://media.railscasts.com/assets/episodes/videos/033-making-a-plugin.mp4
http://media.railscasts.com/assets/episodes/videos/034-named-routes.mp4
http://media.railscasts.com/assets/episodes/videos/035-custom-rest-actions.mp4
http://media.railscasts.com/assets/episodes/videos/036-subversion-on-rails.mp4
http://media.railscasts.com/assets/episodes/videos/037-simple-search-form.mp4
http://media.railscasts.com/assets/episodes/videos/038-multibutton-form.mp4
http://media.railscasts.com/assets/episodes/videos/039-customize-field-error.mp4
http://media.railscasts.com/assets/episodes/videos/040-blocks-in-view.mp4
http://media.railscasts.com/assets/episodes/videos/041-conditional-validations.mp4
http://media.railscasts.com/assets/episodes/videos/042-with-options.mp4
http://media.railscasts.com/assets/episodes/videos/043-ajax-with-rjs.mp4
http://media.railscasts.com/assets/episodes/videos/044-debugging-rjs.mp4
http://media.railscasts.com/assets/episodes/videos/045-rjs-tips.mp4
http://media.railscasts.com/assets/episodes/videos/046-catch-all-route.mp4
http://media.railscasts.com/assets/episodes/videos/047-two-many-to-many.mp4
http://media.railscasts.com/assets/episodes/videos/048-console-tricks.mp4
http://media.railscasts.com/assets/episodes/videos/049-reading-the-api.mp4
http://media.railscasts.com/assets/episodes/videos/050-contributing-to-rails.mp4
http://media.railscasts.com/assets/episodes/videos/051-will-paginate.mp4
http://media.railscasts.com/assets/episodes/videos/052-update-through-checkboxes.mp4
http://media.railscasts.com/assets/episodes/videos/053-handling-exceptions.mp4
http://media.railscasts.com/assets/episodes/videos/054-debugging-with-ruby-debug.mp4
http://media.railscasts.com/assets/episodes/videos/055-cleaning-up-the-view.mp4
http://media.railscasts.com/assets/episodes/videos/056-the-logger.mp4
http://media.railscasts.com/assets/episodes/videos/057-create-model-through-text-field.mp4
http://media.railscasts.com/assets/episodes/videos/058-how-to-make-a-generator.mp4
http://media.railscasts.com/assets/episodes/videos/059-optimistic-locking.mp4
http://media.railscasts.com/assets/episodes/videos/060-testing-without-fixtures.mp4
http://media.railscasts.com/assets/episodes/videos/061-sending-email.mp4
http://media.railscasts.com/assets/episodes/videos/062-hacking-activerecord.mp4
http://media.railscasts.com/assets/episodes/videos/063-model-name-in-url.mp4
http://media.railscasts.com/assets/episodes/videos/064-custom-helper-modules.mp4
http://media.railscasts.com/assets/episodes/videos/065-stopping-spam-with-akismet.mp4
http://media.railscasts.com/assets/episodes/videos/066-custom-rake-tasks.mp4
http://media.railscasts.com/assets/episodes/videos/067-restful-authentication.mp4
http://media.railscasts.com/assets/episodes/videos/068-openid-authentication.mp4
http://media.railscasts.com/assets/episodes/videos/069-markaby-in-helper.mp4
http://media.railscasts.com/assets/episodes/videos/070-custom-routes.mp4
http://media.railscasts.com/assets/episodes/videos/071-testing-controllers-with-rspec.mp4
http://media.railscasts.com/assets/episodes/videos/072-adding-an-environment.mp4
http://media.railscasts.com/assets/episodes/videos/073-complex-forms-part-1.mp4
http://media.railscasts.com/assets/episodes/videos/074-complex-forms-part-2.mp4
http://media.railscasts.com/assets/episodes/videos/075-complex-forms-part-3.mp4
http://media.railscasts.com/assets/episodes/videos/076-scope-out.mp4
http://media.railscasts.com/assets/episodes/videos/077-destroy-without-javascript.mp4
http://media.railscasts.com/assets/episodes/videos/078-generating-pdf-documents.mp4
http://media.railscasts.com/assets/episodes/videos/079-generate-named-routes.mp4
http://media.railscasts.com/assets/episodes/videos/080-simplify-views-with-rails-2-0.mp4
http://media.railscasts.com/assets/episodes/videos/081-fixtures-in-rails-2-0.mp4
http://media.railscasts.com/assets/episodes/videos/082-http-basic-authentication.mp4
http://media.railscasts.com/assets/episodes/videos/083-migrations-in-rails-2-0.mp4
http://media.railscasts.com/assets/episodes/videos/084-cookie-based-session-store.mp4
http://media.railscasts.com/assets/episodes/videos/085-yaml-configuration-file.mp4
http://media.railscasts.com/assets/episodes/videos/086-logging-variables.mp4
http://media.railscasts.com/assets/episodes/videos/087-generating-rss-feeds.mp4
http://media.railscasts.com/assets/episodes/videos/088-dynamic-select-menus.mp4
http://media.railscasts.com/assets/episodes/videos/089-page-caching.mp4
http://media.railscasts.com/assets/episodes/videos/090-fragment-caching.mp4
http://media.railscasts.com/assets/episodes/videos/091-refactoring-long-methods.mp4
http://media.railscasts.com/assets/episodes/videos/092-make-resourceful.mp4
http://media.railscasts.com/assets/episodes/videos/093-action-caching.mp4
http://media.railscasts.com/assets/episodes/videos/094-activeresource-basics.mp4
http://media.railscasts.com/assets/episodes/videos/095-more-on-activeresource.mp4
http://media.railscasts.com/assets/episodes/videos/096-git-on-rails.mp4
http://media.railscasts.com/assets/episodes/videos/097-analyzing-the-production-log.mp4
http://media.railscasts.com/assets/episodes/videos/098-request-profiling.mp4
http://media.railscasts.com/assets/episodes/videos/099-complex-partials.mp4
http://media.railscasts.com/assets/episodes/videos/100-5-view-tips.mp4
http://media.railscasts.com/assets/episodes/videos/101-refactoring-out-helper-object.mp4
http://media.railscasts.com/assets/episodes/videos/102-auto-complete-association.mp4
http://media.railscasts.com/assets/episodes/videos/103-site-wide-announcements.mp4
http://media.railscasts.com/assets/episodes/videos/104-exception-notifications.mp4
http://media.railscasts.com/assets/episodes/videos/105-gitting-rails-2-1-rc1.mp4
http://media.railscasts.com/assets/episodes/videos/106-time-zones-in-rails-2-1.mp4
http://media.railscasts.com/assets/episodes/videos/107-migrations-in-rails-2-1.mp4
http://media.railscasts.com/assets/episodes/videos/108-named-scope.mp4
http://media.railscasts.com/assets/episodes/videos/109-tracking-attribute-changes.mp4
http://media.railscasts.com/assets/episodes/videos/110-gem-dependencies.mp4
http://media.railscasts.com/assets/episodes/videos/111-advanced-search-form.mp4
http://media.railscasts.com/assets/episodes/videos/112-anonymous-scopes.mp4
http://media.railscasts.com/assets/episodes/videos/113-contributing-to-rails-with-git.mp4
http://media.railscasts.com/assets/episodes/videos/114-endless-page.mp4
http://media.railscasts.com/assets/episodes/videos/115-caching-in-rails-2-1.mp4
http://media.railscasts.com/assets/episodes/videos/116-selenium.mp4
http://media.railscasts.com/assets/episodes/videos/117-semi-static-pages.mp4
http://media.railscasts.com/assets/episodes/videos/118-liquid.mp4
http://media.railscasts.com/assets/episodes/videos/119-session-based-model.mp4
http://media.railscasts.com/assets/episodes/videos/120-thinking-sphinx.mp4
http://media.railscasts.com/assets/episodes/videos/121-non-active-record-model.mp4
http://media.railscasts.com/assets/episodes/videos/122-passenger-in-development.mp4
http://media.railscasts.com/assets/episodes/videos/123-subdomains.mp4
http://media.railscasts.com/assets/episodes/videos/124-beta-invitations.mp4
http://media.railscasts.com/assets/episodes/videos/125-dynamic-layouts.mp4
http://media.railscasts.com/assets/episodes/videos/126-populating-a-database.mp4
http://media.railscasts.com/assets/episodes/videos/127-rake-in-background.mp4
http://media.railscasts.com/assets/episodes/videos/128-starling-and-workling.mp4
http://media.railscasts.com/assets/episodes/videos/129-custom-daemon.mp4
http://media.railscasts.com/assets/episodes/videos/130-monitoring-with-god.mp4
http://media.railscasts.com/assets/episodes/videos/131-going-back.mp4
http://media.railscasts.com/assets/episodes/videos/132-helpers-outside-views.mp4
http://media.railscasts.com/assets/episodes/videos/133-capistrano-tasks.mp4
http://media.railscasts.com/assets/episodes/videos/134-paperclip.mp4
http://media.railscasts.com/assets/episodes/videos/135-making-a-gem.mp4
http://media.railscasts.com/assets/episodes/videos/136-jquery.mp4
http://media.railscasts.com/assets/episodes/videos/137-memoization.mp4
http://media.railscasts.com/assets/episodes/videos/138-i18n.mp4
http://media.railscasts.com/assets/episodes/videos/139-nested-resources.mp4
http://media.railscasts.com/assets/episodes/videos/140-rails-2-2-extras.mp4
http://media.railscasts.com/assets/episodes/videos/141-paypal-basics.mp4
http://media.railscasts.com/assets/episodes/videos/142-paypal-notifications.mp4
http://media.railscasts.com/assets/episodes/videos/143-paypal-security.mp4
http://media.railscasts.com/assets/episodes/videos/144-active-merchant-basics.mp4
http://media.railscasts.com/assets/episodes/videos/145-integrating-active-merchant.mp4
http://media.railscasts.com/assets/episodes/videos/146-paypal-express-checkout.mp4
http://media.railscasts.com/assets/episodes/videos/147-sortable-lists.mp4
http://media.railscasts.com/assets/episodes/videos/148-app-templates-in-rails-2-3.mp4
http://media.railscasts.com/assets/episodes/videos/149-rails-engines.mp4
http://media.railscasts.com/assets/episodes/videos/150-rails-metal.mp4
http://media.railscasts.com/assets/episodes/videos/151-rack-middleware.mp4
http://media.railscasts.com/assets/episodes/videos/152-rails-2-3-extras.mp4
http://media.railscasts.com/assets/episodes/videos/153-pdfs-with-prawn.mp4
http://media.railscasts.com/assets/episodes/videos/154-polymorphic-association.mp4
http://media.railscasts.com/assets/episodes/videos/155-beginning-with-cucumber.mp4
http://media.railscasts.com/assets/episodes/videos/156-webrat.mp4
http://media.railscasts.com/assets/episodes/videos/157-rspec-matchers-macros.mp4
http://media.railscasts.com/assets/episodes/videos/158-factories-not-fixtures.mp4
http://media.railscasts.com/assets/episodes/videos/159-more-on-cucumber.mp4
http://media.railscasts.com/assets/episodes/videos/160-authlogic.mp4
http://media.railscasts.com/assets/episodes/videos/161-three-profiling-tools.mp4
http://media.railscasts.com/assets/episodes/videos/162-tree-based-navigation.mp4
http://media.railscasts.com/assets/episodes/videos/163-self-referential-association.mp4
http://media.railscasts.com/assets/episodes/videos/164-cron-in-ruby.mp4
http://media.railscasts.com/assets/episodes/videos/165-edit-multiple.mp4
http://media.railscasts.com/assets/episodes/videos/166-metric-fu.mp4
http://media.railscasts.com/assets/episodes/videos/167-more-on-virtual-attributes.mp4
http://media.railscasts.com/assets/episodes/videos/168-feed-parsing.mp4
http://media.railscasts.com/assets/episodes/videos/169-dynamic-page-caching.mp4
http://media.railscasts.com/assets/episodes/videos/170-openid-with-authlogic.mp4
http://media.railscasts.com/assets/episodes/videos/171-delayed-job.mp4
http://media.railscasts.com/assets/episodes/videos/172-touch-and-cache.mp4
http://media.railscasts.com/assets/episodes/videos/173-screen-scraping-with-scrapi.mp4
http://media.railscasts.com/assets/episodes/videos/174-pagination-with-ajax.mp4
http://media.railscasts.com/assets/episodes/videos/175-ajax-history-and-bookmarks.mp4
http://media.railscasts.com/assets/episodes/videos/176-searchlogic.mp4
http://media.railscasts.com/assets/episodes/videos/177-model-versioning.mp4
http://media.railscasts.com/assets/episodes/videos/178-seven-security-tips.mp4
http://media.railscasts.com/assets/episodes/videos/179-seed-data.mp4
http://media.railscasts.com/assets/episodes/videos/180-finding-unused-css.mp4
http://media.railscasts.com/assets/episodes/videos/181-include-vs-joins.mp4
http://media.railscasts.com/assets/episodes/videos/182-cropping-images.mp4
http://media.railscasts.com/assets/episodes/videos/183-gemcutter-jeweler.mp4
http://media.railscasts.com/assets/episodes/videos/184-formtastic-part-1.mp4
http://media.railscasts.com/assets/episodes/videos/185-formtastic-part-2.mp4
http://media.railscasts.com/assets/episodes/videos/186-pickle-with-cucumber.mp4
http://media.railscasts.com/assets/episodes/videos/187-testing-exceptions.mp4
http://media.railscasts.com/assets/episodes/videos/188-declarative-authorization.mp4
http://media.railscasts.com/assets/episodes/videos/189-embedded-association.mp4
http://media.railscasts.com/assets/episodes/videos/190-screen-scraping-with-nokogiri.mp4
http://media.railscasts.com/assets/episodes/videos/191-mechanize.mp4
http://media.railscasts.com/assets/episodes/videos/192-authorization-with-cancan.mp4
http://media.railscasts.com/assets/episodes/videos/193-tableless-model.mp4
http://media.railscasts.com/assets/episodes/videos/194-mongodb-and-mongomapper.mp4
http://media.railscasts.com/assets/episodes/videos/195-my-favorite-web-apps-in-2009.mp4
http://media.railscasts.com/assets/episodes/videos/196-nested-model-form-part-1.mp4
http://media.railscasts.com/assets/episodes/videos/197-nested-model-form-part-2.mp4
http://media.railscasts.com/assets/episodes/videos/198-edit-multiple-individually.mp4
http://media.railscasts.com/assets/episodes/videos/199-mobile-devices.mp4
http://media.railscasts.com/assets/episodes/videos/200-rails-3-beta-and-rvm.mp4
http://media.railscasts.com/assets/episodes/videos/201-bundler.mp4
http://media.railscasts.com/assets/episodes/videos/202-active-record-queries-in-rails-3.mp4
http://media.railscasts.com/assets/episodes/videos/203-routing-in-rails-3.mp4
http://media.railscasts.com/assets/episodes/videos/204-xss-protection-in-rails-3.mp4
http://media.railscasts.com/assets/episodes/videos/205-unobtrusive-javascript.mp4
http://media.railscasts.com/assets/episodes/videos/206-action-mailer-in-rails-3.mp4
http://media.railscasts.com/assets/episodes/videos/207-syntax-highlighting.mp4
http://media.railscasts.com/assets/episodes/videos/208-erb-blocks-in-rails-3.mp4
http://media.railscasts.com/assets/episodes/videos/209-introducing-devise.mp4
http://media.railscasts.com/assets/episodes/videos/210-customizing-devise.mp4
http://media.railscasts.com/assets/episodes/videos/211-validations-in-rails-3.mp4
http://media.railscasts.com/assets/episodes/videos/212-refactoring-dynamic-delegator.mp4
http://media.railscasts.com/assets/episodes/videos/213-calendars.mp4
http://media.railscasts.com/assets/episodes/videos/214-a-b-testing-with-a-bingo.mp4
http://media.railscasts.com/assets/episodes/videos/215-advanced-queries-in-rails-3.mp4
http://media.railscasts.com/assets/episodes/videos/216-generators-in-rails-3.mp4
http://media.railscasts.com/assets/episodes/videos/217-multistep-forms.mp4
http://media.railscasts.com/assets/episodes/videos/218-making-generators-in-rails-3.mp4
http://media.railscasts.com/assets/episodes/videos/219-active-model.mp4
http://media.railscasts.com/assets/episodes/videos/220-pdfkit.mp4
http://media.railscasts.com/assets/episodes/videos/221-subdomains-in-rails-3.mp4
http://media.railscasts.com/assets/episodes/videos/222-rack-in-rails-3.mp4
http://media.railscasts.com/assets/episodes/videos/223-charts.mp4
http://media.railscasts.com/assets/episodes/videos/224-controllers-in-rails-3.mp4
http://media.railscasts.com/assets/episodes/videos/225-upgrading-to-rails-3-part-1.mp4
http://media.railscasts.com/assets/episodes/videos/226-upgrading-to-rails-3-part-2.mp4
http://media.railscasts.com/assets/episodes/videos/227-upgrading-to-rails-3-part-3.mp4
http://media.railscasts.com/assets/episodes/videos/228-sortable-table-columns.mp4
http://media.railscasts.com/assets/episodes/videos/229-polling-for-changes.mp4
http://media.railscasts.com/assets/episodes/videos/230-inherited-resources.mp4
http://media.railscasts.com/assets/episodes/videos/231-routing-walkthrough.mp4
http://media.railscasts.com/assets/episodes/videos/232-routing-walkthrough-part-2.mp4
http://media.railscasts.com/assets/episodes/videos/233-engage-with-devise.mp4
http://media.railscasts.com/assets/episodes/videos/234-simple-form.mp4
http://media.railscasts.com/assets/episodes/videos/235-omniauth-part-1.mp4
http://media.railscasts.com/assets/episodes/videos/236-omniauth-part-2.mp4
http://media.railscasts.com/assets/episodes/videos/237-dynamic-attr-accessible.mp4
http://media.railscasts.com/assets/episodes/videos/238-mongoid.mp4
http://media.railscasts.com/assets/episodes/videos/239-activerecord-relation-walkthrough.mp4
http://media.railscasts.com/assets/episodes/videos/240-search-sort-paginate-with-ajax.mp4
http://media.railscasts.com/assets/episodes/videos/241-simple-omniauth.mp4
http://media.railscasts.com/assets/episodes/videos/242-thor.mp4
http://media.railscasts.com/assets/episodes/videos/243-beanstalkd-and-stalker.mp4
http://media.railscasts.com/assets/episodes/videos/244-gravatar.mp4
http://media.railscasts.com/assets/episodes/videos/245-new-gem-with-bundler.mp4
http://media.railscasts.com/assets/episodes/videos/246-ajax-history-state.mp4
http://media.railscasts.com/assets/episodes/videos/247-offline-apps-part-1.mp4
http://media.railscasts.com/assets/episodes/videos/248-offline-apps-part-2.mp4
http://media.railscasts.com/assets/episodes/videos/249-notifications-in-rails-3.mp4
http://media.railscasts.com/assets/episodes/videos/250-authentication-from-scratch.mp4
http://media.railscasts.com/assets/episodes/videos/251-metawhere-metasearch.mp4
http://media.railscasts.com/assets/episodes/videos/252-metrics-metrics-metrics.mp4
http://media.railscasts.com/assets/episodes/videos/253-carrierwave-file-uploads.mp4
http://media.railscasts.com/assets/episodes/videos/254-pagination-with-kaminari.mp4
http://media.railscasts.com/assets/episodes/videos/255-undo-with-paper-trail.mp4
http://media.railscasts.com/assets/episodes/videos/256-i18n-backends.mp4
http://media.railscasts.com/assets/episodes/videos/257-request-specs-and-capybara.mp4
http://media.railscasts.com/assets/episodes/videos/258-token-fields.mp4
http://media.railscasts.com/assets/episodes/videos/259-decent-exposure.mp4
http://media.railscasts.com/assets/episodes/videos/260-messaging-with-faye.mp4
http://media.railscasts.com/assets/episodes/videos/261-testing-javascript-with-jasmine.mp4
http://media.railscasts.com/assets/episodes/videos/262-trees-with-ancestry.mp4
http://media.railscasts.com/assets/episodes/videos/263-client-side-validations.mp4
http://media.railscasts.com/assets/episodes/videos/264-guard.mp4
http://media.railscasts.com/assets/episodes/videos/265-rails-3-1-overview.mp4
http://media.railscasts.com/assets/episodes/videos/266-http-streaming.mp4
http://media.railscasts.com/assets/episodes/videos/267-coffeescript-basics.mp4
http://media.railscasts.com/assets/episodes/videos/268-sass-basics.mp4
http://media.railscasts.com/assets/episodes/videos/269-template-inheritance.mp4
http://media.railscasts.com/assets/episodes/videos/270-authentication-in-rails-3-1.mp4
http://media.railscasts.com/assets/episodes/videos/271-resque.mp4
http://media.railscasts.com/assets/episodes/videos/272-markdown-with-redcarpet.mp4
http://media.railscasts.com/assets/episodes/videos/273-geocoder.mp4
http://media.railscasts.com/assets/episodes/videos/274-remember-me-reset-password.mp4
http://media.railscasts.com/assets/episodes/videos/275-how-i-test.mp4
http://media.railscasts.com/assets/episodes/videos/276-testing-time-web-requests.mp4
http://media.railscasts.com/assets/episodes/videos/277-mountable-engines.mp4
http://media.railscasts.com/assets/episodes/videos/278-search-with-sunspot.mp4
http://media.railscasts.com/assets/episodes/videos/279-understanding-the-asset-pipeline.mp4
http://media.railscasts.com/assets/episodes/videos/280-pry-with-rails.mp4
http://media.railscasts.com/assets/episodes/videos/281-foreman.mp4
http://media.railscasts.com/assets/episodes/videos/282-upgrading-to-rails-3-1.mp4
http://media.railscasts.com/assets/episodes/videos/283-authentication-with-sorcery.mp4
http://media.railscasts.com/assets/episodes/videos/284-active-admin.mp4
http://media.railscasts.com/assets/episodes/videos/285-spork.mp4
http://media.railscasts.com/assets/episodes/videos/286-draper.mp4
http://media.railscasts.com/assets/episodes/videos/288-billing-with-stripe.mp4
http://media.railscasts.com/assets/episodes/videos/290-soap-with-savon.mp4
http://media.railscasts.com/assets/episodes/videos/292-virtual-machines-with-vagrant.mp4
http://media.railscasts.com/assets/episodes/videos/294-playing-with-pjax.mp4
http://media.railscasts.com/assets/episodes/videos/296-mercury-editor.mp4
http://media.railscasts.com/assets/episodes/videos/298-getting-started-with-spree.mp4
http://media.railscasts.com/assets/episodes/videos/300-contributing-to-open-source.mp4
http://media.railscasts.com/assets/episodes/videos/302-in-place-editing.mp4
http://media.railscasts.com/assets/episodes/videos/304-omniauth-identity.mp4
http://media.railscasts.com/assets/episodes/videos/306-elasticsearch-part-1.mp4
http://media.railscasts.com/assets/episodes/videos/308-oh-my-zsh.mp4
http://media.railscasts.com/assets/episodes/videos/310-getting-started-with-rails.mp4
http://media.railscasts.com/assets/episodes/videos/312-sending-html-email.mp4
http://media.railscasts.com/assets/episodes/videos/314-pretty-urls-with-friendlyid.mp4
http://media.railscasts.com/assets/episodes/videos/316-private-pub.mp4
http://media.railscasts.com/assets/episodes/videos/318-upgrading-to-rails-3-2.mp4
http://media.railscasts.com/assets/episodes/videos/320-jbuilder.mp4
http://media.railscasts.com/assets/episodes/videos/322-rabl.mp4
http://media.railscasts.com/assets/episodes/videos/324-passing-data-to-javascript.mp4
http://media.railscasts.com/assets/episodes/videos/326-activeattr.mp4
http://media.railscasts.com/assets/episodes/videos/328-twitter-bootstrap-basics.mp4
http://media.railscasts.com/assets/episodes/videos/330-better-sass-with-bourbon.mp4
http://media.railscasts.com/assets/episodes/videos/332-refinery-cms-basics.mp4
http://media.railscasts.com/assets/episodes/videos/334-compass-css-sprites.mp4
http://media.railscasts.com/assets/episodes/videos/336-copycopter.mp4
http://media.railscasts.com/assets/episodes/videos/338-globalize3.mp4
http://media.railscasts.com/assets/episodes/videos/340-datatables.mp4
http://media.railscasts.com/assets/episodes/videos/342-migrating-to-postgresql.mp4
http://media.railscasts.com/assets/episodes/videos/344-queue-classic.mp4
http://media.railscasts.com/assets/episodes/videos/346-wizard-forms-with-wicked.mp4
http://media.railscasts.com/assets/episodes/videos/347-rubber-and-amazon-ec2.mp4
http://media.railscasts.com/assets/episodes/videos/348-the-rails-api-gem.mp4
http://media.railscasts.com/assets/episodes/videos/350-rest-api-versioning.mp4
http://media.railscasts.com/assets/episodes/videos/352-securing-an-api.mp4
http://media.railscasts.com/assets/episodes/videos/354-squeel.mp4
http://media.railscasts.com/assets/episodes/videos/356-dangers-of-session-hijacking.mp4
http://media.railscasts.com/assets/episodes/videos/358-brakeman.mp4
http://media.railscasts.com/assets/episodes/videos/360-facebook-authentication.mp4
http://media.railscasts.com/assets/episodes/videos/362-exporting-csv-and-excel.mp4
http://media.railscasts.com/assets/episodes/videos/364-active-record-reputation-system.mp4
http://media.railscasts.com/assets/episodes/videos/366-sidekiq.mp4
http://media.railscasts.com/assets/episodes/videos/368-miniprofiler.mp4
http://media.railscasts.com/assets/episodes/videos/370-ransack.mp4
http://media.railscasts.com/assets/episodes/videos/372-bullet.mp4
http://media.railscasts.com/assets/episodes/videos/374-image-manipulation.mp4
http://media.railscasts.com/assets/episodes/videos/376-jruby-basics.mp4
http://media.railscasts.com/assets/episodes/videos/378-fnordmetric.mp4
http://media.railscasts.com/assets/episodes/videos/382-tagging.mp4
http://media.railscasts.com/assets/episodes/videos/384-exploring-rubygems.mp4
http://media.railscasts.com/assets/episodes/videos/387-cache-digests.mp4
http://media.railscasts.com/assets/episodes/videos/390-turbolinks.mp4
http://media.railscasts.com/assets/episodes/videos/393-guest-user-record.mp4
http://media.railscasts.com/assets/episodes/videos/396-importing-csv-and-excel.mp4
http://s3.amazonaws.com/railscasts-media/assets/episodes/videos/400-what-s-new-in-rails-4.mp4
http://media.railscasts.com/assets/episodes/videos/402-better-errors-railspanel.mp4
http://media.railscasts.com/assets/episodes/videos/406-public-activity.mp4

Thanks this helps :)

Thanks man its really a great help to us. . . .!! keep the good work like this :)

I modified this to make it work on Windows:

https://gist.github.com/gberger42/5281081

Great stuff! :P
Thanks a bunch!

Can you even download the pro episodes? Wonder what @ryanb thinks of this

@thoughtpunch No, is only download free episdoes.

But, now you can use your own PRO subscription RSS URL for downloading.

Thanx a lot For this!!!

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.