gogoanime 0.0.1

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 +7 -0
  2. data/lib/gogoanime.rb +91 -0
  3. metadata +44 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: dd3ce312ba7f93a77e7bb1ced0d7b71888610c1146a87717fd0c585120c3ad4f
4
+ data.tar.gz: 61c22daee9904d8cde212cff03c20385a9d42f4775d441ee4a52e453368aa244
5
+ SHA512:
6
+ metadata.gz: 1058d4ea219ae00171e46bd588f8938529c37ba8b0800cdb0679004040227ba1162dcf9e1e9613931642994bf421ed37d8cb344231a5d765f48a01ed6e495cd7
7
+ data.tar.gz: fde3813ebfe4b91b4b5afd0e46d592862682888b452e854a138bb5d5fe71dab993aadde897811167cbc82aeea482d0e65ef75f073a808cf606674c4a8b5508a2
@@ -0,0 +1,91 @@
1
+ require 'open-uri'
2
+ require 'nokogiri'
3
+ require 'json'
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
17
+ }
18
+ end
19
+ return result
20
+ end
21
+
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
37
+
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']}
48
+
49
+ result[:sources] << (link.start_with?('http') ? link : File.join('https://', link))
50
+
51
+ end
52
+
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
+ }
65
+ end
66
+ return results
67
+ end
68
+
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
+ }
80
+ end
81
+ return results
82
+ end
83
+
84
+ private
85
+
86
+ BASE_URL = "https://www.gogoanime.io/"
87
+
88
+ def fetch(url)
89
+ return Nokogiri::HTML(open(url).read)
90
+ end
91
+ end
metadata ADDED
@@ -0,0 +1,44 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gogoanime
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - LainLayer
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-04-06 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A simple gem for scraping data from gogoanime.io
14
+ email:
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/gogoanime.rb
20
+ homepage: https://rubygems.org/gems/gogoanime
21
+ licenses:
22
+ - AGPL-3.0
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubyforge_project:
40
+ rubygems_version: 2.7.6.2
41
+ signing_key:
42
+ specification_version: 4
43
+ summary: gogoanime.io scraper
44
+ test_files: []