X-Git-Url: http://gitweb.michael.orlitzky.com/?p=dead%2Fwhatever-dl.git;a=blobdiff_plain;f=src%2Fwebsite.rb;h=4e20466d30d95f0bf5a95370bcaa674a4adf5f73;hp=ef96dc11fd32f6407a199ee2c033ecd4e40721eb;hb=2a5f7ac542e7f613b3fa686496ea3ab32e959ae9;hpb=e756e0b650774f2503702512ccdc02e86eee1788 diff --git a/src/website.rb b/src/website.rb index ef96dc1..4e20466 100644 --- a/src/website.rb +++ b/src/website.rb @@ -16,6 +16,9 @@ # http://www.fsf.org/licensing/licenses/gpl.html # +# Needed for the default implementation of get_page_data. +require 'net/http' + # Necessary in a lot of subclasses; plus, we need it # to parse the server name out of our URL. require 'uri' @@ -59,7 +62,7 @@ class Website uri = URI.parse(url) response = Net::HTTP.start(uri.host, uri.port) do |http| - http.get(uri.request_uri) + http.get(uri.request_uri, self.headers) end return response.body @@ -69,11 +72,17 @@ class Website public; + # Additional headers used when requesting data from the website. + # These aren't passed as a parameter because the (final) + # downloaders need them as well. + attr_accessor :headers + def initialize(url) @url = url + self.headers = { 'User-Agent' => Configuration::USER_AGENT } end - + def self.create(url) # Factory method returning an instance of # the appropriate subclass. @@ -111,8 +120,15 @@ class Website # of the video URL, but in some cases, subclasses will want # to override this behavior. def get_video_filename() - # Use whatever comes after the final front slash. - return get_video_url().split('/').pop() + # Use whatever comes after the final front slash. + file_and_params = get_video_url().split('/').pop() + + # Unless it contains URL parameters. We don't want those. + return file_and_params unless file_and_params.include?('?') + + # There must be some parameters. Strip them off. + param_start_idx = file_and_params.index('?') + return file_and_params[0...(param_start_idx)] end end