narou 3.0.2 → 3.0.3

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of narou might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ccb0686a19aefcaff967d74ff23224eb00116d97
4
- data.tar.gz: a5df9475ebfade58b52aa6d758627afa23247d6b
3
+ metadata.gz: b72005dc3f53a757cf0baa8bcfb3eb71cb039079
4
+ data.tar.gz: c8a87140d7333724f722754575e3e627288c7fcf
5
5
  SHA512:
6
- metadata.gz: 77c4f54cc560cbddb5a9fac4629db080890140c7ca85ffafbb75dd175cc9dd8befcbd5fbd0e0673f2cc42d13ce2e6bb954b39f2487b1002b4d556decc06fabef
7
- data.tar.gz: 4f8e1fd70021c4c05c44eacf9c9875f214175f1e0f344993aeb9347b1ac5be141dd8f4ce10703509c6eb928f14824262d2d8627eaf1877f6026ec1b16b8a022a
6
+ metadata.gz: 874775767768e313e6b971548f2a23595fcb1e825def6b2d166683260a30224922bf1d1da87e769129263975d6c96036a171e1e6996d1f1b58d54fc428650f99
7
+ data.tar.gz: ac511f95ddf151c004f71248fc494f02a4db3ae3e5102e147007b8dbce717202cab80f642367f0d8bf466ee56825996850dfd383a23f1ca8103895c76857133e
@@ -2,6 +2,17 @@
2
2
  更新履歴 - ChangeLog
3
3
  ====================
4
4
 
5
+ 3.0.3 : 2016/12/03
6
+ -------------------
7
+ #### 仕様変更
8
+ - カクヨムの小説の最新話掲載日が今までは「最終更新日」から取得していたのを、
9
+ 目次の一番新しい話の日付を割り当てるように変更
10
+
11
+ #### 修正内容
12
+ - その他の小説の最新話掲載日を確認しようとするとクラッシュする場合がある問題
13
+ + カクヨムの小説が含まれていると発生していた
14
+
15
+
5
16
  3.0.2 : 2016/11/29
6
17
  -------------------
7
18
  #### 修正内容
data/README.md CHANGED
@@ -33,6 +33,17 @@ Narou.rb ― 「小説家になろう」「小説を読もう!」ダウンロ
33
33
  更新履歴 - ChangeLog
34
34
  --------------------
35
35
 
36
+ 3.0.3 : 2016/12/03
37
+ -------------------
38
+ #### 仕様変更
39
+ - カクヨムの小説の最新話掲載日が今までは「最終更新日」から取得していたのを、
40
+ 目次の一番新しい話の日付を割り当てるように変更
41
+
42
+ #### 修正内容
43
+ - その他の小説の最新話掲載日を確認しようとするとクラッシュする場合がある問題
44
+ + カクヨムの小説が含まれていると発生していた
45
+
46
+
36
47
  3.0.2 : 2016/11/29
37
48
  -------------------
38
49
  #### 修正内容
@@ -60,46 +60,30 @@ module Command
60
60
  progressbar.output(index)
61
61
  interval.wait
62
62
  begin
63
- setting = Downloader.get_sitesetting_by_target(id)
64
- info = NovelInfo.load(setting)
65
- dates = if info
66
- {
67
- "novelupdated_at" => info["novelupdated_at"],
68
- "general_lastup" => info["general_lastup"]
69
- }
70
- else
71
- # 小説情報ページがない場合は目次から取得する
72
- get_latest_dates(id)
73
- end
63
+ downloader = Downloader.new(id)
64
+ next unless downloader.get_latest_table_of_contents(through_error: true)
65
+ dates = {
66
+ "novelupdated_at" => downloader.get_novelupdated_at,
67
+ "general_lastup" => downloader.get_general_lastup
68
+ }
74
69
  rescue OpenURI::HTTPError, Errno::ECONNRESET
75
- setting.clear
70
+ downloader.setting.clear
76
71
  next
77
72
  end
78
73
  data = @database[id]
79
74
  data.merge!(dates)
80
75
  last_check_date = data["last_check_date"] || data["last_update"]
81
- if data["novelupdated_at"] > last_check_date
76
+ novelupdated_at = data["novelupdated_at"]
77
+ if novelupdated_at && novelupdated_at > last_check_date
82
78
  tags = @database[id]["tags"] ||= []
83
79
  tags << Narou::MODIFIED_TAG unless tags.include?(Narou::MODIFIED_TAG)
84
80
  end
85
81
  data["last_check_date"] = Time.now
86
- setting.clear
82
+ downloader.setting.clear
87
83
  end
88
84
  ensure
89
85
  progressbar.clear if progressbar
90
86
  end
91
-
92
- # オンラインの目次からgeneral_lastupを取得する
93
- # ただし、toc.yaml に最新話が存在し、かつsubdateが設定されていたらそれを使う
94
- def get_latest_dates(target)
95
- downloader = Downloader.new(target)
96
- old_toc = downloader.load_toc_file
97
- downloader.get_latest_table_of_contents(old_toc, through_error: true)
98
- {
99
- "novelupdated_at" => downloader.get_novelupdated_at,
100
- "general_lastup" => downloader.get_general_lastup
101
- }
102
- end
103
87
  end
104
88
  end
105
89
  end
@@ -35,7 +35,7 @@ class Downloader
35
35
  DISPLAY_LIMIT_DIGITS = 4 # indexの表示桁数限界
36
36
  DEFAULT_INTERVAL_WAIT = 0.7 # download.interval のデフォルト値(秒)
37
37
 
38
- attr_reader :id
38
+ attr_reader :id, :setting
39
39
 
40
40
  class InvalidTarget < StandardError; end
41
41
 
@@ -573,11 +573,15 @@ class Downloader
573
573
  FileUtils.remove_entry_secure(@cache_dir, true) if @cache_dir
574
574
  end
575
575
 
576
- def __search_latest_update_time(key, subtitles)
576
+ def __search_latest_update_time(key, subtitles, subkey: nil)
577
577
  latest = Time.new(0)
578
578
  subtitles.each do |subtitle|
579
- time = Helper.date_string_to_time(subtitle[key])
580
- latest = time if latest < time
579
+ value = subtitle[key]
580
+ if value.to_s.empty? && subkey
581
+ value = subtitle[subkey]
582
+ end
583
+ time = Helper.date_string_to_time(value)
584
+ latest = time if time && latest < time
581
585
  end
582
586
  latest
583
587
  end
@@ -590,7 +594,7 @@ class Downloader
590
594
  if info["novelupdated_at"]
591
595
  info["novelupdated_at"]
592
596
  else
593
- __search_latest_update_time("subupdate", @setting["subtitles"])
597
+ __search_latest_update_time("subupdate", @setting["subtitles"], subkey: "subdate")
594
598
  end
595
599
  end
596
600
 
@@ -966,7 +970,7 @@ class Downloader
966
970
  "subtitle" => @setting["title"],
967
971
  "file_subtitle" => title_to_filename(@setting["title"]),
968
972
  "subdate" => info["general_firstup"],
969
- "subupdate" => info["novelupdated_at"]
973
+ "subupdate" => info["novelupdated_at"] || info["general_lastup"] || info["general_firstup"]
970
974
  }
971
975
  [subtitle]
972
976
  end
@@ -289,7 +289,12 @@ module Helper
289
289
  # 日付形式の文字列をTime型に変換する
290
290
  #
291
291
  def date_string_to_time(date)
292
- date ? Time.parse(date.sub(/[\((].+?[\))]/, "").tr("年月日時分秒@;", "///::: :")) : nil
292
+ case date
293
+ when Time
294
+ date
295
+ when String
296
+ Time.parse(date.sub(/[\((].+?[\))]/, "").tr("年月日時分秒@;", "///::: :"))
297
+ end
293
298
  rescue ArgumentError
294
299
  nil
295
300
  end
@@ -73,8 +73,6 @@ class NovelInfo
73
73
  %w(general_firstup novelupdated_at general_lastup).each do |elm|
74
74
  result[elm] = Helper.date_string_to_time(@setting[elm])
75
75
  end
76
- result["novelupdated_at"] ||= result["general_firstup"]
77
- result["general_lastup"] ||= result["novelupdated_at"]
78
76
 
79
77
  result
80
78
  end
@@ -3,4 +3,4 @@
3
3
  # Copyright 2013 whiteleaf. All rights reserved.
4
4
  #
5
5
 
6
- Version = "3.0.2"
6
+ Version = "3.0.3"
@@ -32,6 +32,17 @@ Gem::Specification.new do |gem|
32
32
  install_message = <<-EOS
33
33
  #{"*" * 60}
34
34
 
35
+ 3.0.3 : 2016/12/03
36
+ -------------------
37
+ #### 仕様変更
38
+ - カクヨムの小説の最新話掲載日が今までは「最終更新日」から取得していたのを、
39
+ 目次の一番新しい話の日付を割り当てるように変更
40
+
41
+ #### 修正内容
42
+ - その他の小説の最新話掲載日を確認しようとするとクラッシュする場合がある問題
43
+ + カクヨムの小説が含まれていると発生していた
44
+
45
+
35
46
  3.0.2 : 2016/11/29
36
47
  -------------------
37
48
  #### 修正内容
@@ -58,8 +58,8 @@ s: "あらすじ</td><td colspan=3 bgcolor=#FFFFFF>(?<story>.+?)</td>"
58
58
  # general_firstup 初回掲載日
59
59
  gf: 掲載開始</td><td>(?<general_firstup>.+?)</td>
60
60
 
61
- # novelupdated_at 小説の更新時刻。最新投稿日で代用
62
- nu: 最新投稿</td><td>(?<novelupdated_at>.+?)</td>
61
+ # novelupdated_at 小説の更新時刻
62
+ nu: null
63
63
 
64
64
  # general_lastup 最終掲載日
65
65
  gl: 最新投稿</td><td>(?<general_lastup>.+?)</td>
@@ -64,18 +64,16 @@ s: |-
64
64
 
65
65
  # general_firstup 初回掲載日
66
66
  gf: |-2
67
- <dt><span>公開日</span></dt>
68
- <dd><time itemprop="datePublished" datetime="(?<general_firstup>.+?)">.+?</time>
67
+ <dt><span>公開日</span></dt>
68
+ <dd><time itemprop="datePublished" datetime="(?<general_firstup>.+?)">.+?</time>
69
69
 
70
70
  # novelupdated_at 小説の更新時刻。最終掲載日で代用
71
71
  nu: |-2
72
- <dt><span>最終更新日</span></dt>
73
- <dd><time itemprop="dateModified" datetime="(?<novelupdated_at>.+?)">.+?</time>
72
+ <dt><span>最終更新日</span></dt>
73
+ <dd><time itemprop="dateModified" datetime="(?<novelupdated_at>.+?)">.+?</time>
74
74
 
75
- # general_lastup 最終掲載日
76
- gl: |-2
77
- <dt><span>最終更新日</span></dt>
78
- <dd><time itemprop="dateModified" datetime="(?<general_lastup>.+?)">.+?</time>
75
+ # general_lastup 最新話掲載日
76
+ gl: null
79
77
 
80
78
  # writer 作者名
81
79
  w: |-
@@ -58,8 +58,8 @@ s: "あらすじ</td><td colspan=3 bgcolor=#FFFFFF>(?<story>.+?)</td>"
58
58
  # general_firstup 初回掲載日
59
59
  gf: 掲載開始</td><td>(?<general_firstup>.+?)</td>
60
60
 
61
- # novelupdated_at 小説の更新時刻。最新投稿日で代用
62
- nu: 最新投稿</td><td>(?<novelupdated_at>.+?)</td>
61
+ # novelupdated_at 小説の更新時刻
62
+ nu: null
63
63
 
64
64
  # general_lastup 最終掲載日
65
65
  gl: 最新投稿</td><td>(?<general_lastup>.+?)</td>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: narou
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.2
4
+ version: 3.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - whiteleaf7
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-28 00:00:00.000000000 Z
11
+ date: 2016-12-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: termcolorlight
@@ -485,6 +485,17 @@ metadata: {}
485
485
  post_install_message: |
486
486
  ************************************************************
487
487
 
488
+ 3.0.3 : 2016/12/03
489
+ -------------------
490
+ #### 仕様変更
491
+ - カクヨムの小説の最新話掲載日が今までは「最終更新日」から取得していたのを、
492
+ 目次の一番新しい話の日付を割り当てるように変更
493
+
494
+ #### 修正内容
495
+ - その他の小説の最新話掲載日を確認しようとするとクラッシュする場合がある問題
496
+ + カクヨムの小説が含まれていると発生していた
497
+
498
+
488
499
  3.0.2 : 2016/11/29
489
500
  -------------------
490
501
  #### 修正内容