AnimeDL 0.2.4 → 1.0.5
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 +5 -5
- data/.gitignore +3 -0
- data/LICENSE.txt +0 -0
- data/README.md +1 -2
- data/anime_dl.gemspec +1 -1
- data/bin/anime-dl +9 -10
- data/fmab_anime_dl.jpg +0 -0
- data/lib/anime_dl.rb +18 -4
- data/lib/anime_dl/anime_heaven.rb +3 -7
- data/lib/episode.rb +9 -11
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 0e5e478e8a86cb5f8215af8aad1586028288f8cc8106eacf459c48d1bd99100d
|
4
|
+
data.tar.gz: 76b3925b61f39259701df307aa9e2b46e8d6dcf034aec6576e88da15623cdc9f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f5bbd47f17f794a72045563b676fa125aa9e3a45e730528fd3b5fd9ac3be7526bcf4bf7242bb1b8681b787175caf1d498e3a4c5fe3aaeffbff1873494142aecf
|
7
|
+
data.tar.gz: a9e7b929234af8b7a44e9a1cfc6af576894e5eaeaeadff3dc96a0726a8db3338d78d4e4c7a3ae6c112f27ccf730f348eb71a83a1bae9dfce253fd9f6b05aaa2c
|
data/.gitignore
CHANGED
data/LICENSE.txt
CHANGED
File without changes
|
data/README.md
CHANGED
@@ -57,8 +57,7 @@ On choosing a particular anime, the user can then choose to get links or downloa
|
|
57
57
|
|
58
58
|
`$ anime-dl` - (downloads videos to './anime_name/')]
|
59
59
|
`$ anime-dl -f .` - (downloads videos to './')]
|
60
|
-
`$ anime-dl -f /path/to/directory` - (downloads videos to '/path/to/directory/
|
61
|
-
`$ anime-dl -f /path/to/directory/` - (downloads videos to '/path/to/directory/anime_name/')]
|
60
|
+
`$ anime-dl -f /path/to/directory` - (downloads videos to '/path/to/directory/')]
|
62
61
|
|
63
62
|
|
64
63
|
### Specifying Episodes:
|
data/anime_dl.gemspec
CHANGED
data/bin/anime-dl
CHANGED
@@ -6,7 +6,7 @@ require "fileutils"
|
|
6
6
|
# APP OPTIONS
|
7
7
|
options = { episode: true, file: nil, quiet: false }
|
8
8
|
help_statements = {
|
9
|
-
episode: %Q[Prevents the app from asking for an Episodes prompt. Gets
|
9
|
+
episode: %Q[Prevents the app from asking for an Episodes prompt. Gets details for all episodes.],
|
10
10
|
file: %Q[Provide location to store extracted details. Creates sub-directories as needed. (Usage Examples below).],
|
11
11
|
quiet: %Q[Suppresses large, in-program help statements.],
|
12
12
|
help: %Q[Shows this message and exits.],
|
@@ -45,7 +45,7 @@ ARGV.options do |opts|
|
|
45
45
|
|
46
46
|
|
47
47
|
opts.on( "-v", "--version", help_statements[:version]) do
|
48
|
-
puts "AnimeDL: Version 0.
|
48
|
+
puts "AnimeDL: Version 1.0.5"
|
49
49
|
exit
|
50
50
|
end
|
51
51
|
|
@@ -63,8 +63,7 @@ ARGV.options do |opts|
|
|
63
63
|
opts.separator "(If user chooses to DOWNLOAD videos)"
|
64
64
|
opts.separator %Q[ `$ anime-dl` (downloads videos to './anime_name/')]
|
65
65
|
opts.separator %Q[ `$ anime-dl -f .` (downloads videos to './')]
|
66
|
-
opts.separator %Q[ `$ anime-dl -f /path/to/directory` (downloads videos to '/path/to/directory/
|
67
|
-
opts.separator %Q[ `$ anime-dl -f /path/to/directory/` (downloads videos to '/path/to/directory/anime_name/')]
|
66
|
+
opts.separator %Q[ `$ anime-dl -f /path/to/directory` (downloads videos to '/path/to/directory/')]
|
68
67
|
opts.separator ""
|
69
68
|
|
70
69
|
opts.separator "Specifying Episodes:"
|
@@ -99,11 +98,11 @@ unless (options[:quiet])
|
|
99
98
|
"Or you can also provide multiple space-seperated ranges with each range having the format 'start-end'.\n" +
|
100
99
|
"Examples (assuming anime below has more than 18 episodes):\n" +
|
101
100
|
" `Episodes: 2 4 5` - Retrieves details for episodes 2, 4 and 5\n" +
|
102
|
-
" `Episodes: 4-
|
101
|
+
" `Episodes: 4-7` - Retrieves details for episodes 4, 5, 6 and 7\n" +
|
103
102
|
" `Episodes: 8-l` - Retrieves details for episodes 8 to the last episode\n" +
|
104
|
-
" `Episodes: 2 9-
|
103
|
+
" `Episodes: 2 9-11 18-l` - Retrieves details for episodes 2, 9, 10, 11 and 18 to the end\n" +
|
105
104
|
"(Running app with '-a' or '--all' will automatically retrieve all episodes)\n" +
|
106
|
-
"(Enter empty response to get all episodes
|
105
|
+
"(Enter empty response to get all episodes or '-1' to exit)\n\n"
|
107
106
|
}
|
108
107
|
else
|
109
108
|
$user_prompts = {
|
@@ -231,7 +230,7 @@ begin
|
|
231
230
|
|
232
231
|
end
|
233
232
|
rescue => error
|
234
|
-
puts "\nDirectory creation failed
|
233
|
+
puts "\nDirectory creation failed.\n\n"
|
235
234
|
puts error
|
236
235
|
exit
|
237
236
|
end
|
@@ -264,14 +263,14 @@ else
|
|
264
263
|
end
|
265
264
|
|
266
265
|
# Links
|
267
|
-
links = instance.
|
266
|
+
links = instance.getVideoLinks(choice, range, options[:quiet], to_print)
|
268
267
|
file_write(options[:file], links, choice) if (options[:file] && scrape_option == 'l')
|
269
268
|
|
270
269
|
# Downloads
|
271
270
|
if ( scrape_option == 'd' )
|
272
271
|
if (options[:file] == nil)
|
273
272
|
options[:file] = choice.content.split(" | ")[0]
|
274
|
-
|
273
|
+
FileUtils.mkdir_p( options[:file] )
|
275
274
|
end
|
276
275
|
|
277
276
|
AnimeDL.download(options[:file], links)
|
data/fmab_anime_dl.jpg
CHANGED
File without changes
|
data/lib/anime_dl.rb
CHANGED
@@ -14,7 +14,7 @@ module AnimeDL
|
|
14
14
|
# Search
|
15
15
|
def search(query)
|
16
16
|
results_page = @agent.get("http://animeheaven.eu/search.php?q=#{query}")
|
17
|
-
return results_page.search(".
|
17
|
+
return results_page.search(".iepcon").search(".cona")
|
18
18
|
end
|
19
19
|
|
20
20
|
# Returns the total number of episodes
|
@@ -22,13 +22,28 @@ module AnimeDL
|
|
22
22
|
@anime_page = @agent.get(option.attributes['href'].value) unless (@anime_page)
|
23
23
|
episodes = @anime_page.search(".infoepbox").search("a")
|
24
24
|
|
25
|
-
|
26
|
-
|
25
|
+
# New Episodes have a different class
|
26
|
+
begin
|
27
|
+
first = episodes.last.search(".infoept2")[0].content.to_i
|
28
|
+
rescue
|
29
|
+
first = episodes.last.search(".infoept2r")[0].content.to_i
|
30
|
+
end
|
31
|
+
begin
|
32
|
+
last = episodes.first.search(".infoept2")[0].content.to_i
|
33
|
+
rescue
|
34
|
+
last = episodes.first.search(".infoept2r")[0].content.to_i
|
35
|
+
end
|
36
|
+
|
27
37
|
return first, last
|
28
38
|
end
|
29
39
|
|
30
40
|
|
31
41
|
# UTILITY
|
42
|
+
def parseURL(url)
|
43
|
+
url = url.to_s[/luu1=rrl\(".*?"\)/][10...-2]
|
44
|
+
return url.tr("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", "NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm")
|
45
|
+
end
|
46
|
+
|
32
47
|
def limit_exceeded(quiet)
|
33
48
|
return "Unfortunately \"animeheaven.eu\" only allows a certain number of page views per day (>170, <350).\n" +
|
34
49
|
"It seems you have exceeded that limit :(.\n" +
|
@@ -36,7 +51,6 @@ module AnimeDL
|
|
36
51
|
|
37
52
|
return "(Limit exceeded)"
|
38
53
|
end
|
39
|
-
|
40
54
|
end
|
41
55
|
|
42
56
|
# Download
|
@@ -16,7 +16,7 @@ module AnimeDL
|
|
16
16
|
end
|
17
17
|
|
18
18
|
# Video Links
|
19
|
-
def
|
19
|
+
def getVideoLinks(option, range = [], quiet = false, output = false)
|
20
20
|
episode_links = getPageLinks(option, range)
|
21
21
|
episodes = []
|
22
22
|
|
@@ -37,17 +37,13 @@ module AnimeDL
|
|
37
37
|
|
38
38
|
# Video Link Retrieval
|
39
39
|
episode_no = episode_page.uri.to_s[/e=.+/][2..-1] # (Regex for safety)
|
40
|
-
video_src = episode_page.search("script")[
|
40
|
+
video_src = parseURL(episode_page.search("script")[3])
|
41
41
|
|
42
42
|
episode = Episode.new(episode_no, video_src)
|
43
43
|
episodes << episode
|
44
44
|
|
45
45
|
# Progress Bar increment
|
46
|
-
|
47
|
-
progress_bar.progress += 1 unless (output)
|
48
|
-
rescue
|
49
|
-
# Bypass InvalidProgressBar Error if raised
|
50
|
-
end
|
46
|
+
progress_bar.progress += 1 unless (output) rescue nil
|
51
47
|
|
52
48
|
puts episode.details if (output)
|
53
49
|
end
|
data/lib/episode.rb
CHANGED
@@ -9,33 +9,31 @@ class Episode
|
|
9
9
|
attr_reader :number, :link
|
10
10
|
|
11
11
|
def download_to(path = ".")
|
12
|
-
url_base = @link.split('/')[2]
|
13
|
-
url_path = '/'+@link.split('/')[3..-1].join('/')
|
12
|
+
url_base = @link.split('/')[2] # Animeheaven
|
13
|
+
url_path = '/'+@link.split('/')[3..-1].join('/') # Sub Url
|
14
14
|
|
15
15
|
Net::HTTP.start(url_base) do |http|
|
16
16
|
response = http.request_head(URI.escape(url_path))
|
17
17
|
progress_bar = ProgressBar.create(:progress_mark => "\#", :length => 80, :total => response['content-length'].to_i)
|
18
|
-
file = File.new( File.join( path, "Episode #{@number}.mp4" ), 'w')
|
18
|
+
file = File.new( File.join( path, "Episode #{@number}.mp4.tmp" ), 'w')
|
19
19
|
|
20
20
|
begin
|
21
21
|
http.get(URI.escape(url_path)) do |str|
|
22
22
|
file.write(str)
|
23
|
-
|
24
|
-
begin
|
25
|
-
progress_bar.progress += str.length
|
26
|
-
rescue
|
27
|
-
# Bypass InvalidProgressBar Error if raised
|
28
|
-
end
|
23
|
+
progress_bar.progress += str.length rescue nil
|
29
24
|
end
|
30
25
|
rescue Exception
|
31
26
|
# Handle SystemExit or Interrupt
|
32
|
-
puts "Download incomplete. Deleting file
|
33
|
-
|
27
|
+
puts "Download incomplete. Deleting file.\n\n"
|
28
|
+
file.close
|
29
|
+
File.delete(File.join( path, "Episode #{@number}.mp4.tmp" ))
|
34
30
|
raise
|
35
31
|
exit
|
36
32
|
end
|
37
33
|
|
38
34
|
progress_bar.finish
|
35
|
+
file.close
|
36
|
+
File.rename(file, File.join( path, "Episode #{@number}.mp4" ))
|
39
37
|
end
|
40
38
|
|
41
39
|
puts "\n"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: AnimeDL
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anirudh Sundar
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mechanize
|
@@ -74,7 +74,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
74
74
|
version: '0'
|
75
75
|
requirements: []
|
76
76
|
rubyforge_project:
|
77
|
-
rubygems_version: 2.
|
77
|
+
rubygems_version: 2.7.3
|
78
78
|
signing_key:
|
79
79
|
specification_version: 4
|
80
80
|
summary: The AnimeDL gem is used to get episode links or download episodes for a particular
|