2 # Copyright Michael Orlitzky
4 # http://michael.orlitzky.com/
6 # This program is free software: you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation, either version 3 of the License, or
9 # (at your option) any later version.
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
16 # http://www.fsf.org/licensing/licenses/gpl.html
21 class Howcast
< Website
23 VALID_HOWCAST_URL_REGEX
= /^(http:\/\
/)?(www\.)?howcast\.com\/videos\
/(\d+)-(.+)$/
25 def self.owns_url
?(url
)
26 return url
=~ VALID_HOWCAST_URL_REGEX
31 video_id
= parse_video_id()
32 xml_url
= "http://www.howcast.com/videos/#{video_id}.xml"
33 xml_data
= self.get_page_data(xml_url
)
34 filepath
= parse_file_path_from_xml(xml_data
)
36 return "http://www.howcast.com#{filepath}"
42 # This regex just pulls out the video id
44 matches
= id_regex
.match(@url)
47 raise StandardError
.new('The URL is a valid Howcast URL, but does not match on the digit portion of the regex. Since the digit portion is a subset of the "valid" regex, this should never occur.')
54 def parse_file_path_from_xml(data)
55 file_path_regex
= /<filename>(.*?)<\/filename
>/
56 matches
= file_path_regex
.match(data)
59 raise StandardError
.new("Couldn't parse the <filename> tag from the XML file.")