imas-producer_schedule 0.1.5 → 0.1.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: cffb58fc54114ecfb19bc8ff8fee4217e0af51a9
4
- data.tar.gz: cdf9348eb17112dce472a7fdf2555172456368a9
2
+ SHA256:
3
+ metadata.gz: e4321804a7a892548fe77bda0321221ef7fa46b38ec7fcb4ecb13f982103eaa3
4
+ data.tar.gz: 6df38e65ae6808ef1cd45a714efe47ae7d136d811c57b8c86527500fdf09e8c0
5
5
  SHA512:
6
- metadata.gz: c73fe04fc60c75f79ed9d043c488216748623591033c55c06ef3e52ca60dac42d8233b382fd74e2b69a99a202625a59f89137e392852393c15af5bfcd393078b
7
- data.tar.gz: 45d4f5ffcab22276ad52bdb9c8e35c7049f6d58b7b45ba67ba5f74d25b1a897e2a15ca28129ab81dc776dd182c4570d9d4bd078b4190be6b990864f32e1be13c
6
+ metadata.gz: 40359d98da528eb201867ce74cb60ae65beaae15bc92c585cd1a3d198c1f3f3b377d7d0bb6c4766fd9e38d607e63767e41e9d69c3f08bbf4dadee854b48fe950
7
+ data.tar.gz: 3a21b79e2f79755cf32a62ed820a306e9c729dd47a3763bb05662a1f0cc1f5c7ac2d216dcd32668161a65d9c8e8d2048303701801376d7a9065817ce617baf2b
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in imas-producer_schedule.gemspec
@@ -29,6 +29,6 @@ Gem::Specification.new do |spec|
29
29
  spec.add_development_dependency "pry"
30
30
  spec.add_development_dependency "rspec"
31
31
  spec.add_dependency 'icalendar'
32
- spec.add_dependency 'nokogiri', '~> 1.6.5'
32
+ spec.add_dependency 'nokogiri'
33
33
  spec.add_dependency 'activesupport'
34
34
  end
@@ -1,4 +1,6 @@
1
- require "imas/producer_schedule/version"
1
+ # frozen_string_literal: true
2
+
3
+ require 'imas/producer_schedule/version'
2
4
  require 'imas/producer_schedule/client'
3
5
 
4
6
  module Imas
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'open-uri'
2
4
  require 'icalendar'
3
5
  require 'nokogiri'
@@ -26,12 +28,13 @@ module Imas::ProducerSchedule
26
28
  /^TVアニメ「アイドルマスター シンデレラガールズ」2nd SEASON$/,
27
29
  /^シンデレラガールズ劇場 第.{1,2}話放送$/,
28
30
  /^アニメ アイドルマスター SideM 第.{1,2}話放送$/,
29
-
30
- ]
31
+ /^アイドルマスター シャイニーカラーズ はばたきラジオステーション$/,
32
+ /^アニメ アイドルマスター SideM 理由あってMini! 第.{1,2}話放送$/,
33
+ /^THE IDOLM@STER MUSIC ON THE RADIO$/
34
+ ].freeze
31
35
  HEADER_OFFSET = 3
32
36
  TZID = 'Asia/Tokyo'
33
- DEFAULT_MONTH_PATH = File.join(File.expand_path('../../../../', __FILE__), 'months.yml')
34
-
37
+ DEFAULT_MONTH_PATH = File.join(File.expand_path('../../..', __dir__), 'months.yml')
35
38
 
36
39
  def initialize(month_path = DEFAULT_MONTH_PATH)
37
40
  @months = ::YAML.load_file(month_path)
@@ -40,30 +43,24 @@ module Imas::ProducerSchedule
40
43
  def output_cal(output_dir = '.')
41
44
  # カレンダー情報定義
42
45
  cals = [
43
- { name:"プロデューサー予定表",
44
- file:"schedule.ics",
45
- test: lambda{|schedule| true },
46
- },
47
- { name:"定期配信番組除外版",
48
- file:"schedule_irregular.ics",
49
- test: lambda{|schedule| REGULAR_ARTICLE.none? {|re| schedule[:article] =~ re} },
50
- },
51
- { name:"定期配信番組のみ",
52
- file:"schedule_regular.ics",
53
- test: lambda{|schedule| REGULAR_ARTICLE.any? {|re| schedule[:article] =~ re} },
54
- },
55
- { name:"発売日",
56
- file:"release_day.ics",
57
- test: lambda{|schedule| schedule[:time] == "発売日"}
58
- },
59
- { name:"イベント" ,
60
- file:"event.ics",
61
- test: lambda{|schedule| schedule[:genre].include? "イベント"}
62
- },
63
- { name:"ニコ生" ,
64
- file:"nico_live.ics",
65
- test: lambda{|schedule| schedule[:genre].include? "ニコ生"}
66
- },
46
+ { name: 'プロデューサー予定表',
47
+ file: 'schedule.ics',
48
+ test: ->(_schedule) { true } },
49
+ { name: '定期配信番組除外版',
50
+ file: 'schedule_irregular.ics',
51
+ test: ->(schedule) { REGULAR_ARTICLE.none? { |re| schedule[:article] =~ re } } },
52
+ { name: '定期配信番組のみ',
53
+ file: 'schedule_regular.ics',
54
+ test: ->(schedule) { REGULAR_ARTICLE.any? { |re| schedule[:article] =~ re } } },
55
+ { name: '発売日',
56
+ file: 'release_day.ics',
57
+ test: ->(schedule) { schedule[:time] == '発売日' } },
58
+ { name: 'イベント',
59
+ file: 'event.ics',
60
+ test: ->(schedule) { schedule[:genre].include? 'イベント' } },
61
+ { name: 'ニコ生',
62
+ file: 'nico_live.ics',
63
+ test: ->(schedule) { schedule[:genre].include? 'ニコ生' } }
67
64
  ]
68
65
 
69
66
  # タイトル・タイムゾーン設定
@@ -93,7 +90,7 @@ module Imas::ProducerSchedule
93
90
 
94
91
  # 日付時刻
95
92
  if s[:from].nil?
96
- e.dtstart = Icalendar::Values::Date.new(sprintf("%04d%02d%02d", year, month, day), 'tzid' => TZID)
93
+ e.dtstart = Icalendar::Values::Date.new(format('%04d%02d%02d', year, month, day), 'tzid' => TZID)
97
94
  else
98
95
  st_tm = to_datetime(year, month, day, *split_time(s[:from]))
99
96
  ed_tm = st_tm
@@ -120,7 +117,6 @@ module Imas::ProducerSchedule
120
117
  cals.each do |c|
121
118
  c[:cal].add_event e if c[:test].call(s)
122
119
  end
123
-
124
120
  end
125
121
  end
126
122
 
@@ -129,39 +125,40 @@ module Imas::ProducerSchedule
129
125
  c[:cal].publish
130
126
  open(File.join(output_dir, c[:file]), 'w') { |f| f.write(c[:cal].to_ical) }
131
127
  end
132
-
133
128
  end
134
-
129
+
135
130
  private
136
131
 
137
- def to_schedule tr
132
+ def to_schedule(tr)
138
133
  # ジャンル
139
134
  genre = tr.at('.//td[@class="genre2"]').try(:text)
140
135
  # 内容・リンク
141
136
  article = tr.at('.//td[@class="article2"]').try(:text)
142
- link = tr.at('.//td[@class="article2"]/a').try(:[], 'href')
137
+ link = tr.at('.//td[@class="article2"]/a').try(:[], 'href')
143
138
  # 日付
144
139
  day = tr.at('.//td[@class="day2"]/img')
145
- day = tr.at('.//td[@class="day"]/img') unless day
140
+ day ||= tr.at('.//td[@class="day"]/img')
146
141
  day = day['src'][-6..-5].to_i if day
147
142
  # 時刻
148
- time = tr.at('.//td[@class="time2"]').try(:text)
143
+ time = tr.at('.//td[@class="time2"]').try(:text)
149
144
  # From-To
150
145
  from, to = time.try(:tr, '1234567890:', '1234567890:').try(:scan, /\d\d:\d\d/)
151
146
  # 出演者
152
- performance = tr.at('.//td[@class="performance2"]/img').try(:[], 'alt')
147
+ performance = tr.at('.//td[@class="performance2"]/img').try(:[], 'alt')
153
148
  # 詳細
154
149
  description = "時間:#{time}\n"
155
- description << "出演:#{performance}\n"
156
- description << "記事:#{article}\n"
157
- description << "リンク:#{link}\n"
150
+ description += "出演:#{performance}\n"
151
+ description += "記事:#{article}\n"
152
+ description += "リンク:#{link}\n"
158
153
 
159
154
  # ハッシュ生成
160
- {day:day, time:time, genre:genre.try(:strip), article:article, link:link, from:from, to:to, description:description} unless article.blank?
155
+ unless article.blank?
156
+ { day: day, time: time, genre: genre.try(:strip), article: article, link: link, from: from, to: to, description: description }
157
+ end
161
158
  end
162
159
 
163
- def parse_calendar url
164
- html = open(url) { |f| f.read }
160
+ def parse_calendar(url)
161
+ html = URI.open(url, &:read)
165
162
  charset = 'utf-8'
166
163
 
167
164
  # htmlをパースしてオブジェクトを生成
@@ -171,7 +168,7 @@ module Imas::ProducerSchedule
171
168
  end.compact
172
169
  end
173
170
 
174
- def to_datetime year, month, day, hour, min
171
+ def to_datetime(year, month, day, hour, min)
175
172
  if hour >= 24
176
173
  hour -= 24
177
174
  exceed = true
@@ -181,11 +178,11 @@ module Imas::ProducerSchedule
181
178
  Icalendar::Values::DateTime.new datetime, 'tzid' => TZID
182
179
  end
183
180
 
184
- def split_time hm_string
181
+ def split_time(hm_string)
185
182
  hm_string.split(':').map(&:to_i)
186
183
  end
187
184
 
188
- def set_timezone cal
185
+ def set_timezone(cal)
189
186
  cal.timezone do |t|
190
187
  t.tzid = TZID
191
188
  t.standard do |s|
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Imas
2
4
  module ProducerSchedule
3
- VERSION = "0.1.5"
5
+ VERSION = '0.1.7'
4
6
  end
5
7
  end
data/months.yml CHANGED
@@ -27,3 +27,65 @@
27
27
  - [2016, '08', 8, 'c']
28
28
  - [2016, '09', 9, 'c']
29
29
  - [2016, '10', 10, 'c']
30
+ - [2016, '11', 10, 'c']
31
+ - [2016, '12', 10, 'c']
32
+ - [2017, '1', 10, 'c']
33
+ - [2017, '2', 10, 'c']
34
+ - [2017, '3', 10, 'c']
35
+ - [2017, '4', 10, 'c']
36
+ - [2017, '5', 10, 'c']
37
+ - [2017, '6', 10, 'c']
38
+ - [2017, '7', 10, 'c']
39
+ - [2017, '8', 10, 'c']
40
+ - [2017, '9', 10, 'c']
41
+ - [2017, '10', 10, 'c']
42
+ - [2017, '11', 10, 'c']
43
+ - [2017, '12', 10, 'c']
44
+ - [2018, '1', 10, 'c']
45
+ - [2018, '2', 10, 'c']
46
+ - [2018, '3', 10, 'c']
47
+ - [2018, '4', 10, 'c']
48
+ - [2018, '5', 10, 'c']
49
+ - [2018, '6', 10, 'c']
50
+ - [2018, '7', 10, 'c']
51
+ - [2018, '8', 10, 'c']
52
+ - [2018, '9', 10, 'c']
53
+ - [2018, '10', 10, 'c']
54
+ - [2018, '11', 10, 'c']
55
+ - [2018, '12', 10, 'c']
56
+ - [2019, '1', 10, 'c']
57
+ - [2019, '2', 10, 'c']
58
+ - [2019, '3', 10, 'c']
59
+ - [2019, '4', 10, 'c']
60
+ - [2019, '5', 10, 'c']
61
+ - [2019, '6', 10, 'c']
62
+ - [2019, '7', 10, 'c']
63
+ - [2019, '8', 10, 'c']
64
+ - [2019, '9', 10, 'c']
65
+ - [2019, '10', 10, 'c']
66
+ - [2019, '11', 10, 'c']
67
+ - [2019, '12', 10, 'c']
68
+ - [2020, '1', 10, 'c']
69
+ - [2020, '2', 10, 'c']
70
+ - [2020, '3', 10, 'c']
71
+ - [2020, '4', 10, 'c']
72
+ - [2020, '5', 10, 'c']
73
+ - [2020, '6', 10, 'c']
74
+ - [2020, '7', 10, 'c']
75
+ - [2020, '8', 10, 'c']
76
+ - [2020, '9', 10, 'c']
77
+ - [2020, '10', 10, 'c']
78
+ - [2020, '11', 10, 'c']
79
+ - [2020, '12', 10, 'c']
80
+ - [2021, '1', 10, 'c']
81
+ - [2021, '2', 10, 'c']
82
+ - [2021, '3', 10, 'c']
83
+ - [2021, '4', 10, 'c']
84
+ - [2021, '5', 10, 'c']
85
+ - [2021, '6', 10, 'c']
86
+ - [2021, '7', 10, 'c']
87
+ - [2021, '8', 10, 'c']
88
+ - [2021, '9', 10, 'c']
89
+ - [2021, '10', 10, 'c']
90
+ - [2021, '11', 10, 'c']
91
+ - [2021, '12', 10, 'c']
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: imas-producer_schedule
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - gomao9
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-11-06 00:00:00.000000000 Z
11
+ date: 2019-12-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -84,16 +84,16 @@ dependencies:
84
84
  name: nokogiri
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: 1.6.5
89
+ version: '0'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: 1.6.5
96
+ version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: activesupport
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -149,8 +149,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
149
149
  - !ruby/object:Gem::Version
150
150
  version: '0'
151
151
  requirements: []
152
- rubyforge_project:
153
- rubygems_version: 2.6.12
152
+ rubygems_version: 3.0.3
154
153
  signing_key:
155
154
  specification_version: 4
156
155
  summary: calendar generator for im@s producers