niconico 1.4.2 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/niconico.rb +31 -10
- data/lib/niconico/channel.rb +1 -1
- data/lib/niconico/mylist.rb +1 -1
- data/lib/niconico/ranking.rb +1 -1
- data/lib/niconico/version.rb +1 -1
- data/lib/niconico/video.rb +24 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f3206a2fa1c511105d47e732cdfc0a112c324e96
|
4
|
+
data.tar.gz: 393d00222c2354bcd57fca25e24b6f863bfbc100
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: df5ee49a049b077e2bc7fe61597d003cdd3dfa12663e4ea118acc1e9f32bc74b0eb4274f226071493d39ba6ae1d9a46abc7789e446ae16780c0b46ad94e1b7fd
|
7
|
+
data.tar.gz: f3ec9f17c59f053471c8cf34ae7874b3216f569824d09259e9ef8849a0af6dd56362aea5d46962eb811974109b1fd8981bddb9d4c3bff5ada07939891adee54d
|
data/lib/niconico.rb
CHANGED
@@ -14,19 +14,26 @@ class Niconico
|
|
14
14
|
|
15
15
|
TEST_VIDEO_ID = "sm9"
|
16
16
|
|
17
|
-
attr_reader :agent
|
17
|
+
attr_reader :agent
|
18
|
+
|
19
|
+
def logged_in?; @logged_in; end
|
20
|
+
alias logined logged_in?
|
18
21
|
|
19
22
|
def initialize(*args)
|
20
23
|
case args.size
|
21
24
|
when 2
|
22
25
|
@mail, @pass = args
|
23
26
|
when 1
|
24
|
-
|
27
|
+
if args.first.kind_of?(Hash)
|
28
|
+
@mail, @pass, @token = args.first.values_at(:mail, :password, :token)
|
29
|
+
else
|
30
|
+
@token = args.first
|
31
|
+
end
|
25
32
|
else
|
26
33
|
raise ArgumentError, "wrong number of arguments (#{args.size} for 1..2)"
|
27
34
|
end
|
28
35
|
|
29
|
-
@
|
36
|
+
@logged_in = false
|
30
37
|
|
31
38
|
@agent = Mechanize.new.tap do |agent|
|
32
39
|
agent.user_agent = "Niconico.gem (#{Niconico::VERSION}, https://github.com/sorah/niconico)"
|
@@ -42,19 +49,32 @@ class Niconico
|
|
42
49
|
end
|
43
50
|
|
44
51
|
def login(force=false)
|
45
|
-
return false if !force && @
|
46
|
-
|
47
|
-
if @token
|
52
|
+
return false if !force && @logged_in
|
53
|
+
|
54
|
+
if @token && @mail && @pass
|
55
|
+
begin
|
56
|
+
login_with_token
|
57
|
+
rescue LoginError
|
58
|
+
login_with_email
|
59
|
+
end
|
60
|
+
elsif @token
|
48
61
|
login_with_token
|
49
62
|
elsif @mail && @pass
|
50
63
|
login_with_email
|
51
64
|
else
|
52
|
-
raise '
|
65
|
+
raise ArgumentError, 'Insufficient options for logging in (token or/and pair of mail and password required)'
|
53
66
|
end
|
54
67
|
end
|
55
68
|
|
56
69
|
def inspect
|
57
|
-
"#<Niconico: #{@mail || '(token)'}, #{@
|
70
|
+
"#<Niconico: #{@mail || '(token)'}, #{@logged_in ? "" : "not "}logged in>"
|
71
|
+
end
|
72
|
+
|
73
|
+
def token
|
74
|
+
return @token if @token
|
75
|
+
login unless logged_in?
|
76
|
+
|
77
|
+
@token = agent.cookie_jar.each('https://www.nicovideo.jp').find{|_| _.name == 'user_session' }.value
|
58
78
|
end
|
59
79
|
|
60
80
|
class LoginError < StandardError; end
|
@@ -65,7 +85,8 @@ class Niconico
|
|
65
85
|
page = @agent.post(URL[:login], 'mail' => @mail, 'password' => @pass)
|
66
86
|
|
67
87
|
raise LoginError, "Failed to login (x-niconico-authflag is 0)" if page.header["x-niconico-authflag"] == '0'
|
68
|
-
@
|
88
|
+
@token = nil
|
89
|
+
@logged_in = true
|
69
90
|
end
|
70
91
|
|
71
92
|
def login_with_token
|
@@ -79,7 +100,7 @@ class Niconico
|
|
79
100
|
page = @agent.get(URL[:top])
|
80
101
|
raise LoginError, "Failed to login (x-niconico-authflag is 0)" if page.header["x-niconico-authflag"] == '0'
|
81
102
|
|
82
|
-
@
|
103
|
+
@logged_in = true
|
83
104
|
end
|
84
105
|
|
85
106
|
end
|
data/lib/niconico/channel.rb
CHANGED
data/lib/niconico/mylist.rb
CHANGED
data/lib/niconico/ranking.rb
CHANGED
data/lib/niconico/version.rb
CHANGED
data/lib/niconico/video.rb
CHANGED
@@ -4,7 +4,7 @@ require 'niconico/deferrable'
|
|
4
4
|
|
5
5
|
class Niconico
|
6
6
|
def video(video_id)
|
7
|
-
login unless
|
7
|
+
login unless logged_in?
|
8
8
|
Video.new(self, video_id)
|
9
9
|
end
|
10
10
|
|
@@ -91,10 +91,33 @@ class Niconico
|
|
91
91
|
|
92
92
|
def get_video_by_other
|
93
93
|
raise VideoUnavailableError unless available?
|
94
|
+
warn "WARN: Niconico::Video#get_video_by_other is deprecated. use Video#video_cookie_jar or video_cookie_jar_file, and video_cookies with video_url instead. (Called by #{caller[0]})"
|
94
95
|
{cookie: @agent.cookie_jar.cookies(URI.parse(@video_url)),
|
95
96
|
url: video_url}
|
96
97
|
end
|
97
98
|
|
99
|
+
def video_cookies
|
100
|
+
return nil unless available?
|
101
|
+
@agent.cookie_jar.cookies(URI.parse(video_url))
|
102
|
+
end
|
103
|
+
|
104
|
+
def video_cookie_jar
|
105
|
+
raise VideoUnavailableError unless available?
|
106
|
+
video_cookies.map { |cookie|
|
107
|
+
[cookie.domain, "TRUE", cookie.path,
|
108
|
+
cookie.secure.inspect.upcase, cookie.expires.to_i,
|
109
|
+
cookie.name, cookie.value].join("\t")
|
110
|
+
}.join("\n")
|
111
|
+
end
|
112
|
+
|
113
|
+
def video_cookie_jar_file
|
114
|
+
raise VideoUnavailableError unless available?
|
115
|
+
Tempfile.new("niconico_cookie_jar_#{self.id}").tap do |io|
|
116
|
+
io.puts(video_cookie_jar)
|
117
|
+
io.flush
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
98
121
|
def inspect
|
99
122
|
"#<Niconico::Video: #{@id}.#{@type} \"#{@title}\"#{@eco ? " low":""}#{(fetched? && !@video_url) ? ' (unavailable)' : ''}#{fetched? ? '' : ' (defered)'}>"
|
100
123
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: niconico
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shota Fukumori (sora_h)
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-11-
|
11
|
+
date: 2014-11-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mechanize
|