gogoanime 0.0.1 → 0.0.2

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