gogoanime 0.0.3 → 0.0.4

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 (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/gogoanime.rb +93 -92
  3. metadata +2 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 41e3f767d7beb9cb5ec70929b7cfa0a10e0d8b69964a90e3a2fb197606c997ca
4
- data.tar.gz: 0f41ec791880d48ce4678ab5e0e3e4392d0472bf042f17a32ed3f2c72d7ea9b7
3
+ metadata.gz: b5c34d3ba186e8b2d4794b54170518d862e0a983d1364807c5b2e2f230cad9d4
4
+ data.tar.gz: a44454d481694c2aa1035043d057591505c059dbf9074289ff9b4ebda90c12f0
5
5
  SHA512:
6
- metadata.gz: 342a0e109c29e49f4b6c0c72618e258e5bef8675ed2628fd536c7c204c4672e1850f5db29f763ef75ff594f0b5475a2ee1a77f1b18f34de5954f44bfac7e4e4b
7
- data.tar.gz: 17fc9031a08615fb4305da4fad42e8db287edbf3108794b23edc4859915bf86157f5ee35f337a9f02f8a431b467e7ac8300cbe91e226858bfb78210ec3f078e1
6
+ metadata.gz: f341a322b2e52a745a054720f41650fc878706a59151261eefeab4256ade8cb31e456ff0d6719189fa959cfce599644c9b78c5008d2f65026a226b5ef38bebc4
7
+ data.tar.gz: 2d906c053b5d887b0d4dc2470c44ef81ee4bb9e69a34d7576fc678959331f7e00ed5f5013662f20b30d5294239326dd060a2459105447aa9a30253c79ef388eb
@@ -1,93 +1,94 @@
1
- require 'open-uri'
2
- require 'nokogiri'
3
- require 'json'
4
-
5
- module Gogoanime
6
- class Scraper
7
- def recent(pages=1)
8
- document = fetch(BASE_URL)
9
- result = []
10
- document.css('ul.items li').each do |item|
11
- a = item.css('a')[0]
12
- result << {
13
- image_url: item.css('img')[0]['src'],
14
- title: a['title'],
15
- episode_url: a['href'],
16
- episode: item.css('p.episode').text.split(' ').last.to_i,
17
- anime_path: a['href'].split('-episode-').first
18
- }
19
- end
20
- return result
21
- end
22
-
23
- def anime(path)
24
- document = fetch(File.join(BASE_URL, 'category' , path))
25
- t = document.css('p.type')
26
- return {
27
- title: document.css('h1').text,
28
- type: t[0].css('a')[0].text,
29
- summary: t[1].text[14..-1],
30
- genre: t[2].css('a').map { |a| a = a.text.gsub(',', '').strip },
31
- released: t[3].text[10..-1].to_i,
32
- status: t[4].text[8..-1],
33
- other_names: t[5].text.split(': ')[1..-1].join.split(', '),
34
- image_url: document.css('div.anime_info_body_bg img')[0]['src'],
35
- episodes: document.css('ul#episode_page li').last.css('a')[0]['ep_end']
36
- }
37
- end
38
-
39
- def episode(path, number)
40
- document = fetch(File.join(BASE_URL, "#{path}-episode-#{number}"))
41
- result = {
42
- title: document.css('div.title_name h2')[0].text,
43
- category: document.css('div.anime_video_body_cate a')[0].text,
44
- info: document.css('div.anime-info a')[0].text,
45
- number: number,
46
- sources: []
47
- }
48
- for link in document.css('div.anime_muti_link ul li a').map { |a| a = a['data-video']}
49
-
50
- result[:sources] << (link.start_with?('http') ? link : File.join('https://', link))
51
-
52
- end
53
-
54
- return result
55
- end
56
-
57
- def search(str)
58
- document = fetch(File.join(BASE_URL, "search.html?keyword=#{str.downcase}"))
59
- results = []
60
- for item in document.css('ul.items li')
61
- results << {
62
- image_url: item.css('div.img a img')[0]['src'],
63
- title: item.css('p.name a')[0].text,
64
- released: item.css('p.released')[0].text.split(':').last.strip.to_i
65
- }
66
- end
67
- return results
68
- end
69
-
70
- def autocomplete(str)
71
- document = open("https://ajax.gogocdn.net/site/loadAjaxSearch?keyword=#{str.downcase.gsub(' ', '+')}").read
72
- document = Nokogiri::HTML(JSON.parse(document)['content'])
73
- results = []
74
- for item in document.css('div.list_search_ajax') do
75
- a = item.css('a')[0]
76
- results << {
77
- image_url: item.css('div.thumbnail-recent_search')[0]['style'].split(': url("').last[0..-3],
78
- path: a['href'].split('/').last,
79
- title: a.text
80
- }
81
- end
82
- return results
83
- end
84
-
85
- private
86
-
87
- BASE_URL = "https://www.gogoanime.io/"
88
-
89
- def fetch(url)
90
- return Nokogiri::HTML(open(url).read)
91
- end
92
- end
1
+ require 'open-uri'
2
+ require 'nokogiri'
3
+ require 'json'
4
+
5
+ module Gogoanime
6
+ class Scraper
7
+ def recent(pages=1)
8
+ document = fetch(BASE_URL)
9
+ result = []
10
+ document.css('ul.items li').each do |item|
11
+ a = item.css('a')[0]
12
+ result << {
13
+ image_url: item.css('img')[0]['src'],
14
+ title: a['title'],
15
+ episode_url: a['href'],
16
+ episode: item.css('p.episode').text.split(' ').last.to_i,
17
+ anime_path: a['href'].split('-episode-').first
18
+ }
19
+ end
20
+ return result
21
+ end
22
+
23
+ def anime(path)
24
+ document = fetch(File.join(BASE_URL, 'category' , path))
25
+ t = document.css('p.type')
26
+ return {
27
+ title: document.css('h1').text,
28
+ type: t[0].css('a')[0].text,
29
+ summary: t[1].text[14..-1],
30
+ genre: t[2].css('a').map { |a| a = a.text.gsub(',', '').strip },
31
+ released: t[3].text[10..-1].to_i,
32
+ status: t[4].text[8..-1],
33
+ other_names: t[5].text.split(': ')[1..-1].join.split(', '),
34
+ image_url: document.css('div.anime_info_body_bg img')[0]['src'],
35
+ episodes: document.css('ul#episode_page li').last.css('a')[0]['ep_end']
36
+ }
37
+ end
38
+
39
+ def episode(path, number)
40
+ document = fetch(File.join(BASE_URL, "#{path}-episode-#{number}"))
41
+ result = {
42
+ title: document.css('div.title_name h2')[0].text,
43
+ category: document.css('div.anime_video_body_cate a')[0].text,
44
+ info: document.css('div.anime-info a')[0].text,
45
+ number: number,
46
+ sources: []
47
+ }
48
+ for link in document.css('div.anime_muti_link ul li a').map { |a| a = a['data-video']}
49
+
50
+ result[:sources] << (link.start_with?('http') ? link : File.join('https://', link))
51
+
52
+ end
53
+
54
+ return result
55
+ end
56
+
57
+ def search(str)
58
+ document = fetch(File.join(BASE_URL, "search.html?keyword=#{str.downcase}"))
59
+ results = []
60
+ for item in document.css('ul.items li')
61
+ results << {
62
+ image_url: item.css('div.img a img')[0]['src'],
63
+ title: item.css('p.name a')[0].text,
64
+ released: item.css('p.released')[0].text.split(':').last.strip.to_i,
65
+ path: item.css('p.name a')[0]['href'].split('/').last
66
+ }
67
+ end
68
+ return results
69
+ end
70
+
71
+ def autocomplete(str)
72
+ document = open("https://ajax.gogocdn.net/site/loadAjaxSearch?keyword=#{str.downcase.gsub(' ', '+')}").read
73
+ document = Nokogiri::HTML(JSON.parse(document)['content'])
74
+ results = []
75
+ for item in document.css('div.list_search_ajax') do
76
+ a = item.css('a')[0]
77
+ results << {
78
+ image_url: item.css('div.thumbnail-recent_search')[0]['style'].split(': url("').last[0..-3],
79
+ path: a['href'].split('/').last,
80
+ title: a.text
81
+ }
82
+ end
83
+ return results
84
+ end
85
+
86
+ private
87
+
88
+ BASE_URL = "https://www.gogoanime.io/"
89
+
90
+ def fetch(url)
91
+ return Nokogiri::HTML(open(url).read)
92
+ end
93
+ end
93
94
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gogoanime
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - LainLayer
@@ -36,8 +36,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
36
36
  - !ruby/object:Gem::Version
37
37
  version: '0'
38
38
  requirements: []
39
- rubyforge_project:
40
- rubygems_version: 2.7.6.2
39
+ rubygems_version: 3.1.2
41
40
  signing_key:
42
41
  specification_version: 4
43
42
  summary: gogoanime.io scraper