fappu 1.0.0
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 +7 -0
- data/.gitignore +14 -0
- data/Gemfile +14 -0
- data/LICENSE.txt +22 -0
- data/README.md +64 -0
- data/Rakefile +6 -0
- data/fappu.gemspec +27 -0
- data/fixtures/cassettes/Fappu_Manga/The_manga_is_Right_now_while_cleaning_the_pool_/_download_url/returns_the_download_link.yml +53 -0
- data/fixtures/cassettes/Fappu_Manga/The_manga_is_Right_now_while_cleaning_the_pool_/_related/behaves_like_a_manga_collection/.yml +103 -0
- data/fixtures/cassettes/Fappu_Manga/The_manga_is_Right_now_while_cleaning_the_pool_/_related/behaves_like_a_manga_collection/returns_an_array_of_Mangas.yml +103 -0
- data/fixtures/cassettes/Fappu_Manga/The_manga_is_Right_now_while_cleaning_the_pool_/_related/should_include_related_manga_related_to_pool_sex.yml +103 -0
- data/fixtures/cassettes/Fappu_Tag/_list/.yml +273 -0
- data/fixtures/cassettes/Fappu_Tag/_list/should_return_an_array_of_tag_objects.yml +273 -0
- data/fixtures/cassettes/connection.yml +203 -0
- data/fixtures/cassettes/heck.yml +203 -0
- data/fixtures/cassettes/manga.yml +221 -0
- data/fixtures/cassettes/manga_read_pool_sex.yml +58 -0
- data/fixtures/cassettes/pool_cleaning_comments.yml +107 -0
- data/fixtures/cassettes/pool_cleaning_top_comments.yml +107 -0
- data/fixtures/cassettes/related_pool_sex_manga.yml +103 -0
- data/fixtures/cassettes/search_tagged_netorare.yml +96 -0
- data/fixtures/cassettes/search_term_sao.yml +98 -0
- data/index.html +0 -0
- data/lib/fappu.rb +11 -0
- data/lib/fappu/comment.rb +27 -0
- data/lib/fappu/connection.rb +21 -0
- data/lib/fappu/manga.rb +106 -0
- data/lib/fappu/page.rb +29 -0
- data/lib/fappu/search.rb +105 -0
- data/lib/fappu/tag.rb +33 -0
- data/lib/fappu/version.rb +3 -0
- data/spec/lib/fappu/connection_spec.rb +23 -0
- data/spec/lib/fappu/manga_spec.rb +49 -0
- data/spec/lib/fappu/page_spec.rb +18 -0
- data/spec/lib/fappu/search_spec.rb +149 -0
- data/spec/lib/fappu/tag_spec.rb +14 -0
- data/spec/lib/fappu_spec.rb +4 -0
- data/spec/shared_examples.rb +10 -0
- data/spec/spec_helper.rb +24 -0
- metadata +146 -0
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Fappu::Manga , vcr: {cassette_name: 'manga'} do
|
4
|
+
|
5
|
+
context "The manga is 'Right now while cleaning the pool'", vcr: { cassette_name: 'pool_cleaning_comments' } do
|
6
|
+
subject(:manga) { described_class.new(url: 'https://www.fakku.net/manga/right-now-while-cleaning-the-pool') }
|
7
|
+
|
8
|
+
describe "#top_comments" do
|
9
|
+
it "has comments" do
|
10
|
+
expect(subject.top_comments.length).not_to eq(0)
|
11
|
+
end
|
12
|
+
|
13
|
+
it "returns comment objects" do
|
14
|
+
expect(subject.top_comments.first).to be_a_kind_of(Fappu::Comment)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe "#download_url", vcr: 'download_pool_sex' do
|
19
|
+
subject { manga.download_url }
|
20
|
+
it "returns the download link" do
|
21
|
+
is_expected.to include('http://www.sendspace.com/file/d5gd5v')
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# TODO WIP
|
26
|
+
describe "#comments" do
|
27
|
+
|
28
|
+
subject {manga.comments}
|
29
|
+
|
30
|
+
it "is not empty"
|
31
|
+
it "returns comment objects"
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
describe "#pages", vcr: {cassette_name: 'manga_read_pool_sex'} do
|
36
|
+
subject {manga.pages}
|
37
|
+
it { is_expected.not_to be_empty}
|
38
|
+
it "returns page objects" do
|
39
|
+
expect(subject.first).to be_a_kind_of(Fappu::Page)
|
40
|
+
expect(subject.first).to have_attributes(
|
41
|
+
page_number: '1',
|
42
|
+
image_url: 'https://t.fakku.net/images/manga/r/[Yamatogawa]_Original_Work_-_Right_now,_while_cleaning_the_pool/images/001.jpg',
|
43
|
+
thumbnail_url: 'https://t.fakku.net/images/manga/r/[Yamatogawa]_Original_Work_-_Right_now,_while_cleaning_the_pool/thumbs/001.thumb.jpg'
|
44
|
+
)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Fappu::Page do
|
4
|
+
describe "#new_from_json" do
|
5
|
+
let(:args) { {'1' => {'image' => 'http://a.url.com', 'thumb' => 'http://a.thumb_url.com'}}}
|
6
|
+
subject{ described_class.new_from_json(args) }
|
7
|
+
|
8
|
+
it { is_expected.to be_an_instance_of(described_class) }
|
9
|
+
it { is_expected.to have_attributes(
|
10
|
+
page_number: '1',
|
11
|
+
image_url: 'http://a.url.com',
|
12
|
+
thumbnail_url: 'http://a.thumb_url.com'
|
13
|
+
)}
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
@@ -0,0 +1,149 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Fappu::Search do
|
4
|
+
|
5
|
+
describe '.related' do
|
6
|
+
context "Pool sex manga", vcr: {cassette_name: 'related_pool_sex_manga' }do
|
7
|
+
let(:manga) { Fappu::Manga.new(url: 'https://www.fakku.net/manga/right-now-while-cleaning-the-pool')}
|
8
|
+
subject { described_class.related(manga) }
|
9
|
+
|
10
|
+
it_behaves_like "a manga collection"
|
11
|
+
|
12
|
+
it "should include related manga related to pool sex" do
|
13
|
+
expect(subject.collect(&:title)).to include(
|
14
|
+
"Before the Pool Opens",
|
15
|
+
"I'll let you do it on the pool-side",
|
16
|
+
"Summer Time Sexy Girl",
|
17
|
+
"Two Piecies")
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe '.tagged', vcr: {cassette_name: 'search_tagged_netorare'} do
|
23
|
+
context "In the mood for some Netorare" do
|
24
|
+
let(:tag) { 'Netorare' }
|
25
|
+
subject { described_class.tagged(tag) }
|
26
|
+
|
27
|
+
it_behaves_like "a manga collection"
|
28
|
+
|
29
|
+
it "should include 'Yuru Bitch', 'Shujou Seikou II'" do
|
30
|
+
expect(subject.map(&:title)).to include('Shujou Seikou II β', 'Yuru Bitch')
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe '.terms' do
|
37
|
+
context "Searching for SAO manga", vcr: {cassette_name: 'search_term_sao'} do
|
38
|
+
let(:search_terms) { "Sword Art Online"}
|
39
|
+
subject {described_class.terms(search_terms)}
|
40
|
+
|
41
|
+
it_behaves_like "a manga collection"
|
42
|
+
|
43
|
+
it "returns an array of SAO mangas" do
|
44
|
+
expect(subject.map(&:title)).to include(
|
45
|
+
"Sword Art Unlimited",
|
46
|
+
"Sword Art Offline -Silica Route-",
|
47
|
+
"Sword Art Extra",
|
48
|
+
"SPECIAL ASUNA ONLINE 2",
|
49
|
+
"Sister Affection Online",
|
50
|
+
"Lisbeth... Kirito ni wa Suterare, Kyaku ni wa Okasare Nakadashi Ninshin... Asuna to no Kakusa ga Hirogaru Online",
|
51
|
+
"Asuna to Online",
|
52
|
+
"KARORFUL MIX EX10",
|
53
|
+
"KARORFUL MIX EX9",
|
54
|
+
"no passage"
|
55
|
+
)
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe ".latest", vcr: {cassette_name: 'manga'} do
|
62
|
+
subject { described_class.latest }
|
63
|
+
it_behaves_like "a manga collection"
|
64
|
+
|
65
|
+
context "The first manga in the 'latest' list is 'My Mountain Village Journal Chapter 1'" do
|
66
|
+
subject { described_class.latest.first }
|
67
|
+
|
68
|
+
it "is tagged" do
|
69
|
+
subject.tags.each do |tag|
|
70
|
+
expect(tag).to be_an_instance_of(Fappu::Tag)
|
71
|
+
end
|
72
|
+
|
73
|
+
expect(subject.tags.collect(&:name)).to include('Paizuri', 'Oral',
|
74
|
+
'Oppai', 'Hentai',
|
75
|
+
'Ahegao'
|
76
|
+
)
|
77
|
+
end
|
78
|
+
|
79
|
+
it "Assigns the correct values to the object" do
|
80
|
+
is_expected.to have_attributes(
|
81
|
+
title: "My Mountain Village Journal Chapter 1",
|
82
|
+
url: "http://www.fakku.net/manga/my-mountain-village-journal-chapter-1-english-1407126681",
|
83
|
+
description: "Commissioned by hentai2read.com",
|
84
|
+
language: "english",
|
85
|
+
category: "manga",
|
86
|
+
date: 1407126681,
|
87
|
+
filesize: 18129800,
|
88
|
+
favorites: 0,
|
89
|
+
comment_count: 0,
|
90
|
+
page_count: 21,
|
91
|
+
poster: "LustyLady00",
|
92
|
+
poster_url: "http://www.fakku.net/users/lustylady00",
|
93
|
+
translators: include(
|
94
|
+
{"attribute" => "Lazarus H", "attribute_link" => "/translators/lazarus-h"}
|
95
|
+
),
|
96
|
+
series: include(
|
97
|
+
{"attribute" => "Original Work", "attribute_link" => "/series/original-work"},
|
98
|
+
),
|
99
|
+
artists: include(
|
100
|
+
{"attribute" => "Hiroyuki Kai", "attribute_link" => "/artists/hiroyuki-kai"},
|
101
|
+
{"attribute" => "kai hiroyuki", "attribute_link" => "/artists/kai-hiroyuki"}
|
102
|
+
),
|
103
|
+
images: include(
|
104
|
+
{
|
105
|
+
"cover" => "https://t.fakku.net/images/manga/m/[Hiroyuki_Kai,_kai_hiroyuki]_Original_Work_-_My_Mountain_Village_Journal_Chapter_1_1407126682/thumbs/001.thumb.jpg",
|
106
|
+
"sample" => "https://t.fakku.net/images/manga/m/[Hiroyuki_Kai,_kai_hiroyuki]_Original_Work_-_My_Mountain_Village_Journal_Chapter_1_1407126682/thumbs/002.thumb.jpg"
|
107
|
+
}
|
108
|
+
)
|
109
|
+
)
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
describe ".favorites",vcr: {cassette_name: 'manga'} do
|
115
|
+
subject { described_class.favorites }
|
116
|
+
|
117
|
+
it_behaves_like "a manga collection"
|
118
|
+
|
119
|
+
context "Tiny boobs is the first favorite" do
|
120
|
+
subject { described_class.favorites.first }
|
121
|
+
it { is_expected.to have_attributes(title: "Tiny Boobs Giant Tits History") }
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
|
126
|
+
describe ".popular" ,vcr: {cassette_name: 'manga'} do
|
127
|
+
subject { described_class.popular }
|
128
|
+
|
129
|
+
it_behaves_like "a manga collection"
|
130
|
+
|
131
|
+
context "This siscon manga with extremely long title is in the list" do
|
132
|
+
subject { described_class.popular.first }
|
133
|
+
it {
|
134
|
+
is_expected.to have_attributes(title: "More than a little sister, less than a friend? / More than a little sister, less than a bride?")
|
135
|
+
}
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
describe ".controversial" ,vcr: {cassette_name: 'manga'} do
|
140
|
+
subject { described_class.controversial }
|
141
|
+
|
142
|
+
it_behaves_like "a manga collection"
|
143
|
+
|
144
|
+
context "Maso Mess is first in the list of the controversial manga" do
|
145
|
+
subject { described_class.controversial.first }
|
146
|
+
it { is_expected.to have_attributes(title: "Maso Mess Ch14") }
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Fappu::Tag do
|
4
|
+
describe '.list', vcr: 'taglist' do
|
5
|
+
subject { described_class.list }
|
6
|
+
|
7
|
+
it { is_expected.not_to be_empty }
|
8
|
+
it "should return an array of tag objects" do
|
9
|
+
expect(subject.first).to be_a_kind_of(described_class)
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'bundler/setup'
|
2
|
+
require 'vcr'
|
3
|
+
require 'pry'
|
4
|
+
require 'ostruct'
|
5
|
+
|
6
|
+
Bundler.setup
|
7
|
+
|
8
|
+
require 'fappu'
|
9
|
+
require 'shared_examples'
|
10
|
+
|
11
|
+
|
12
|
+
VCR.configure do |vcr|
|
13
|
+
vcr.cassette_library_dir = 'fixtures/cassettes'
|
14
|
+
vcr.default_cassette_options = {record: :once}
|
15
|
+
vcr.configure_rspec_metadata!
|
16
|
+
vcr.hook_into :webmock
|
17
|
+
end
|
18
|
+
|
19
|
+
RSpec.configure do |config|
|
20
|
+
config.color = true
|
21
|
+
config.tty = true
|
22
|
+
config.failure_color = :magenta
|
23
|
+
# optional config here
|
24
|
+
end
|
metadata
ADDED
@@ -0,0 +1,146 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: fappu
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Buddy Magsipoc
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-08-12 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.6'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.6'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: vcr
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 2.9.0
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 2.9.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: webmock
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
description: Gem to access the FAKKU API
|
70
|
+
email:
|
71
|
+
- keikun17@gmail.com
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- .gitignore
|
77
|
+
- Gemfile
|
78
|
+
- LICENSE.txt
|
79
|
+
- README.md
|
80
|
+
- Rakefile
|
81
|
+
- fappu.gemspec
|
82
|
+
- fixtures/cassettes/Fappu_Manga/The_manga_is_Right_now_while_cleaning_the_pool_/_download_url/returns_the_download_link.yml
|
83
|
+
- fixtures/cassettes/Fappu_Manga/The_manga_is_Right_now_while_cleaning_the_pool_/_related/behaves_like_a_manga_collection/.yml
|
84
|
+
- fixtures/cassettes/Fappu_Manga/The_manga_is_Right_now_while_cleaning_the_pool_/_related/behaves_like_a_manga_collection/returns_an_array_of_Mangas.yml
|
85
|
+
- fixtures/cassettes/Fappu_Manga/The_manga_is_Right_now_while_cleaning_the_pool_/_related/should_include_related_manga_related_to_pool_sex.yml
|
86
|
+
- fixtures/cassettes/Fappu_Tag/_list/.yml
|
87
|
+
- fixtures/cassettes/Fappu_Tag/_list/should_return_an_array_of_tag_objects.yml
|
88
|
+
- fixtures/cassettes/connection.yml
|
89
|
+
- fixtures/cassettes/heck.yml
|
90
|
+
- fixtures/cassettes/manga.yml
|
91
|
+
- fixtures/cassettes/manga_read_pool_sex.yml
|
92
|
+
- fixtures/cassettes/pool_cleaning_comments.yml
|
93
|
+
- fixtures/cassettes/pool_cleaning_top_comments.yml
|
94
|
+
- fixtures/cassettes/related_pool_sex_manga.yml
|
95
|
+
- fixtures/cassettes/search_tagged_netorare.yml
|
96
|
+
- fixtures/cassettes/search_term_sao.yml
|
97
|
+
- index.html
|
98
|
+
- lib/fappu.rb
|
99
|
+
- lib/fappu/comment.rb
|
100
|
+
- lib/fappu/connection.rb
|
101
|
+
- lib/fappu/manga.rb
|
102
|
+
- lib/fappu/page.rb
|
103
|
+
- lib/fappu/search.rb
|
104
|
+
- lib/fappu/tag.rb
|
105
|
+
- lib/fappu/version.rb
|
106
|
+
- spec/lib/fappu/connection_spec.rb
|
107
|
+
- spec/lib/fappu/manga_spec.rb
|
108
|
+
- spec/lib/fappu/page_spec.rb
|
109
|
+
- spec/lib/fappu/search_spec.rb
|
110
|
+
- spec/lib/fappu/tag_spec.rb
|
111
|
+
- spec/lib/fappu_spec.rb
|
112
|
+
- spec/shared_examples.rb
|
113
|
+
- spec/spec_helper.rb
|
114
|
+
homepage: https://github.com/keikun17/fappu
|
115
|
+
licenses:
|
116
|
+
- MIT
|
117
|
+
metadata: {}
|
118
|
+
post_install_message:
|
119
|
+
rdoc_options: []
|
120
|
+
require_paths:
|
121
|
+
- lib
|
122
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
123
|
+
requirements:
|
124
|
+
- - '>='
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: '0'
|
127
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
requirements: []
|
133
|
+
rubyforge_project:
|
134
|
+
rubygems_version: 2.4.1
|
135
|
+
signing_key:
|
136
|
+
specification_version: 4
|
137
|
+
summary: FAKKU ruby client
|
138
|
+
test_files:
|
139
|
+
- spec/lib/fappu/connection_spec.rb
|
140
|
+
- spec/lib/fappu/manga_spec.rb
|
141
|
+
- spec/lib/fappu/page_spec.rb
|
142
|
+
- spec/lib/fappu/search_spec.rb
|
143
|
+
- spec/lib/fappu/tag_spec.rb
|
144
|
+
- spec/lib/fappu_spec.rb
|
145
|
+
- spec/shared_examples.rb
|
146
|
+
- spec/spec_helper.rb
|