rget 4.8.2 → 4.8.3

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/nicovideo.rb +33 -23
  3. data/rget.gemspec +1 -1
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '08a6e1d811d25034273a863fd06a6380e367fd5cd1e68bb3cbe8535de865a7ab'
4
- data.tar.gz: 842d8c9e1886a91958b5585e32ff1910ca8fac2ba0e0ff2f83df8109c848e3e4
3
+ metadata.gz: 3ef68f95f3fbafd9b06628962504a762ea8fa4782d98e87a006a0778f19d92e3
4
+ data.tar.gz: 698f889ccbf793023b8ee5409aee34039f759cb1d650c453fd6a38524a456fa2
5
5
  SHA512:
6
- metadata.gz: 2f44d8305dc261a7ace1a15dfc251db6ad2708576f63b22c05f6060ab3dc5bf6bc02bcf20bf8d93249b58b8b06a811be08d8d5d66364609f6a05fc2c5c6b0462
7
- data.tar.gz: 6c7d7ec810bf2395264153b2f46c220199ecc2dc515815e35250e842c12e228e849c3131b857c8af109868b7b84c3c074e93ff4dbc6d601227641bdecf239840
6
+ metadata.gz: 55a57b0f4190c235469156e8a9af6b87d0be727e2988d5d6ebe32110d89d1bfb4f269e79712dc7ed0170f3d05704aa9d870a2c2b8546a3619bea8d73dd89ff20
7
+ data.tar.gz: 16af48cd344bb6ff1e6638b4b5838605d8daae2d7bfd6ba4e5ba880ccc3451ee97aeda07026dea1c56939693db8878868e61f68742f9fe26c5e0a24a02ac6ee5
@@ -6,6 +6,8 @@ require 'open-uri'
6
6
  require 'rss'
7
7
 
8
8
  class Nicovideo < WebRadio
9
+ class ForbiddenError < StandardError; end
10
+
9
11
  def initialize(params, options)
10
12
  account = Pit::get('nicovideo', :require => {
11
13
  :id => 'your nicovideo id',
@@ -17,29 +19,36 @@ class Nicovideo < WebRadio
17
19
  end
18
20
 
19
21
  def download
22
+ offset = 0
20
23
  begin
21
- video = get_video(@url)
22
- rescue NoMethodError
23
- raise DownloadError.new('video not found')
24
- end
25
- @cover = thumbinfo(video, 'thumbnail_url') unless @cover
26
- title = video.title || thumbinfo(video, 'title') || video.id
27
- title.tr!('0-9', '0-9')
28
- serial = title.scan(/(?:[#第]|[  ]EP|track-)(\d+)|/).flatten.compact[0].to_i
29
- if serial == 0
30
- tmp = title.scan(/\d+/).last.to_i
31
- serial = tmp if tmp > 0
32
- end
33
- appendix = title =~ /おまけ|アフタートーク/ ? 'a' : ''
34
- @file = "#{@label}##{'%02d' % serial}#{appendix}.#{video.type}"
35
- @mp3_file = @file.sub(/\....$/, '.mp3')
36
- mp3nize(@file, @mp3_file) do
37
- loop do
38
- print '.'
39
- _, err, status = Open3.capture3("youtube-dl -f mp4 -o #{@file} --netrc #{video.url}")
40
- break if status == 0
41
- raise DownloadError.new(err) unless err =~ /403: Forbidden/
24
+ video = get_video(@url, offset)
25
+ @cover = thumbinfo(video, 'thumbnail_url') unless @cover
26
+ title = video.title || thumbinfo(video, 'title') || video.id
27
+ title.tr!('0-9', '0-9')
28
+ serial = title.scan(/(?:[#第]|[  ]EP|track-)(\d+)|/).flatten.compact[0].to_i
29
+ if serial == 0
30
+ tmp = title.scan(/\d+/).last.to_i
31
+ serial = tmp if tmp > 0
42
32
  end
33
+ appendix = title =~ /おまけ|アフタートーク/ ? 'a' : ''
34
+ @file = "#{@label}##{'%02d' % serial}#{appendix}.#{video.type}"
35
+ @mp3_file = @file.sub(/\....$/, '.mp3')
36
+ mp3nize(@file, @mp3_file) do
37
+ loop do
38
+ print '.'
39
+ _, err, status = Open3.capture3("youtube-dl -f mp4 -o #{@file} --netrc #{video.url}")
40
+ break if status == 0
41
+ next if err =~ /403: Forbidden/
42
+ raise ForbiddenError.new("Could not access to #{video.url}") if err =~ /TypeError/
43
+ raise DownloadError.new(err)
44
+ end
45
+ end
46
+ rescue ForbiddenError
47
+ puts "#{$!.message}, try next."
48
+ offset += 1
49
+ retry
50
+ rescue NotFoundError
51
+ raise DownloadError.new('video not found')
43
52
  end
44
53
  end
45
54
 
@@ -61,9 +70,8 @@ class Nicovideo < WebRadio
61
70
  end
62
71
 
63
72
  private
64
- def get_video(list_url)
73
+ def get_video(list_url, offset = 0)
65
74
  video_url = nil
66
- offset = 0
67
75
  begin
68
76
  begin
69
77
  rss = RSS::Parser.parse(open(list_url).read)
@@ -76,6 +84,8 @@ private
76
84
  video_url = "http://www.nicovideo.jp#{url}"
77
85
  end
78
86
  video = @nico.video(Pathname(URI(video_url).path).basename.to_s)
87
+ rescue NoMethodError
88
+ raise NotFoundError.new('video not found')
79
89
  rescue Net::HTTPForbidden, Mechanize::ResponseCodeError
80
90
  offset += 1
81
91
  retry
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "rget"
7
- spec.version = "4.8.2"
7
+ spec.version = "4.8.3"
8
8
  spec.authors = ["TADA Tadashi"]
9
9
  spec.email = ["t@tdtds.jp"]
10
10
  spec.description = %q{Downloading newest radio programs on the web. Supported radio stations are hibiki, onsen, niconico, freshlive, himalaya and asobi store.}
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rget
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.8.2
4
+ version: 4.8.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - TADA Tadashi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-09 00:00:00.000000000 Z
11
+ date: 2019-08-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor