return url =~ VALID_EFUKT_URL_REGEX
end
-
+
def get_video_url()
page_data = self.get_page_data(@url)
video_url = self.parse_video_url(page_data)
# better than the superclass method because it doesn't rely on the
# network.
filename = @url.split('/').pop().split('.')[0]
-
+
# Most of the URLs will just be the video's id,
# followed by an underscore and the video title (with
# all spaces replaced by underscores. Sounds like a good
# Overwrite the default if our regex worked.
filename = matches[1] if not (matches.nil? || matches.length < 1)
-
+
return (filename + '.flv')
end
-
+
protected;
- # Get the FLV file URL from the HTML page for this movie.
- # It's stored in some Flash variable.
def parse_video_url(page_data)
- # There are two formats; try them both one at a time.
- video_url_regex = /&file=(http:\/\/.*\.flv)&/i
+ # Get the FLV file URL from the HTML page for this movie.
+ # It's stored in some Flash variable.
+ video_url_regex = /flashvars\.file = "(http:\/\/.*\.flv)"/i
matches = video_url_regex.match(page_data)
if not (matches.nil? || matches.length < 2)
return matches[1]
+ else
+ raise StandardError.new('Could not find the "file" Flash variable.');
end
- # If we didn't return a match already, try the second format.
- video_url_regex = /<param name='fileName' value="(.*?)"/i
- matches = video_url_regex.match(page_data)
-
- if (matches.nil? || matches.length < 2)
- raise StandardError.new('Could not find the "file" Flash variable, nor the "fileName" object parameter.');
- end
-
return matches[1]
end