imas-producer_schedule 0.1.5 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
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