nhk-easy-ruby 1.0.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7b490c83629756a5bf6ff2531a4ac1bfeb326f53
4
+ data.tar.gz: 603556b7258378a99bad159c1c4f0d4d270a704b
5
+ SHA512:
6
+ metadata.gz: 18ecb9457ece17ec43cac97667aa6288fbe70289fbe56c4a301034b16377e561a2b4f8c0e39319936c84d8b483cf80ba51114159e51e1ae3eea0a662fc5aad0a
7
+ data.tar.gz: e8b71d8e017a652bc89ab4d6207a988537694ed27fa161f000d0a048be00980b810391fc403e9cfc881c622ee04b54d602ff03486733f39b6684505a46c15cf4
@@ -0,0 +1,96 @@
1
+ require 'json'
2
+ require 'net/http'
3
+
4
+ module NHK
5
+ module Easy
6
+ BASE_URI = URI("http://www3.nhk.or.jp/news/easy/")
7
+ BASE_MOVIE_URI = URI("rtmp://flv.nhk.or.jp/ondemand/flv/news/&movie=")
8
+
9
+ class Client
10
+ def news_list
11
+ # Encode ascii -> utf-8 and remove bom
12
+ data = Net::HTTP
13
+ .get(BASE_URI+"news-list.json")
14
+ .force_encoding('UTF-8')
15
+ .gsub("\xEF\xBB\xBF", '')
16
+
17
+ json = Parser.new(data).parse!
18
+ news_list = NewsList.new
19
+ json.map do |list|
20
+ list.keys.each do |date|
21
+ list[date].each do |item|
22
+ news_list.entries << News.new(date: date, item: item)
23
+ end
24
+ end
25
+ end
26
+
27
+ return news_list
28
+ end
29
+ end
30
+
31
+ class NewsList
32
+ attr_accessor :entries
33
+
34
+ def initialize
35
+ @entries = []
36
+ end
37
+ end
38
+
39
+ class News
40
+ attr_reader :date
41
+ attr_accessor :news_id, :title, :news_publication_time,
42
+ :has_news_web_image, :has_news_web_movie, :has_news_easy_image,
43
+ :has_news_easy_movie, :has_news_easy_voice, :news_web_image_uri,
44
+ :news_web_movie_uri, :news_easy_image_uri, :news_easy_movie_uri,
45
+ :news_easy_voice_uri, :news_web_url
46
+
47
+ def initialize(date: Date.today.to_s, item: {})
48
+ @date = date
49
+ parse_item(item)
50
+ end
51
+
52
+ def news_web_image_url
53
+ NHK::Easy::BASE_URI+"#{news_id}/#{news_web_image_uri}"
54
+ end
55
+
56
+ def news_web_movie_url
57
+ NHK::Easy::BASE_MOVIE_URI+news_web_movie_uri
58
+ end
59
+
60
+ def news_easy_image_url
61
+ NHK::Easy::BASE_URI+"#{news_id}/#{news_easy_image_uri}"
62
+ end
63
+
64
+ def news_easy_movie_url
65
+ NHK::Easy::BASE_MOVIE_URI+news_easy_movie_uri
66
+ end
67
+
68
+ def news_easy_voice_url
69
+ NHK::Easy::BASE_URI+"#{news_id}/#{news_easy_voice_uri}"
70
+ end
71
+
72
+ def has_news_web_image?; !!has_news_web_image; end
73
+ def has_news_web_movie?; !!has_news_web_movie; end
74
+ def has_news_easy_image?; !!has_news_easy_image; end
75
+ def has_news_easy_movie?; !!has_news_easy_movie; end
76
+ def has_news_easy_voice?; !!has_news_easy_voice; end
77
+
78
+ private
79
+ def parse_item(item)
80
+ item.each do |key, value|
81
+ self.send("#{key}=", value) rescue next
82
+ end
83
+ end
84
+ end
85
+
86
+ class Parser
87
+ def initialize data={}
88
+ @data = data
89
+ end
90
+
91
+ def parse!
92
+ JSON.parse @data
93
+ end
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,15 @@
1
+ Gem::Specification.new do |spec|
2
+ spec.name = "nhk-easy-ruby"
3
+ spec.version = "1.0.0"
4
+ spec.authors = ["Zachary Scott"]
5
+ spec.email = ["e@zzak.io"]
6
+
7
+ spec.summary = %q{Ruby client library for NHK News Web Easy.}
8
+ spec.description = %q{Read the news with this Ruby interface for NHK's public API.}
9
+ spec.homepage = "https://rubygems.org/gems/nhk-easy-ruby"
10
+ spec.license = "MIT"
11
+
12
+ spec.files = Dir.glob(["lib/**/*", "nhk-easy-ruby.gemspec"])
13
+
14
+ spec.require_paths = ["lib"]
15
+ end
metadata ADDED
@@ -0,0 +1,46 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nhk-easy-ruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Zachary Scott
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-06-15 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Read the news with this Ruby interface for NHK's public API.
14
+ email:
15
+ - e@zzak.io
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/nhk-easy-ruby.rb
21
+ - nhk-easy-ruby.gemspec
22
+ homepage: https://rubygems.org/gems/nhk-easy-ruby
23
+ licenses:
24
+ - MIT
25
+ metadata: {}
26
+ post_install_message:
27
+ rdoc_options: []
28
+ require_paths:
29
+ - lib
30
+ required_ruby_version: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ required_rubygems_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirements: []
41
+ rubyforge_project:
42
+ rubygems_version: 2.4.5
43
+ signing_key:
44
+ specification_version: 4
45
+ summary: Ruby client library for NHK News Web Easy.
46
+ test_files: []