X-Git-Url: http://gitweb.michael.orlitzky.com/?p=dead%2Fwhatever-dl.git;a=blobdiff_plain;f=src%2Fwebsites%2Fredtube.rb;h=3b1a4fa5005641817a2f0cc4f87902e8d20f263f;hp=39ca90137a7f367f3c3d571b2c6261415b9c33c2;hb=6e9cec676f28db2fe9fd5872bc0ec7ebb954f5f6;hpb=d56c687299c6db6d4571c78ddb54e5da0d8b96ca diff --git a/src/websites/redtube.rb b/src/websites/redtube.rb index 39ca901..3b1a4fa 100644 --- a/src/websites/redtube.rb +++ b/src/websites/redtube.rb @@ -54,14 +54,29 @@ class Redtube < Website video_dir = self.get_video_dir(video_id) file_name = self.get_file_name(padded_id) - # This mess is actually the only directory out of - # which they serve videos. - return 'http://dl.redtube.com/_videos_t4vn23s9jc5498tgj49icfj4678/' + - "#{video_dir}/#{file_name}" + page_data = self.get_page_data(@url) + + # As far as I know, the MP4s don't work yet. + # So just default to the FLV. + top_secret_hash = parse_hash_flv(page_data) + + return 'http://dl.redtube.com/' + + self.get_root_server_dir() + + "/#{video_dir}/#{file_name}" + + top_secret_hash end - - protected + + def get_video_filename() + # Mildly redundant. + video_id = parse_video_id() + padded_id = video_id.to_s.pad_left('0', 7) + + return self.get_file_name(padded_id) + end + + + protected; VIDEO_FILE_EXTENSION = '.flv' @@ -69,6 +84,28 @@ class Redtube < Website return /\d+/.match(@url)[0] end + + + def parse_hash_flv(page_data) + # Hashes are generated for both flv/mp4 and are delivered + # along with the video page. We need to stick them back on + # the end of the final video URL, or else it doesn't work. + hash_flv_regex = /&hash_flv=(\/.*?)&/ + + matches = hash_flv_regex.match(page_data) + + if matches.nil? + raise StandardError.new("Couldn't parse the hash_flv variable.") + end + + return matches[1] + end + + + def get_root_server_dir() + # They hard code this shit into the SWF file. + return '467f9bca32b1989277b48582944f325afa3374' + end # Not sure what they're thinking with this one. def get_video_dir(video_id)