nico_util 0.0.1 → 0.0.2
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.
- checksums.yaml +4 -4
- data/README.md +15 -1
- data/lib/illust.rb +74 -0
- data/lib/live.rb +6 -0
- data/lib/nico_util/version.rb +1 -1
- data/lib/nico_util.rb +2 -6
- data/lib/video.rb +7 -2
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9a4d9ec0e1077cf48fb35c88da752f5fd87160e6
|
|
4
|
+
data.tar.gz: 1cb82c774e49de56cf11dba57f6d9de6ded01ac0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 95f6dd28c0b30be41493abedede888195af6b482374b9bab87b951180ccb80894f746d0c2adcd888e2d401ce10ee6d7c1fad635b4b5cd50c97e4f65fc5aba522
|
|
7
|
+
data.tar.gz: 28dcf6b59eb9260199dab9a15888011e266203c4695c609418750df2915c2776d9aae7cd7c6fb6d2c8738aadb55e40889fd49336a0bfea1ad991d2b7e8e4f6ea
|
data/README.md
CHANGED
|
@@ -7,6 +7,8 @@ Utility API for niconico (<http://www.nicovideo.jp>)
|
|
|
7
7
|
* Sign in to niconico
|
|
8
8
|
* Get comments of video
|
|
9
9
|
* Get comments of live
|
|
10
|
+
* Get comments of illust
|
|
11
|
+
* Download a illust
|
|
10
12
|
|
|
11
13
|
## Install
|
|
12
14
|
|
|
@@ -36,7 +38,7 @@ pass = 'password'
|
|
|
36
38
|
# login
|
|
37
39
|
nico = NicoUtil::login email, pass
|
|
38
40
|
|
|
39
|
-
# get
|
|
41
|
+
# get comments of a video
|
|
40
42
|
comments = nico.video('sm1097445').comments
|
|
41
43
|
comments.each do |comment|
|
|
42
44
|
p comment
|
|
@@ -53,6 +55,18 @@ nico.live('lv242616226').connect do |status, data|
|
|
|
53
55
|
puts 'disconnect'
|
|
54
56
|
end
|
|
55
57
|
end
|
|
58
|
+
|
|
59
|
+
# get illust
|
|
60
|
+
illust = nico.illust('im3768140')
|
|
61
|
+
|
|
62
|
+
# get comments of a illust
|
|
63
|
+
p illust.comments
|
|
64
|
+
|
|
65
|
+
# get raw url of a illust
|
|
66
|
+
p illust.image_url
|
|
67
|
+
|
|
68
|
+
# download and save a illust
|
|
69
|
+
illust.save 'img.jpg'
|
|
56
70
|
```
|
|
57
71
|
|
|
58
72
|
## Contributing
|
data/lib/illust.rb
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
require 'json'
|
|
2
|
+
|
|
3
|
+
class NicoUtil::Niconico
|
|
4
|
+
def illust illust_id
|
|
5
|
+
Illust.new self, illust_id
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
class Illust
|
|
9
|
+
def initialize owner, illust_id
|
|
10
|
+
@owner = owner
|
|
11
|
+
if illust_id[0..1] == 'im'
|
|
12
|
+
@id = illust_id[2..-1]
|
|
13
|
+
else
|
|
14
|
+
@id = illust_id
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def comments
|
|
19
|
+
return @comments if @comments
|
|
20
|
+
|
|
21
|
+
host = 'seiga.nicovideo.jp'
|
|
22
|
+
path = "/ajax/illust/comment/list?id=#{@id}&mode=all"
|
|
23
|
+
|
|
24
|
+
response = Net::HTTP.new(host).start do |http|
|
|
25
|
+
request = Net::HTTP::Get.new(path)
|
|
26
|
+
request['cookie'] = @owner.cookie
|
|
27
|
+
http.request(request)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
comments = []
|
|
31
|
+
body = JSON.parse response.body.force_encoding('utf-8')
|
|
32
|
+
|
|
33
|
+
if body.key? 'errors'
|
|
34
|
+
raise InvalidIDError, body["errors"]
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
body["comment_list"].each do |comment|
|
|
38
|
+
comments << comment["text"]
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
@comments = comments
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def image_url
|
|
45
|
+
return @image_url if @image_url
|
|
46
|
+
|
|
47
|
+
host = 'seiga.nicovideo.jp'
|
|
48
|
+
path = "/image/source?id=#{@id}"
|
|
49
|
+
|
|
50
|
+
response = Net::HTTP.new(host).start do |http|
|
|
51
|
+
request = Net::HTTP::Get.new(path)
|
|
52
|
+
request['cookie'] = @owner.cookie
|
|
53
|
+
http.request(request)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
case response
|
|
57
|
+
when Net::HTTPRedirection
|
|
58
|
+
url = response['location']
|
|
59
|
+
@image_url = url.gsub 'lohas.nicoseiga.jp/o', 'lohas.nicoseiga.jp/priv'
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
@image_url
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def download
|
|
66
|
+
Net::HTTP.get_response(URI.parse(image_url)).body
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def save filename
|
|
70
|
+
#TODO: identify filetype [png, jpg, gif]
|
|
71
|
+
File.write(filename, download)
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
data/lib/live.rb
CHANGED
|
@@ -7,6 +7,7 @@ class NicoUtil::Niconico
|
|
|
7
7
|
def initialize owner, live_id
|
|
8
8
|
@owner = owner
|
|
9
9
|
@id = live_id
|
|
10
|
+
playerstatus
|
|
10
11
|
end
|
|
11
12
|
|
|
12
13
|
def playerstatus
|
|
@@ -24,6 +25,11 @@ class NicoUtil::Niconico
|
|
|
24
25
|
playerstatus = {}
|
|
25
26
|
body = response.body.force_encoding('utf-8')
|
|
26
27
|
doc = REXML::Document.new(body).elements['getplayerstatus']
|
|
28
|
+
|
|
29
|
+
if doc.attributes["status"] == 'fail'
|
|
30
|
+
raise InvalidIDError, doc.elements['error/code'].text
|
|
31
|
+
end
|
|
32
|
+
|
|
27
33
|
# stream = doc.elements['stream']
|
|
28
34
|
# title = stream.elements['title'].text
|
|
29
35
|
# desc = stream.elements['description'].text
|
data/lib/nico_util/version.rb
CHANGED
data/lib/nico_util.rb
CHANGED
|
@@ -3,12 +3,6 @@ require 'net/http'
|
|
|
3
3
|
require 'openssl'
|
|
4
4
|
require 'rexml/document'
|
|
5
5
|
|
|
6
|
-
# ニコ動コメント取得
|
|
7
|
-
# https://blog.nanoway.net/web/nicovideo-comment-api
|
|
8
|
-
|
|
9
|
-
# ニコ生コメント取得
|
|
10
|
-
# http://pita.s374.xrea.com/cms/75/
|
|
11
|
-
|
|
12
6
|
module NicoUtil
|
|
13
7
|
def self.login email, pass
|
|
14
8
|
Niconico.new email, pass
|
|
@@ -16,6 +10,7 @@ module NicoUtil
|
|
|
16
10
|
|
|
17
11
|
class Niconico
|
|
18
12
|
class AuthenticationError < StandardError; end
|
|
13
|
+
class InvalidIDError < StandardError; end
|
|
19
14
|
|
|
20
15
|
def initialize email, pass
|
|
21
16
|
@cookie = nil
|
|
@@ -70,4 +65,5 @@ end
|
|
|
70
65
|
|
|
71
66
|
require_relative 'video.rb'
|
|
72
67
|
require_relative 'live.rb'
|
|
68
|
+
require_relative 'illust.rb'
|
|
73
69
|
|
data/lib/video.rb
CHANGED
|
@@ -7,6 +7,7 @@ class NicoUtil::Niconico
|
|
|
7
7
|
def initialize owner, video_id
|
|
8
8
|
@owner = owner
|
|
9
9
|
@id = video_id
|
|
10
|
+
flv_info
|
|
10
11
|
end
|
|
11
12
|
|
|
12
13
|
def flv_info
|
|
@@ -23,6 +24,10 @@ class NicoUtil::Niconico
|
|
|
23
24
|
http.request(request)
|
|
24
25
|
end
|
|
25
26
|
|
|
27
|
+
if response.body[0..4] == 'error'
|
|
28
|
+
raise InvalidIDError, 'Invalid video id'
|
|
29
|
+
end
|
|
30
|
+
|
|
26
31
|
flv_info = {}
|
|
27
32
|
response.body.split('&').each do |st|
|
|
28
33
|
stt = st.split('=')
|
|
@@ -39,7 +44,7 @@ class NicoUtil::Niconico
|
|
|
39
44
|
info = flv_info()
|
|
40
45
|
uri = URI.parse info[:ms]
|
|
41
46
|
|
|
42
|
-
response = Net::HTTP.new(uri.host).start
|
|
47
|
+
response = Net::HTTP.new(uri.host).start do |http|
|
|
43
48
|
request = Net::HTTP::Post.new(uri.path)
|
|
44
49
|
thread_id = info[:thread_id]
|
|
45
50
|
version = '20061206' # 20090904
|
|
@@ -53,7 +58,7 @@ class NicoUtil::Niconico
|
|
|
53
58
|
<thread thread='#{thread_id}' version='#{version}' res_from='-#{limit_max}' fork='#{frk}'/>
|
|
54
59
|
</packet>"
|
|
55
60
|
http.request(request)
|
|
56
|
-
|
|
61
|
+
end
|
|
57
62
|
|
|
58
63
|
comments = []
|
|
59
64
|
xml = response.body.gsub('</chat>', "</chat>\n")
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: nico_util
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Tatsuya Tanaka (tattn)
|
|
@@ -68,6 +68,7 @@ files:
|
|
|
68
68
|
- Rakefile
|
|
69
69
|
- bin/console
|
|
70
70
|
- bin/setup
|
|
71
|
+
- lib/illust.rb
|
|
71
72
|
- lib/live.rb
|
|
72
73
|
- lib/nico_util.rb
|
|
73
74
|
- lib/nico_util/version.rb
|