]> gitweb.michael.orlitzky.com - dead/whatever-dl.git/blob - src/websites/youporn.rb
Fix all Ruby 1.9 errors and warnings.
[dead/whatever-dl.git] / src / websites / youporn.rb
1 #
2 # Copyright Michael Orlitzky
3 #
4 # http://michael.orlitzky.com/
5 #
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.
10 #
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.
15 #
16 # http://www.fsf.org/licensing/licenses/gpl.html
17 #
18
19 require 'src/website'
20
21
22 class Youporn < Website
23
24 VALID_YOUPORN_URL_REGEX = /^(http:\/\/)?(www\.)?youporn\.com\/watch\/(\d+)(\/.*)?$/
25
26 def self.owns_url?(url)
27 return url =~ VALID_YOUPORN_URL_REGEX
28 end
29
30
31 def get_video_url()
32 page_data = self.get_page_data(@url)
33 video_url = self.parse_video_url(page_data)
34 return video_url
35 end
36
37
38 protected;
39
40 # Get the FLV file URL from the HTML page for this movie.
41 # They don't obfuscate it or anything, so we assume here
42 # that the first "download" url ending in ".flv" is the
43 # movie file we want.
44 def parse_video_url(page_data)
45 flv_regex = /http:\/\/download\.youporn\.com\/.*?\.flv/
46 matches = flv_regex.match(page_data)
47 flv_url = matches[0] if not matches.nil?
48
49 return flv_url
50 end
51
52
53 def get_page_data(url)
54 uri = URI.parse(url)
55
56 response = Net::HTTP.start(uri.host, uri.port) do |http|
57 # Bypass the stupid age verification.
58 form_data = 'user_choice=Enter'
59 http.post(uri.path, form_data, self.get_headers())
60 end
61
62 return response.body
63 end
64
65 # Build the header hash from the URL we're requesting.
66 def get_headers()
67 headers = { 'Referer' => @url,
68 'Content-Type' => 'application/x-www-form-urlencoded' }
69 return headers
70 end
71
72
73 end