fb_video_url_converter 0.2.9 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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