fb_video_url_converter 0.2.9 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.rdoc CHANGED
@@ -1,3 +1,6 @@
1
+ = Version 0.3.0
2
+ * Quick adjustment for new FB embedding, tests aren't updated :(
3
+ * Works for HD and SD
1
4
  = Version 0.2.9
2
5
  * Adjustment for new FB video url embedding (in js)
3
6
  = Version 0.2.8
data/Rakefile CHANGED
@@ -3,7 +3,7 @@ require 'rubygems'
3
3
  require 'rake'
4
4
  require 'echoe'
5
5
 
6
- Echoe.new('fb_video_url_converter', '0.2.9') do |p|
6
+ Echoe.new('fb_video_url_converter', '0.3.0') do |p|
7
7
  p.description = "Facebook Video URL Converter is intended as an easy alternative to changing video hosting from Facebook to a different one."
8
8
  p.url = "https://github.com/mensfeld/FB-Video-URL-Converter"
9
9
  p.author = "Maciej Mensfeld"
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "fb_video_url_converter"
5
- s.version = "0.2.9"
5
+ s.version = "0.3.0"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Maciej Mensfeld"]
9
- s.date = "2012-02-25"
9
+ s.date = "2012-12-22"
10
10
  s.description = "Facebook Video URL Converter is intended as an easy alternative to changing video hosting from Facebook to a different one."
11
11
  s.email = "maciej@mensfeld.pl"
12
12
  s.extra_rdoc_files = ["CHANGELOG.rdoc", "README.md", "lib/facebook_bot.rb", "lib/facebook_video.rb", "lib/fb_video_url_converter.rb", "lib/generators/fb_video_url_converter/install_generator.rb", "lib/generators/fb_video_url_converter/templates/create_facebook_videos_migration.rb", "lib/generators/fb_video_url_converter/templates/facebook_video_converter_init.rb"]
@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
15
15
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Fb_video_url_converter", "--main", "README.md"]
16
16
  s.require_paths = ["lib"]
17
17
  s.rubyforge_project = "fb_video_url_converter"
18
- s.rubygems_version = "1.8.15"
18
+ s.rubygems_version = "1.8.10"
19
19
  s.summary = "Facebook Video URL Converter is intended as an easy alternative to changing video hosting from Facebook to a different one."
20
20
 
21
21
  if s.respond_to? :specification_version then
data/lib/facebook_bot.rb CHANGED
@@ -6,6 +6,7 @@ require 'mechanize'
6
6
  require 'uri'
7
7
  require 'cgi'
8
8
  require 'time'
9
+ require 'json'
9
10
 
10
11
  class Mechanize::Page
11
12
  def form_id(formId)
@@ -35,51 +36,13 @@ class FacebookBot
35
36
  @video_page = nil
36
37
  @agent = Mechanize.new
37
38
  @agent.user_agent_alias = USER_AGENT
38
-
39
- begin
40
- @@root = File.join(Rails.root, 'tmp')
41
- rescue
42
- raise CookiePathNotInitialized, 'Specify cookie_path' if self.class.cookie_path.nil?
43
- @@root = self.class.cookie_path
44
- end
45
-
46
- @cookies = File.join(@@root, "cookie_#{self.class.email}.yml")
47
-
48
- begin
49
- @agent.cookie_jar.load(@cookies)
50
- rescue
51
- end if (File.file?(@cookies) && File.size(@cookies) > 10)
52
-
53
- self.login
54
- end
55
-
56
- def login
57
- page = @agent.get(FB_URL)
58
-
59
- if (loginf = page.form_with(:id => "login_form"))
60
- loginf.set_fields(:email => self.class.email, :pass => self.class.password)
61
-
62
- page = @agent.submit(loginf, loginf.buttons.first)
63
- end
64
-
65
- @agent.cookie_jar.save_as(@cookies)
66
-
67
- body = page.root.to_html
68
- @post_form_id = %r{<input type="hidden" .* name="post_form_id" value="([^"]+)}.match(body)[1]
69
- if body.include?('Incorrect Email')
70
- raise self.class::LoginFailed, 'Incorrect login/password or cookie corrupted'
71
- end
72
- rescue
73
- @agent.cookie_jar.clear!
74
- @agent.cookie_jar.save_as(@cookies)
75
- raise self.class::LoginFailed, 'Incorrect login/password or cookie corrupted'
76
39
  end
77
40
 
78
41
  def video_url(id)
79
42
  load_video_page(id)
80
43
  get_url(@video_page)
81
- rescue
82
- VIDEO_ERROR
44
+ #rescue
45
+ # VIDEO_ERROR
83
46
  end
84
47
 
85
48
  def video_name(id)
@@ -96,21 +59,45 @@ class FacebookBot
96
59
  end
97
60
  end
98
61
 
99
- def get_url(url)
62
+ def get_url(page)
63
+ url ||= extract_url_hd(page)
64
+ url ||= extract_url_sd(page)
65
+ url ||= extract_url_old(page)
66
+ url.nil? ? raise(RuntimeError) : url
67
+ end
68
+
69
+ def get_name(site)
70
+ name = site.scan(/title>(.+)<\/title>/ix).first
71
+ name ? name.first : VIDEO_ERROR
72
+ end
73
+
74
+ def extract_url_old(url)
100
75
  url = url.scan(/\[\"highqual_src\",\"(.+)\"\]/ix).first
101
76
  url = url.first
102
- url = url.split(')').first.gsub('\u00253A', ':')
77
+ url = url.gsub('\u00253A', ':')
103
78
  url = url.gsub('\u00252F', '/')
104
79
  url = url.gsub('\u00253F', '?')
105
80
  url = url.gsub('\u00253D', '=')
106
81
  url = url.gsub('\u002526', '&')
82
+ url = url.gsub('\u00255C', '\\')
107
83
  url = "http://#{url.split('http://')[1]}".split('"').first
108
84
  CGI.unescapeHTML(url)
109
- end
85
+ rescue
86
+ nil
87
+ end
110
88
 
111
- def get_name(site)
112
- name = site.scan(/title>(.+)<\/title>/ix).first
113
- name ? name.first : VIDEO_ERROR
89
+ def extract_url_hd(page)
90
+ url = page.scan(/hd_src.*(http.*?)(\\u002522)/ix).last.first
91
+ URI.decode(JSON('["'+url+'"]').first).gsub('\\', '')
92
+ #rescue
93
+ # nil
94
+ end
95
+
96
+ def extract_url_sd(page)
97
+ url = page.scan(/sd_src.*(http.*?)(\\u002522)/ix).last.first
98
+ URI.decode(JSON('["'+url+'"]').first).gsub('\\', '')
99
+ rescue
100
+ nil
114
101
  end
115
102
 
116
103
  end
data/spec/spec_helper.rb CHANGED
@@ -23,8 +23,8 @@ require 'fb_video_url_converter'
23
23
  require 'active_record'
24
24
  require 'fileutils'
25
25
 
26
- FacebookBot.email = 'maciej@mensfeld.pl'
27
- FacebookBot.password = 'bpp_B7QksC79-c7_JBTRBV'
26
+ FacebookBot.email = 'email'
27
+ FacebookBot.password = 'password'
28
28
  FacebookBot.cookie_path = File.join(File.expand_path(File.dirname(__FILE__)), '..', 'lib')
29
29
  FacebookVideo.cache = 60*10
30
30
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fb_video_url_converter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.9
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-25 00:00:00.000000000Z
12
+ date: 2012-12-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
16
- requirement: &17362140 !ruby/object:Gem::Requirement
16
+ requirement: &15952360 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *17362140
24
+ version_requirements: *15952360
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: mechanize
27
- requirement: &17361480 !ruby/object:Gem::Requirement
27
+ requirement: &15951100 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *17361480
35
+ version_requirements: *15951100
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &17360780 !ruby/object:Gem::Requirement
38
+ requirement: &15950400 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: 2.0.0
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *17360780
46
+ version_requirements: *15950400
47
47
  description: Facebook Video URL Converter is intended as an easy alternative to changing
48
48
  video hosting from Facebook to a different one.
49
49
  email: maciej@mensfeld.pl
@@ -102,7 +102,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
102
102
  version: '1.2'
103
103
  requirements: []
104
104
  rubyforge_project: fb_video_url_converter
105
- rubygems_version: 1.8.15
105
+ rubygems_version: 1.8.10
106
106
  signing_key:
107
107
  specification_version: 3
108
108
  summary: Facebook Video URL Converter is intended as an easy alternative to changing