booru 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.
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE +22 -0
- data/README.md +47 -0
- data/Rakefile +33 -0
- data/bin/booru.rb +36 -0
- data/booru.gemspec +23 -0
- data/fixtures/konachan/post_index.json +1 -0
- data/fixtures/yandere/post_index.json +1 -0
- data/lib/booru.rb +44 -0
- data/lib/booru/api.rb +27 -0
- data/lib/booru/api/artist.rb +74 -0
- data/lib/booru/api/comment.rb +48 -0
- data/lib/booru/api/favorite.rb +21 -0
- data/lib/booru/api/forum.rb +23 -0
- data/lib/booru/api/note.rb +82 -0
- data/lib/booru/api/pool.rb +101 -0
- data/lib/booru/api/post.rb +153 -0
- data/lib/booru/api/tag.rb +57 -0
- data/lib/booru/api/user.rb +21 -0
- data/lib/booru/api/wiki.rb +136 -0
- data/lib/booru/client.rb +33 -0
- data/lib/booru/client/behoimi.rb +29 -0
- data/lib/booru/client/danbooru.rb +25 -0
- data/lib/booru/client/konachan.rb +25 -0
- data/lib/booru/client/yandere.rb +25 -0
- data/lib/booru/downloader.rb +95 -0
- data/lib/booru/error.rb +32 -0
- data/lib/booru/request.rb +55 -0
- data/lib/booru/utils.rb +80 -0
- data/lib/booru/version.rb +4 -0
- metadata +140 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2012 David Palma
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
# Booru (v0.0.1)
|
2
|
+
|
3
|
+
WARNING: Use at your own risk, this is still very early in development and subject to large changes.
|
4
|
+
|
5
|
+
That being said, the downloader is mostly stable.
|
6
|
+
|
7
|
+
The Booru client API methods are all mapped out, but are not tested
|
8
|
+
and provide no real checks or defaults at the moment (currently in
|
9
|
+
progress). Presumably, so long as you pass valid option hashes to the
|
10
|
+
methods, they should work. Happy hacking.
|
11
|
+
|
12
|
+
## Installation
|
13
|
+
|
14
|
+
gem install booru
|
15
|
+
|
16
|
+
## Downloader Usage
|
17
|
+
|
18
|
+
booru -b konachan -m 10 --sfw "touhou blue"
|
19
|
+
|
20
|
+
## API Usage
|
21
|
+
|
22
|
+
require 'booru'
|
23
|
+
|
24
|
+
b = Booru::Yandere.new
|
25
|
+
|
26
|
+
params = { :limit => 100,
|
27
|
+
:page =>1,
|
28
|
+
:tags => "k-on! akiyama_mio nakano_azusa"
|
29
|
+
}
|
30
|
+
posts = b.list_posts(params) # returns an array of hashes
|
31
|
+
puts posts.inspect
|
32
|
+
|
33
|
+
## Contributing
|
34
|
+
|
35
|
+
1. Fork it
|
36
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
37
|
+
3. Commit your changes (`git commit -am 'Added some feature'`)
|
38
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
39
|
+
5. Create new Pull Request
|
40
|
+
|
41
|
+
## License
|
42
|
+
|
43
|
+
MIT License. See LICENSE file for details.
|
44
|
+
|
45
|
+
## Authors
|
46
|
+
|
47
|
+
David Palma
|
data/Rakefile
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
require "bundler/gem_tasks"
|
3
|
+
require 'rake/testtask'
|
4
|
+
|
5
|
+
task :default => :test
|
6
|
+
|
7
|
+
Rake::TestTask.new do |t|
|
8
|
+
t.libs << 'lib/booru'
|
9
|
+
t.test_files = FileList['spec/lib/booru/*_spec.rb']
|
10
|
+
t.verbose = true
|
11
|
+
end
|
12
|
+
|
13
|
+
gemspec = eval(File.read(Dir["*.gemspec"].first))
|
14
|
+
|
15
|
+
desc "Validate the gemspec"
|
16
|
+
task :gemspec do
|
17
|
+
gemspec.validate
|
18
|
+
end
|
19
|
+
|
20
|
+
task :build => :gemspec do
|
21
|
+
system "gem build #{gemspec.name}.gemspec"
|
22
|
+
FileUtils.mkdir_p "pkg"
|
23
|
+
FileUtils.mv "#{gemspec.name}-#{gemspec.version}.gem", "pkg"
|
24
|
+
end
|
25
|
+
|
26
|
+
task :install => :build do
|
27
|
+
system "gem install pkg/#{gemspec.name}-#{gemspec.version}"
|
28
|
+
end
|
29
|
+
|
30
|
+
desc "Purge the pkg directory"
|
31
|
+
task :clean do
|
32
|
+
FileUtils.rm_rf "pkg"
|
33
|
+
end
|
data/bin/booru.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# -*- encoding : utf-8 -*-
|
3
|
+
|
4
|
+
# For use/testing when no gem is installed
|
5
|
+
require './lib/booru'
|
6
|
+
|
7
|
+
opts = Trollop::options do
|
8
|
+
version "booru v#{Booru::VERSION}"
|
9
|
+
banner <<-EOM
|
10
|
+
Booru is a Ruby client for the Moebooru API and image downloader for Danbooru style image boards.
|
11
|
+
|
12
|
+
Usage:
|
13
|
+
booru [options] "tags"
|
14
|
+
|
15
|
+
Supported image boards:
|
16
|
+
danbooru, konachan, yandere, behoimi
|
17
|
+
|
18
|
+
Options:
|
19
|
+
EOM
|
20
|
+
|
21
|
+
opt :board, "Imageboard to download from", :default => 'danbooru'
|
22
|
+
opt :user, "Imageboard account username", :type => :string
|
23
|
+
opt :pass, "Imageboard account password", :type => :string
|
24
|
+
opt :max, "Max number of downloads", :type => :int
|
25
|
+
opt :output, "Output directory", :default => File.expand_path('~/booru')
|
26
|
+
opt :sfw, "Only download safe for work images.", :default => false
|
27
|
+
end
|
28
|
+
|
29
|
+
Trollop::die "No tags specified." if ARGV.empty?
|
30
|
+
|
31
|
+
puts "Using tags: #{ARGV[0]}"
|
32
|
+
opts[:tags] = ARGV[0]
|
33
|
+
opts[:tags] = [opts[:tags], 's'].join(' ') if opts[:sfw]
|
34
|
+
|
35
|
+
d = Booru::Downloader.new(opts)
|
36
|
+
d.download
|
data/booru.gemspec
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path('../lib/booru/version', __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = 'booru'
|
6
|
+
s.version = Booru::VERSION
|
7
|
+
s.homepage = 'https://github.com/mistofvongola/booru'
|
8
|
+
s.summary = 'A Ruby client for the Moebooru API.'
|
9
|
+
s.description = 'A Moebooru API client and image downloader for Danbooru style image boards.'
|
10
|
+
|
11
|
+
s.authors = ['David Palma']
|
12
|
+
s.email = 'requiem.der.seele@gmail.com'
|
13
|
+
|
14
|
+
s.files = `git ls-files`.split("\n")
|
15
|
+
s.executables = s.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
16
|
+
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
17
|
+
s.require_path = ['lib']
|
18
|
+
|
19
|
+
s.add_development_dependency 'rake'
|
20
|
+
s.add_runtime_dependency 'trollop'
|
21
|
+
s.add_runtime_dependency 'nori'
|
22
|
+
s.add_runtime_dependency 'rest-client'
|
23
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
[{"id":143812,"tags":"pokemon","created_at":1346614995,"creator_id":83902,"author":"markspivak","change":493559,"source":"http://www.games1.cc/1438/pokemonfuck.html","score":3,"md5":"06feb26bc528ec09061718f8cd7edf6c","file_size":129582,"file_url":"http://konachan.com/image/06feb26bc528ec09061718f8cd7edf6c/Konachan.com%20-%20143812%20pokemon.jpg","is_shown_in_index":true,"preview_url":"http://konachan.com/data/preview/06/fe/06feb26bc528ec09061718f8cd7edf6c.jpg","preview_width":150,"preview_height":114,"actual_preview_width":300,"actual_preview_height":227,"sample_url":"http://konachan.com/image/06feb26bc528ec09061718f8cd7edf6c/Konachan.com%20-%20143812%20pokemon.jpg","sample_width":718,"sample_height":544,"sample_file_size":0,"jpeg_url":"http://konachan.com/image/06feb26bc528ec09061718f8cd7edf6c/Konachan.com%20-%20143812%20pokemon.jpg","jpeg_width":718,"jpeg_height":544,"jpeg_file_size":0,"rating":"q","has_children":false,"parent_id":null,"status":"pending","width":718,"height":544,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[],"flag_detail":null},{"id":143811,"tags":"accel_world arita_haruyuki mayuzumi_takumu platin_(alios)","created_at":1346612371,"creator_id":13784,"author":"SciFi","change":493558,"source":"http://i2.pixiv.net/img24/img/alios/29860806.jpg","score":11,"md5":"5534a7862b1437dd5b8bcb15d6ffd8da","file_size":1063494,"file_url":"http://konachan.com/image/5534a7862b1437dd5b8bcb15d6ffd8da/Konachan.com%20-%20143811%20accel_world%20arita_haruyuki%20mayuzumi_takumu%20platin_%28alios%29.jpg","is_shown_in_index":true,"preview_url":"http://konachan.com/data/preview/55/34/5534a7862b1437dd5b8bcb15d6ffd8da.jpg","preview_width":150,"preview_height":105,"actual_preview_width":300,"actual_preview_height":210,"sample_url":"http://konachan.com/image/5534a7862b1437dd5b8bcb15d6ffd8da/Konachan.com%20-%20143811%20accel_world%20arita_haruyuki%20mayuzumi_takumu%20platin_%28alios%29.jpg","sample_width":1500,"sample_height":1052,"sample_file_size":0,"jpeg_url":"http://konachan.com/image/5534a7862b1437dd5b8bcb15d6ffd8da/Konachan.com%20-%20143811%20accel_world%20arita_haruyuki%20mayuzumi_takumu%20platin_%28alios%29.jpg","jpeg_width":1500,"jpeg_height":1052,"jpeg_file_size":0,"rating":"s","has_children":false,"parent_id":null,"status":"active","width":1500,"height":1052,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[]},{"id":143810,"tags":"akiyama_mio black_eyes black_hair blonde_hair blue_eyes brown_eyes brown_hair food group hirasawa_yui japanese_clothes k-on! kimono kotobuki_tsumugi long_hair nakano_azusa ponytail sakamoto_kazuya short_hair tainaka_ritsu twintails","created_at":1346610890,"creator_id":14063,"author":"meccrain","change":493578,"source":"","score":18,"md5":"e4dac56ac44de9c7666660becf2e5735","file_size":1273796,"file_url":"http://konachan.com/image/e4dac56ac44de9c7666660becf2e5735/Konachan.com%20-%20143810%20akiyama_mio%20black_eyes%20black_hair%20blonde_hair%20blue_eyes%20brown_eyes%20brown_hair%20food%20group%20k-on%21%20kimono%20long_hair%20ponytail%20short_hair%20twintails.jpg","is_shown_in_index":true,"preview_url":"http://konachan.com/data/preview/e4/da/e4dac56ac44de9c7666660becf2e5735.jpg","preview_width":150,"preview_height":94,"actual_preview_width":300,"actual_preview_height":188,"sample_url":"http://konachan.com/sample/e4dac56ac44de9c7666660becf2e5735/Konachan.com%20-%20143810%20sample.jpg","sample_width":1500,"sample_height":938,"sample_file_size":1427739,"jpeg_url":"http://konachan.com/image/e4dac56ac44de9c7666660becf2e5735/Konachan.com%20-%20143810%20akiyama_mio%20black_eyes%20black_hair%20blonde_hair%20blue_eyes%20brown_eyes%20brown_hair%20food%20group%20k-on%21%20kimono%20long_hair%20ponytail%20short_hair%20twintails.jpg","jpeg_width":2560,"jpeg_height":1600,"jpeg_file_size":0,"rating":"s","has_children":false,"parent_id":null,"status":"active","width":2560,"height":1600,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[]},{"id":143809,"tags":"akiyama_mio black_eyes black_hair blonde_hair blush brown_eyes brown_hair cake drink food group headband hirasawa_yui k-on! kotobuki_tsumugi long_hair maruki_nobuaki nakano_azusa short_hair tainaka_ritsu","created_at":1346610671,"creator_id":14063,"author":"meccrain","change":493579,"source":"","score":10,"md5":"3940b1537309866becc5c55be5a54b92","file_size":1492922,"file_url":"http://konachan.com/image/3940b1537309866becc5c55be5a54b92/Konachan.com%20-%20143809%20akiyama_mio%20black_eyes%20black_hair%20blonde_hair%20blush%20brown_eyes%20brown_hair%20cake%20drink%20food%20group%20headband%20hirasawa_yui%20k-on%21%20long_hair%20short_hair.jpg","is_shown_in_index":true,"preview_url":"http://konachan.com/data/preview/39/40/3940b1537309866becc5c55be5a54b92.jpg","preview_width":150,"preview_height":94,"actual_preview_width":300,"actual_preview_height":188,"sample_url":"http://konachan.com/sample/3940b1537309866becc5c55be5a54b92/Konachan.com%20-%20143809%20sample.jpg","sample_width":1500,"sample_height":938,"sample_file_size":1675935,"jpeg_url":"http://konachan.com/image/3940b1537309866becc5c55be5a54b92/Konachan.com%20-%20143809%20akiyama_mio%20black_eyes%20black_hair%20blonde_hair%20blush%20brown_eyes%20brown_hair%20cake%20drink%20food%20group%20headband%20hirasawa_yui%20k-on%21%20long_hair%20short_hair.jpg","jpeg_width":2560,"jpeg_height":1600,"jpeg_file_size":0,"rating":"s","has_children":false,"parent_id":null,"status":"active","width":2560,"height":1600,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[]},{"id":143808,"tags":"akiyama_mio black_eyes black_hair blonde_hair blue_eyes book brown_eyes brown_hair candy food group headband hirasawa_yui horiguchi_yukiko k-on! kotobuki_tsumugi long_hair nakano_azusa pajamas short_hair tainaka_ritsu twintails wink","created_at":1346610594,"creator_id":14063,"author":"meccrain","change":493580,"source":"","score":10,"md5":"aa9f02ad8b8a4f34890a0c4e3e000867","file_size":1373214,"file_url":"http://konachan.com/image/aa9f02ad8b8a4f34890a0c4e3e000867/Konachan.com%20-%20143808%20akiyama_mio%20black_eyes%20black_hair%20blue_eyes%20book%20brown_eyes%20brown_hair%20candy%20food%20group%20headband%20k-on%21%20long_hair%20pajamas%20short_hair%20twintails%20wink.jpg","is_shown_in_index":true,"preview_url":"http://konachan.com/data/preview/aa/9f/aa9f02ad8b8a4f34890a0c4e3e000867.jpg","preview_width":150,"preview_height":94,"actual_preview_width":300,"actual_preview_height":188,"sample_url":"http://konachan.com/sample/aa9f02ad8b8a4f34890a0c4e3e000867/Konachan.com%20-%20143808%20sample.jpg","sample_width":1500,"sample_height":938,"sample_file_size":1520352,"jpeg_url":"http://konachan.com/image/aa9f02ad8b8a4f34890a0c4e3e000867/Konachan.com%20-%20143808%20akiyama_mio%20black_eyes%20black_hair%20blue_eyes%20book%20brown_eyes%20brown_hair%20candy%20food%20group%20headband%20k-on%21%20long_hair%20pajamas%20short_hair%20twintails%20wink.jpg","jpeg_width":2560,"jpeg_height":1600,"jpeg_file_size":0,"rating":"s","has_children":false,"parent_id":null,"status":"active","width":2560,"height":1600,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[]},{"id":143807,"tags":"guilty_crown pink_hair yuzuriha_inori","created_at":1346609781,"creator_id":71197,"author":"kikichakre","change":493563,"source":"","score":7,"md5":"dbfa389fc654e4bfff6cbd0b1cab2c2e","file_size":1967284,"file_url":"http://konachan.com/image/dbfa389fc654e4bfff6cbd0b1cab2c2e/Konachan.com%20-%20143807%20guilty_crown%20pink_hair%20yuzuriha_inori.jpg","is_shown_in_index":true,"preview_url":"http://konachan.com/data/preview/db/fa/dbfa389fc654e4bfff6cbd0b1cab2c2e.jpg","preview_width":150,"preview_height":94,"actual_preview_width":300,"actual_preview_height":188,"sample_url":"http://konachan.com/sample/dbfa389fc654e4bfff6cbd0b1cab2c2e/Konachan.com%20-%20143807%20sample.jpg","sample_width":1500,"sample_height":938,"sample_file_size":1852876,"jpeg_url":"http://konachan.com/image/dbfa389fc654e4bfff6cbd0b1cab2c2e/Konachan.com%20-%20143807%20guilty_crown%20pink_hair%20yuzuriha_inori.jpg","jpeg_width":5120,"jpeg_height":3200,"jpeg_file_size":0,"rating":"s","has_children":false,"parent_id":null,"status":"pending","width":5120,"height":3200,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[],"flag_detail":null},{"id":143806,"tags":"2girls animal_ears aqua_eyes breasts collar konpaku_youmu naked_apron odero pink_hair saigyouji_yuyuko short_hair sideboob tail touhou white_hair wink","created_at":1346607677,"creator_id":20645,"author":"Wiresetc","change":493581,"source":"http://i2.pixiv.net/img38/img/odero/29858387.png","score":46,"md5":"d15dfe8660b95e7aa9e5f01cd6d41ad0","file_size":1834045,"file_url":"http://konachan.com/image/d15dfe8660b95e7aa9e5f01cd6d41ad0/Konachan.com%20-%20143806%202girls%20animal_ears%20aqua_eyes%20breasts%20collar%20konpaku_youmu%20naked_apron%20odero%20pink_hair%20short_hair%20sideboob%20tail%20touhou%20white_hair%20wink.png","is_shown_in_index":true,"preview_url":"http://konachan.com/data/preview/d1/5d/d15dfe8660b95e7aa9e5f01cd6d41ad0.jpg","preview_width":150,"preview_height":120,"actual_preview_width":300,"actual_preview_height":240,"sample_url":"http://konachan.com/jpeg/d15dfe8660b95e7aa9e5f01cd6d41ad0/Konachan.com%20-%20143806%202girls%20animal_ears%20aqua_eyes%20breasts%20collar%20konpaku_youmu%20naked_apron%20odero%20pink_hair%20short_hair%20sideboob%20tail%20touhou%20white_hair%20wink.jpg","sample_width":1500,"sample_height":1200,"sample_file_size":0,"jpeg_url":"http://konachan.com/jpeg/d15dfe8660b95e7aa9e5f01cd6d41ad0/Konachan.com%20-%20143806%202girls%20animal_ears%20aqua_eyes%20breasts%20collar%20konpaku_youmu%20naked_apron%20odero%20pink_hair%20short_hair%20sideboob%20tail%20touhou%20white_hair%20wink.jpg","jpeg_width":1500,"jpeg_height":1200,"jpeg_file_size":713859,"rating":"q","has_children":false,"parent_id":null,"status":"active","width":1500,"height":1200,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[]},{"id":143805,"tags":"atuuy bath breasts brown_hair fang long_hair nipples nude original purple_eyes wet","created_at":1346607612,"creator_id":20645,"author":"Wiresetc","change":493582,"source":"http://i1.pixiv.net/img09/img/atuuy/29858105.jpg","score":60,"md5":"189b80c743ff424abddab4af0f559ec7","file_size":1766426,"file_url":"http://konachan.com/image/189b80c743ff424abddab4af0f559ec7/Konachan.com%20-%20143805%20atuuy%20bath%20breasts%20brown_hair%20fang%20long_hair%20nipples%20nude%20original%20purple_eyes%20wet.jpg","is_shown_in_index":true,"preview_url":"http://konachan.com/data/preview/18/9b/189b80c743ff424abddab4af0f559ec7.jpg","preview_width":150,"preview_height":120,"actual_preview_width":300,"actual_preview_height":240,"sample_url":"http://konachan.com/sample/189b80c743ff424abddab4af0f559ec7/Konachan.com%20-%20143805%20sample.jpg","sample_width":1500,"sample_height":1200,"sample_file_size":1628109,"jpeg_url":"http://konachan.com/image/189b80c743ff424abddab4af0f559ec7/Konachan.com%20-%20143805%20atuuy%20bath%20breasts%20brown_hair%20fang%20long_hair%20nipples%20nude%20original%20purple_eyes%20wet.jpg","jpeg_width":2226,"jpeg_height":1781,"jpeg_file_size":0,"rating":"q","has_children":false,"parent_id":null,"status":"active","width":2226,"height":1781,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[]},{"id":143804,"tags":"imouto_no_katachi long_hair miyuki_sena mutou_kurihito nipple_slip nipples no_bra open_shirt pink_hair sphere yellow_eyes","created_at":1346607410,"creator_id":20645,"author":"Wiresetc","change":493583,"source":"https://yande.re/post/show/223334","score":58,"md5":"88c25a680a579659ee5c81e4b4178644","file_size":853646,"file_url":"http://konachan.com/image/88c25a680a579659ee5c81e4b4178644/Konachan.com%20-%20143804%20imouto_no_katachi%20long_hair%20miyuki_sena%20mutou_kurihito%20nipple_slip%20nipples%20no_bra%20open_shirt%20pink_hair%20sphere%20yellow_eyes.jpg","is_shown_in_index":true,"preview_url":"http://konachan.com/data/preview/88/c2/88c25a680a579659ee5c81e4b4178644.jpg","preview_width":150,"preview_height":120,"actual_preview_width":300,"actual_preview_height":240,"sample_url":"http://konachan.com/sample/88c25a680a579659ee5c81e4b4178644/Konachan.com%20-%20143804%20sample.jpg","sample_width":1500,"sample_height":1200,"sample_file_size":994834,"jpeg_url":"http://konachan.com/image/88c25a680a579659ee5c81e4b4178644/Konachan.com%20-%20143804%20imouto_no_katachi%20long_hair%20miyuki_sena%20mutou_kurihito%20nipple_slip%20nipples%20no_bra%20open_shirt%20pink_hair%20sphere%20yellow_eyes.jpg","jpeg_width":2375,"jpeg_height":1900,"jpeg_file_size":0,"rating":"q","has_children":false,"parent_id":null,"status":"active","width":2375,"height":1900,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[]},{"id":143803,"tags":"animal_ears blonde_hair blue_eyes boots bubbles foxgirl gloves loli multiple_tails nude original pashikiso tail underwater","created_at":1346607349,"creator_id":20645,"author":"Wiresetc","change":493584,"source":"http://i2.pixiv.net/img40/img/hi5tj0gp/29857139.jpg","score":22,"md5":"7293bc2b50ab74d6159532343cac4be3","file_size":585118,"file_url":"http://konachan.com/image/7293bc2b50ab74d6159532343cac4be3/Konachan.com%20-%20143803%20animal_ears%20blonde_hair%20blue_eyes%20boots%20bubbles%20foxgirl%20gloves%20loli%20multiple_tails%20nude%20original%20pashikiso%20tail%20underwater.jpg","is_shown_in_index":true,"preview_url":"http://konachan.com/data/preview/72/93/7293bc2b50ab74d6159532343cac4be3.jpg","preview_width":150,"preview_height":117,"actual_preview_width":300,"actual_preview_height":234,"sample_url":"http://konachan.com/image/7293bc2b50ab74d6159532343cac4be3/Konachan.com%20-%20143803%20animal_ears%20blonde_hair%20blue_eyes%20boots%20bubbles%20foxgirl%20gloves%20loli%20multiple_tails%20nude%20original%20pashikiso%20tail%20underwater.jpg","sample_width":1152,"sample_height":900,"sample_file_size":0,"jpeg_url":"http://konachan.com/image/7293bc2b50ab74d6159532343cac4be3/Konachan.com%20-%20143803%20animal_ears%20blonde_hair%20blue_eyes%20boots%20bubbles%20foxgirl%20gloves%20loli%20multiple_tails%20nude%20original%20pashikiso%20tail%20underwater.jpg","jpeg_width":1152,"jpeg_height":900,"jpeg_file_size":0,"rating":"q","has_children":false,"parent_id":null,"status":"active","width":1152,"height":900,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[]},{"id":143801,"tags":"bikini chimari_mima fujisaki_shizuka game_cg green_hair hashimoto_takashi imouto_no_katachi kodamasawa_izumi meta mutou_kurihito orange_hair pink_hair sphere sumeragi_ayaka sunadori_satori swimsuit water","created_at":1346607163,"creator_id":20645,"author":"Wiresetc","change":493539,"source":"Imouto no Katachi CG","score":49,"md5":"e6a2461b9906f0fc46221d0578ce234b","file_size":2397990,"file_url":"http://konachan.com/image/e6a2461b9906f0fc46221d0578ce234b/Konachan.com%20-%20143801%20bikini%20chimari_mima%20game_cg%20green_hair%20kodamasawa_izumi%20meta%20mutou_kurihito%20orange_hair%20pink_hair%20sphere%20sumeragi_ayaka%20sunadori_satori%20swimsuit%20water.png","is_shown_in_index":true,"preview_url":"http://konachan.com/data/preview/e6/a2/e6a2461b9906f0fc46221d0578ce234b.jpg","preview_width":150,"preview_height":84,"actual_preview_width":300,"actual_preview_height":169,"sample_url":"http://konachan.com/sample/e6a2461b9906f0fc46221d0578ce234b/Konachan.com%20-%20143801%20sample.jpg","sample_width":1500,"sample_height":844,"sample_file_size":1464966,"jpeg_url":"http://konachan.com/jpeg/e6a2461b9906f0fc46221d0578ce234b/Konachan.com%20-%20143801%20bikini%20chimari_mima%20game_cg%20green_hair%20kodamasawa_izumi%20meta%20mutou_kurihito%20orange_hair%20pink_hair%20sphere%20sumeragi_ayaka%20sunadori_satori%20swimsuit%20water.jpg","jpeg_width":1920,"jpeg_height":1080,"jpeg_file_size":1134113,"rating":"s","has_children":false,"parent_id":null,"status":"active","width":1920,"height":1080,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[]},{"id":143800,"tags":"chimari_mima close game_cg imouto_no_katachi kodamasawa_izumi loli pink_hair short_hair sphere twintails","created_at":1346606946,"creator_id":20645,"author":"Wiresetc","change":493536,"source":"Imouto no Katachi CG","score":24,"md5":"72eb53acb4bb584adcb3a16cc1575e82","file_size":2273020,"file_url":"http://konachan.com/image/72eb53acb4bb584adcb3a16cc1575e82/Konachan.com%20-%20143800%20chimari_mima%20close%20game_cg%20imouto_no_katachi%20kodamasawa_izumi%20loli%20pink_hair%20short_hair%20sphere%20twintails.png","is_shown_in_index":true,"preview_url":"http://konachan.com/data/preview/72/eb/72eb53acb4bb584adcb3a16cc1575e82.jpg","preview_width":150,"preview_height":84,"actual_preview_width":300,"actual_preview_height":169,"sample_url":"http://konachan.com/sample/72eb53acb4bb584adcb3a16cc1575e82/Konachan.com%20-%20143800%20sample.jpg","sample_width":1500,"sample_height":844,"sample_file_size":1282870,"jpeg_url":"http://konachan.com/jpeg/72eb53acb4bb584adcb3a16cc1575e82/Konachan.com%20-%20143800%20chimari_mima%20close%20game_cg%20imouto_no_katachi%20kodamasawa_izumi%20loli%20pink_hair%20short_hair%20sphere%20twintails.jpg","jpeg_width":1920,"jpeg_height":1080,"jpeg_file_size":972033,"rating":"s","has_children":false,"parent_id":null,"status":"active","width":1920,"height":1080,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[]},{"id":143799,"tags":"breasts game_cg imouto_no_katachi long_hair miyuki_sena mutou_kurihito nipples panties pink_hair sphere sunset topless underwear wet","created_at":1346606929,"creator_id":20645,"author":"Wiresetc","change":493537,"source":"Imouto no Katachi CG","score":66,"md5":"203c33f0d9f46f10d0d92e40a0de5e28","file_size":1888924,"file_url":"http://konachan.com/image/203c33f0d9f46f10d0d92e40a0de5e28/Konachan.com%20-%20143799%20breasts%20game_cg%20imouto_no_katachi%20long_hair%20miyuki_sena%20mutou_kurihito%20nipples%20panties%20pink_hair%20sphere%20sunset%20topless%20underwear%20wet.png","is_shown_in_index":true,"preview_url":"http://konachan.com/data/preview/20/3c/203c33f0d9f46f10d0d92e40a0de5e28.jpg","preview_width":150,"preview_height":84,"actual_preview_width":300,"actual_preview_height":169,"sample_url":"http://konachan.com/sample/203c33f0d9f46f10d0d92e40a0de5e28/Konachan.com%20-%20143799%20sample.jpg","sample_width":1500,"sample_height":844,"sample_file_size":1084903,"jpeg_url":"http://konachan.com/jpeg/203c33f0d9f46f10d0d92e40a0de5e28/Konachan.com%20-%20143799%20breasts%20game_cg%20imouto_no_katachi%20long_hair%20miyuki_sena%20mutou_kurihito%20nipples%20panties%20pink_hair%20sphere%20sunset%20topless%20underwear%20wet.jpg","jpeg_width":1920,"jpeg_height":1080,"jpeg_file_size":715340,"rating":"q","has_children":false,"parent_id":null,"status":"active","width":1920,"height":1080,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[]},{"id":143798,"tags":"ass bikini game_cg hashimoto_takashi imouto_no_katachi orange_hair sphere sumeragi_ayaka swimsuit wet","created_at":1346606311,"creator_id":20645,"author":"Wiresetc","change":493533,"source":"Imouto no Katachi CG","score":74,"md5":"8ee55fc1c7f72df0e8e1c95096c59bc0","file_size":2055662,"file_url":"http://konachan.com/image/8ee55fc1c7f72df0e8e1c95096c59bc0/Konachan.com%20-%20143798%20ass%20bikini%20game_cg%20hashimoto_takashi%20imouto_no_katachi%20orange_hair%20sphere%20sumeragi_ayaka%20swimsuit%20wet.png","is_shown_in_index":true,"preview_url":"http://konachan.com/data/preview/8e/e5/8ee55fc1c7f72df0e8e1c95096c59bc0.jpg","preview_width":150,"preview_height":84,"actual_preview_width":300,"actual_preview_height":169,"sample_url":"http://konachan.com/sample/8ee55fc1c7f72df0e8e1c95096c59bc0/Konachan.com%20-%20143798%20sample.jpg","sample_width":1500,"sample_height":844,"sample_file_size":1133927,"jpeg_url":"http://konachan.com/jpeg/8ee55fc1c7f72df0e8e1c95096c59bc0/Konachan.com%20-%20143798%20ass%20bikini%20game_cg%20hashimoto_takashi%20imouto_no_katachi%20orange_hair%20sphere%20sumeragi_ayaka%20swimsuit%20wet.jpg","jpeg_width":1920,"jpeg_height":1080,"jpeg_file_size":760240,"rating":"q","has_children":false,"parent_id":null,"status":"active","width":1920,"height":1080,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[]},{"id":143797,"tags":"bed game_cg imouto_no_katachi long_hair masturbation mutou_kurihito panties phone pink_hair sphere suzunomiya_mayuki underwear","created_at":1346606239,"creator_id":20645,"author":"Wiresetc","change":493538,"source":"Imouto no Katachi CG","score":28,"md5":"461ca0eb66bf0053626d7cbd1483fa1b","file_size":2236676,"file_url":"http://konachan.com/image/461ca0eb66bf0053626d7cbd1483fa1b/Konachan.com%20-%20143797%20bed%20game_cg%20imouto_no_katachi%20long_hair%20masturbation%20mutou_kurihito%20panties%20phone%20pink_hair%20sphere%20suzunomiya_mayuki%20underwear.png","is_shown_in_index":true,"preview_url":"http://konachan.com/data/preview/46/1c/461ca0eb66bf0053626d7cbd1483fa1b.jpg","preview_width":150,"preview_height":84,"actual_preview_width":300,"actual_preview_height":169,"sample_url":"http://konachan.com/sample/461ca0eb66bf0053626d7cbd1483fa1b/Konachan.com%20-%20143797%20sample.jpg","sample_width":1500,"sample_height":844,"sample_file_size":1100076,"jpeg_url":"http://konachan.com/jpeg/461ca0eb66bf0053626d7cbd1483fa1b/Konachan.com%20-%20143797%20bed%20game_cg%20imouto_no_katachi%20long_hair%20masturbation%20mutou_kurihito%20panties%20phone%20pink_hair%20sphere%20suzunomiya_mayuki%20underwear.jpg","jpeg_width":1920,"jpeg_height":1080,"jpeg_file_size":695799,"rating":"e","has_children":false,"parent_id":null,"status":"active","width":1920,"height":1080,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[]},{"id":143796,"tags":"blush breasts brown_eyes brown_hair hatsukoi_1/1 koizumi_amane long_hair morino_yukino naked_apron nipples","created_at":1346605917,"creator_id":20645,"author":"Wiresetc","change":493529,"source":"https://yande.re/post/show/223329","score":41,"md5":"b44b4f5384c625b737e84ced611b455f","file_size":893875,"file_url":"http://konachan.com/image/b44b4f5384c625b737e84ced611b455f/Konachan.com%20-%20143796%20blush%20breasts%20brown_eyes%20brown_hair%20hatsukoi_1_1%20koizumi_amane%20long_hair%20morino_yukino%20naked_apron%20nipples.jpg","is_shown_in_index":true,"preview_url":"http://konachan.com/data/preview/b4/4b/b44b4f5384c625b737e84ced611b455f.jpg","preview_width":150,"preview_height":120,"actual_preview_width":300,"actual_preview_height":240,"sample_url":"http://konachan.com/image/b44b4f5384c625b737e84ced611b455f/Konachan.com%20-%20143796%20blush%20breasts%20brown_eyes%20brown_hair%20hatsukoi_1_1%20koizumi_amane%20long_hair%20morino_yukino%20naked_apron%20nipples.jpg","sample_width":1419,"sample_height":1135,"sample_file_size":0,"jpeg_url":"http://konachan.com/image/b44b4f5384c625b737e84ced611b455f/Konachan.com%20-%20143796%20blush%20breasts%20brown_eyes%20brown_hair%20hatsukoi_1_1%20koizumi_amane%20long_hair%20morino_yukino%20naked_apron%20nipples.jpg","jpeg_width":1419,"jpeg_height":1135,"jpeg_file_size":0,"rating":"q","has_children":false,"parent_id":null,"status":"active","width":1419,"height":1135,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[]},{"id":143795,"tags":"blush hat jpeg_artifacts photoshop red_hair ribbons wings","created_at":1346605832,"creator_id":69874,"author":"ViridianCrystal","change":493564,"source":"http://www.pixiv.net/member_illust.php?mode=medium&illust_id=5858310","score":29,"md5":"a99e6ca29d98a16dc87d7f4a8fd5b913","file_size":2488611,"file_url":"http://konachan.com/image/a99e6ca29d98a16dc87d7f4a8fd5b913/Konachan.com%20-%20143795%20blush%20hat%20jpeg_artifacts%20photoshop%20red_hair%20ribbons%20wings.png","is_shown_in_index":true,"preview_url":"http://konachan.com/data/preview/a9/9e/a99e6ca29d98a16dc87d7f4a8fd5b913.jpg","preview_width":150,"preview_height":113,"actual_preview_width":300,"actual_preview_height":225,"sample_url":"http://konachan.com/sample/a99e6ca29d98a16dc87d7f4a8fd5b913/Konachan.com%20-%20143795%20sample.jpg","sample_width":1440,"sample_height":1080,"sample_file_size":1712145,"jpeg_url":"http://konachan.com/jpeg/a99e6ca29d98a16dc87d7f4a8fd5b913/Konachan.com%20-%20143795%20blush%20hat%20jpeg_artifacts%20photoshop%20red_hair%20ribbons%20wings.jpg","jpeg_width":1440,"jpeg_height":1080,"jpeg_file_size":782182,"rating":"s","has_children":false,"parent_id":97288,"status":"pending","width":1440,"height":1080,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[],"flag_detail":null},{"id":143794,"tags":"gray_hair hashimoto_takashi kasugano_sora loli long_hair nipples nude sphere yosuga_no_sora","created_at":1346605814,"creator_id":20645,"author":"Wiresetc","change":493527,"source":"https://yande.re/post/show/223322","score":33,"md5":"27eb5fb136bfedcb20749c085ef05b0a","file_size":1019923,"file_url":"http://konachan.com/image/27eb5fb136bfedcb20749c085ef05b0a/Konachan.com%20-%20143794%20gray_hair%20hashimoto_takashi%20kasugano_sora%20loli%20long_hair%20nipples%20nude%20sphere%20yosuga_no_sora.jpg","is_shown_in_index":true,"preview_url":"http://konachan.com/data/preview/27/eb/27eb5fb136bfedcb20749c085ef05b0a.jpg","preview_width":150,"preview_height":120,"actual_preview_width":300,"actual_preview_height":240,"sample_url":"http://konachan.com/sample/27eb5fb136bfedcb20749c085ef05b0a/Konachan.com%20-%20143794%20sample.jpg","sample_width":1500,"sample_height":1200,"sample_file_size":1222841,"jpeg_url":"http://konachan.com/image/27eb5fb136bfedcb20749c085ef05b0a/Konachan.com%20-%20143794%20gray_hair%20hashimoto_takashi%20kasugano_sora%20loli%20long_hair%20nipples%20nude%20sphere%20yosuga_no_sora.jpg","jpeg_width":2000,"jpeg_height":1600,"jpeg_file_size":0,"rating":"q","has_children":false,"parent_id":null,"status":"active","width":2000,"height":1600,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[]},{"id":143793,"tags":"akizuki_tsukasa cherry_blossoms game_cg haruno_tsubame jpeg_artifacts kiss night sakura_sakimashita sky sorahane","created_at":1346605288,"creator_id":78520,"author":"Torrefaction","change":493526,"source":"Sakura Sakimashita CG","score":13,"md5":"3bcd7495472ec18e93fb2e970201357f","file_size":398914,"file_url":"http://konachan.com/image/3bcd7495472ec18e93fb2e970201357f/Konachan.com%20-%20143793%20akizuki_tsukasa%20cherry_blossoms%20game_cg%20haruno_tsubame%20jpeg_artifacts%20kiss%20night%20sakura_sakimashita%20sky%20sorahane.jpg","is_shown_in_index":true,"preview_url":"http://konachan.com/data/preview/3b/cd/3bcd7495472ec18e93fb2e970201357f.jpg","preview_width":150,"preview_height":84,"actual_preview_width":300,"actual_preview_height":169,"sample_url":"http://konachan.com/image/3bcd7495472ec18e93fb2e970201357f/Konachan.com%20-%20143793%20akizuki_tsukasa%20cherry_blossoms%20game_cg%20haruno_tsubame%20jpeg_artifacts%20kiss%20night%20sakura_sakimashita%20sky%20sorahane.jpg","sample_width":1280,"sample_height":720,"sample_file_size":0,"jpeg_url":"http://konachan.com/image/3bcd7495472ec18e93fb2e970201357f/Konachan.com%20-%20143793%20akizuki_tsukasa%20cherry_blossoms%20game_cg%20haruno_tsubame%20jpeg_artifacts%20kiss%20night%20sakura_sakimashita%20sky%20sorahane.jpg","jpeg_width":1280,"jpeg_height":720,"jpeg_file_size":0,"rating":"s","has_children":false,"parent_id":null,"status":"pending","width":1280,"height":720,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[],"flag_detail":null},{"id":143792,"tags":"akaza_akari cosplay funami_yui glasses guitar hatsune_miku headphones ikeda_chitose ikeda_chizuru instrument izayoi_sakuya japanese_clothes k-on! maid miko nagato_yuki school_swimsuit seifuku sugiura_ayano suzumiya_haruhi_no_yuutsu sweeter swimsuit sword thighhighs toshinou_kyouko touhou vocaloid weapon wink witch yoshikawa_chinatsu yuru_yuri","created_at":1346605212,"creator_id":20645,"author":"Wiresetc","change":493522,"source":"http://i1.pixiv.net/img75/img/110111/29696613_big_p1.jpg","score":23,"md5":"91a2f38d35106aca33541f8e466a4c56","file_size":1487076,"file_url":"http://konachan.com/image/91a2f38d35106aca33541f8e466a4c56/Konachan.com%20-%20143792%20cosplay%20funami_yui%20glasses%20guitar%20headphones%20instrument%20k-on%21%20maid%20miko%20seifuku%20sweeter%20swimsuit%20sword%20touhou%20vocaloid%20weapon%20wink%20witch%20yuru_yuri.jpg","is_shown_in_index":true,"preview_url":"http://konachan.com/data/preview/91/a2/91a2f38d35106aca33541f8e466a4c56.jpg","preview_width":150,"preview_height":120,"actual_preview_width":300,"actual_preview_height":240,"sample_url":"http://konachan.com/sample/91a2f38d35106aca33541f8e466a4c56/Konachan.com%20-%20143792%20sample.jpg","sample_width":1500,"sample_height":1200,"sample_file_size":979724,"jpeg_url":"http://konachan.com/image/91a2f38d35106aca33541f8e466a4c56/Konachan.com%20-%20143792%20cosplay%20funami_yui%20glasses%20guitar%20headphones%20instrument%20k-on%21%20maid%20miko%20seifuku%20sweeter%20swimsuit%20sword%20touhou%20vocaloid%20weapon%20wink%20witch%20yuru_yuri.jpg","jpeg_width":2388,"jpeg_height":1910,"jpeg_file_size":0,"rating":"s","has_children":false,"parent_id":null,"status":"active","width":2388,"height":1910,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[]},{"id":143791,"tags":"animal_ears highschool_dxd lollipop miyama-zero nopan seifuku tail toujou_koneko white white_hair wings yellow_eyes","created_at":1346605035,"creator_id":20645,"author":"Wiresetc","change":493520,"source":"Miyama-zero - Men At Girls","score":47,"md5":"320d8c221883c08d14a9ec00a6769a22","file_size":1211540,"file_url":"http://konachan.com/image/320d8c221883c08d14a9ec00a6769a22/Konachan.com%20-%20143791%20animal_ears%20highschool_dxd%20lollipop%20miyama-zero%20nopan%20seifuku%20tail%20toujou_koneko%20white%20white_hair%20wings%20yellow_eyes.jpg","is_shown_in_index":true,"preview_url":"http://konachan.com/data/preview/32/0d/320d8c221883c08d14a9ec00a6769a22.jpg","preview_width":150,"preview_height":120,"actual_preview_width":300,"actual_preview_height":240,"sample_url":"http://konachan.com/sample/320d8c221883c08d14a9ec00a6769a22/Konachan.com%20-%20143791%20sample.jpg","sample_width":1500,"sample_height":1200,"sample_file_size":664576,"jpeg_url":"http://konachan.com/image/320d8c221883c08d14a9ec00a6769a22/Konachan.com%20-%20143791%20animal_ears%20highschool_dxd%20lollipop%20miyama-zero%20nopan%20seifuku%20tail%20toujou_koneko%20white%20white_hair%20wings%20yellow_eyes.jpg","jpeg_width":2750,"jpeg_height":2200,"jpeg_file_size":0,"rating":"q","has_children":false,"parent_id":null,"status":"active","width":2750,"height":2200,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[]}]
|
@@ -0,0 +1 @@
|
|
1
|
+
[{"id":223458,"tags":"c.c._lemon c.c._lemon_(character) cleavage hao_(patinnko) thighhighs","created_at":1346617726,"creator_id":9241,"author":"eridani","change":1116481,"source":"http://www.pixiv.net/member_illust.php?mode=manga&illust_id=28061906","score":0,"md5":"fd918966c54dbacb739d1ed775160b6c","file_size":1045463,"file_url":"https://yande.re/image/fd918966c54dbacb739d1ed775160b6c/yande.re%20223458%20c.c._lemon%20c.c._lemon_%28character%29%20cleavage%20hao_%28patinnko%29%20thighhighs.png","is_shown_in_index":true,"preview_url":"https://yande.re/data/preview/fd/91/fd918966c54dbacb739d1ed775160b6c.jpg","preview_width":127,"preview_height":150,"actual_preview_width":255,"actual_preview_height":300,"sample_url":"https://yande.re/sample/fd918966c54dbacb739d1ed775160b6c/yande.re%20223458%20sample.jpg","sample_width":1200,"sample_height":1414,"sample_file_size":182990,"jpeg_url":"https://yande.re/jpeg/fd918966c54dbacb739d1ed775160b6c/yande.re%20223458%20c.c._lemon%20c.c._lemon_%28character%29%20cleavage%20hao_%28patinnko%29%20thighhighs.jpg","jpeg_width":1515,"jpeg_height":1785,"jpeg_file_size":571269,"rating":"s","has_children":false,"parent_id":null,"status":"active","width":1515,"height":1785,"is_held":true,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[]},{"id":223457,"tags":"mecha muvluv muvluv_alternative sigelinde_von_fahrenhorst wilfried_von_aichberger","created_at":1346614983,"creator_id":22039,"author":"CryFleuret","change":1116477,"source":"","score":2,"md5":"575bf68ee9d2313a8113c86c7ba47015","file_size":1115418,"file_url":"https://yande.re/image/575bf68ee9d2313a8113c86c7ba47015/yande.re%20223457%20mecha%20muvluv%20muvluv_alternative%20sigelinde_von_fahrenhorst%20wilfried_von_aichberger.png","is_shown_in_index":true,"preview_url":"https://yande.re/data/preview/57/5b/575bf68ee9d2313a8113c86c7ba47015.jpg","preview_width":150,"preview_height":100,"actual_preview_width":300,"actual_preview_height":199,"sample_url":"https://yande.re/sample/575bf68ee9d2313a8113c86c7ba47015/yande.re%20223457%20sample.jpg","sample_width":1500,"sample_height":997,"sample_file_size":262933,"jpeg_url":"https://yande.re/jpeg/575bf68ee9d2313a8113c86c7ba47015/yande.re%20223457%20mecha%20muvluv%20muvluv_alternative%20sigelinde_von_fahrenhorst%20wilfried_von_aichberger.jpg","jpeg_width":1566,"jpeg_height":1041,"jpeg_file_size":641244,"rating":"s","has_children":false,"parent_id":null,"status":"active","width":1566,"height":1041,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[]},{"id":223456,"tags":"helgarose_von_falkenmayer ilfriede_von_feulner lunateresia_von_wizleben muvluv muvluv_alternative","created_at":1346614727,"creator_id":22039,"author":"CryFleuret","change":1116475,"source":"","score":3,"md5":"4e350b23f942ddc4acc92e61d1f8757b","file_size":1399456,"file_url":"https://yande.re/image/4e350b23f942ddc4acc92e61d1f8757b/yande.re%20223456%20helgarose_von_falkenmayer%20ilfriede_von_feulner%20lunateresia_von_wizleben%20muvluv%20muvluv_alternative.png","is_shown_in_index":true,"preview_url":"https://yande.re/data/preview/4e/35/4e350b23f942ddc4acc92e61d1f8757b.jpg","preview_width":150,"preview_height":122,"actual_preview_width":300,"actual_preview_height":243,"sample_url":"https://yande.re/sample/4e350b23f942ddc4acc92e61d1f8757b/yande.re%20223456%20sample.jpg","sample_width":1481,"sample_height":1200,"sample_file_size":381279,"jpeg_url":"https://yande.re/jpeg/4e350b23f942ddc4acc92e61d1f8757b/yande.re%20223456%20helgarose_von_falkenmayer%20ilfriede_von_feulner%20lunateresia_von_wizleben%20muvluv%20muvluv_alternative.jpg","jpeg_width":1500,"jpeg_height":1215,"jpeg_file_size":843992,"rating":"s","has_children":false,"parent_id":null,"status":"active","width":1500,"height":1215,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[]},{"id":223455,"tags":"loli swimsuits tagme","created_at":1346614586,"creator_id":1305,"author":"Radioactive","change":1116479,"source":"","score":3,"md5":"d0e13822f35da228fadbb8fd5f60eafc","file_size":5773919,"file_url":"https://yande.re/image/d0e13822f35da228fadbb8fd5f60eafc/yande.re%20223455%20loli%20swimsuits%20tagme.jpg","is_shown_in_index":true,"preview_url":"https://yande.re/data/preview/d0/e1/d0e13822f35da228fadbb8fd5f60eafc.jpg","preview_width":103,"preview_height":150,"actual_preview_width":206,"actual_preview_height":300,"sample_url":"https://yande.re/sample/d0e13822f35da228fadbb8fd5f60eafc/yande.re%20223455%20sample.jpg","sample_width":1029,"sample_height":1500,"sample_file_size":293071,"jpeg_url":"https://yande.re/image/d0e13822f35da228fadbb8fd5f60eafc/yande.re%20223455%20loli%20swimsuits%20tagme.jpg","jpeg_width":4707,"jpeg_height":6864,"jpeg_file_size":0,"rating":"q","has_children":false,"parent_id":null,"status":"active","width":4707,"height":6864,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[]},{"id":223454,"tags":"spike","created_at":1346614301,"creator_id":9241,"author":"eridani","change":1116472,"source":"http://i1.pixiv.net/img43/img/daible2099/22907344.jpg","score":0,"md5":"e2f0e4f562fd423f695388eb2a7e350f","file_size":1605265,"file_url":"https://yande.re/image/e2f0e4f562fd423f695388eb2a7e350f/yande.re%20223454%20spike.jpg","is_shown_in_index":true,"preview_url":"https://yande.re/data/preview/e2/f0/e2f0e4f562fd423f695388eb2a7e350f.jpg","preview_width":106,"preview_height":150,"actual_preview_width":212,"actual_preview_height":300,"sample_url":"https://yande.re/sample/e2f0e4f562fd423f695388eb2a7e350f/yande.re%20223454%20sample.jpg","sample_width":1061,"sample_height":1500,"sample_file_size":285966,"jpeg_url":"https://yande.re/image/e2f0e4f562fd423f695388eb2a7e350f/yande.re%20223454%20spike.jpg","jpeg_width":1754,"jpeg_height":2480,"jpeg_file_size":0,"rating":"s","has_children":false,"parent_id":null,"status":"active","width":1754,"height":2480,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[]},{"id":223453,"tags":"bernadette_e_tigre_le_la_rivi\u00e8re ilfriede_von_feulner muvluv muvluv_alternative","created_at":1346614290,"creator_id":22039,"author":"CryFleuret","change":1116471,"source":"","score":2,"md5":"4a1c75427317b991923e7545d2e455dc","file_size":1790429,"file_url":"https://yande.re/image/4a1c75427317b991923e7545d2e455dc/yande.re%20223453%20bernadette_e_tigre_le_la_rivi%C3%A8re%20ilfriede_von_feulner%20muvluv%20muvluv_alternative.png","is_shown_in_index":true,"preview_url":"https://yande.re/data/preview/4a/1c/4a1c75427317b991923e7545d2e455dc.jpg","preview_width":122,"preview_height":150,"actual_preview_width":243,"actual_preview_height":300,"sample_url":"https://yande.re/sample/4a1c75427317b991923e7545d2e455dc/yande.re%20223453%20sample.jpg","sample_width":1200,"sample_height":1481,"sample_file_size":416978,"jpeg_url":"https://yande.re/jpeg/4a1c75427317b991923e7545d2e455dc/yande.re%20223453%20bernadette_e_tigre_le_la_rivi%C3%A8re%20ilfriede_von_feulner%20muvluv%20muvluv_alternative.jpg","jpeg_width":1620,"jpeg_height":2000,"jpeg_file_size":1400173,"rating":"s","has_children":false,"parent_id":null,"status":"active","width":1620,"height":2000,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[]},{"id":223452,"tags":"spike tagme","created_at":1346614214,"creator_id":9241,"author":"eridani","change":1116470,"source":"http://i1.pixiv.net/img43/img/daible2099/20771966.jpg","score":0,"md5":"d30c13263e9ce5825683e080fe47f1c3","file_size":4050119,"file_url":"https://yande.re/image/d30c13263e9ce5825683e080fe47f1c3/yande.re%20223452%20spike%20tagme.jpg","is_shown_in_index":true,"preview_url":"https://yande.re/data/preview/d3/0c/d30c13263e9ce5825683e080fe47f1c3.jpg","preview_width":106,"preview_height":150,"actual_preview_width":212,"actual_preview_height":300,"sample_url":"https://yande.re/sample/d30c13263e9ce5825683e080fe47f1c3/yande.re%20223452%20sample.jpg","sample_width":1061,"sample_height":1500,"sample_file_size":363889,"jpeg_url":"https://yande.re/image/d30c13263e9ce5825683e080fe47f1c3/yande.re%20223452%20spike%20tagme.jpg","jpeg_width":2480,"jpeg_height":3507,"jpeg_file_size":0,"rating":"s","has_children":false,"parent_id":null,"status":"active","width":2480,"height":3507,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[]},{"id":223451,"tags":"gintama spike swimsuits tama_(gintama)","created_at":1346613329,"creator_id":9241,"author":"eridani","change":1116466,"source":"http://i1.pixiv.net/img43/img/daible2099/13238615.jpg","score":3,"md5":"e8cca3095784eb5a07b04bbd9a5ddb63","file_size":2274287,"file_url":"https://yande.re/image/e8cca3095784eb5a07b04bbd9a5ddb63/yande.re%20223451%20gintama%20spike%20swimsuits%20tama_%28gintama%29.jpg","is_shown_in_index":true,"preview_url":"https://yande.re/data/preview/e8/cc/e8cca3095784eb5a07b04bbd9a5ddb63.jpg","preview_width":106,"preview_height":150,"actual_preview_width":211,"actual_preview_height":300,"sample_url":"https://yande.re/sample/e8cca3095784eb5a07b04bbd9a5ddb63/yande.re%20223451%20sample.jpg","sample_width":1057,"sample_height":1500,"sample_file_size":341221,"jpeg_url":"https://yande.re/image/e8cca3095784eb5a07b04bbd9a5ddb63/yande.re%20223451%20gintama%20spike%20swimsuits%20tama_%28gintama%29.jpg","jpeg_width":1800,"jpeg_height":2554,"jpeg_file_size":0,"rating":"s","has_children":false,"parent_id":null,"status":"active","width":1800,"height":2554,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[]},{"id":223450,"tags":"seifuku tagme","created_at":1346613261,"creator_id":1305,"author":"Radioactive","change":1116439,"source":"","score":2,"md5":"81c12211af6b5fd29a542020b77a2050","file_size":4127383,"file_url":"https://yande.re/image/81c12211af6b5fd29a542020b77a2050/yande.re%20223450%20seifuku%20tagme.jpg","is_shown_in_index":true,"preview_url":"https://yande.re/data/preview/81/c1/81c12211af6b5fd29a542020b77a2050.jpg","preview_width":150,"preview_height":110,"actual_preview_width":300,"actual_preview_height":219,"sample_url":"https://yande.re/sample/81c12211af6b5fd29a542020b77a2050/yande.re%20223450%20sample.jpg","sample_width":1500,"sample_height":1095,"sample_file_size":301709,"jpeg_url":"https://yande.re/image/81c12211af6b5fd29a542020b77a2050/yande.re%20223450%20seifuku%20tagme.jpg","jpeg_width":4215,"jpeg_height":3077,"jpeg_file_size":0,"rating":"s","has_children":false,"parent_id":null,"status":"active","width":4215,"height":3077,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[]},{"id":223449,"tags":"spike","created_at":1346613159,"creator_id":9241,"author":"eridani","change":1116467,"source":"http://i1.pixiv.net/img43/img/daible2099/29799790.jpg","score":2,"md5":"755b06d4021b1cb63b828fc774a07949","file_size":1547099,"file_url":"https://yande.re/image/755b06d4021b1cb63b828fc774a07949/yande.re%20223449%20spike.jpg","is_shown_in_index":true,"preview_url":"https://yande.re/data/preview/75/5b/755b06d4021b1cb63b828fc774a07949.jpg","preview_width":150,"preview_height":98,"actual_preview_width":300,"actual_preview_height":196,"sample_url":"https://yande.re/sample/755b06d4021b1cb63b828fc774a07949/yande.re%20223449%20sample.jpg","sample_width":1500,"sample_height":978,"sample_file_size":294920,"jpeg_url":"https://yande.re/image/755b06d4021b1cb63b828fc774a07949/yande.re%20223449%20spike.jpg","jpeg_width":2300,"jpeg_height":1500,"jpeg_file_size":0,"rating":"s","has_children":false,"parent_id":null,"status":"active","width":2300,"height":1500,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[]},{"id":223448,"tags":"hachisuka_goemon loli oda_nobuna_no_yabou tagme","created_at":1346613118,"creator_id":1305,"author":"Radioactive","change":1116478,"source":"","score":6,"md5":"e11be9c0eeeeb520591399dddb167903","file_size":904093,"file_url":"https://yande.re/image/e11be9c0eeeeb520591399dddb167903/yande.re%20223448%20hachisuka_goemon%20loli%20oda_nobuna_no_yabou%20tagme.jpg","is_shown_in_index":true,"preview_url":"https://yande.re/data/preview/e1/1b/e11be9c0eeeeb520591399dddb167903.jpg","preview_width":100,"preview_height":150,"actual_preview_width":200,"actual_preview_height":300,"sample_url":"https://yande.re/sample/e11be9c0eeeeb520591399dddb167903/yande.re%20223448%20sample.jpg","sample_width":1001,"sample_height":1500,"sample_file_size":347594,"jpeg_url":"https://yande.re/image/e11be9c0eeeeb520591399dddb167903/yande.re%20223448%20hachisuka_goemon%20loli%20oda_nobuna_no_yabou%20tagme.jpg","jpeg_width":1200,"jpeg_height":1799,"jpeg_file_size":0,"rating":"q","has_children":false,"parent_id":null,"status":"active","width":1200,"height":1799,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[]},{"id":223447,"tags":"spike","created_at":1346613051,"creator_id":9241,"author":"eridani","change":1116468,"source":"http://i1.pixiv.net/img43/img/daible2099/28499111.jpg","score":1,"md5":"ed6088c8cd583ff10727319efd61192c","file_size":1028878,"file_url":"https://yande.re/image/ed6088c8cd583ff10727319efd61192c/yande.re%20223447%20spike.jpg","is_shown_in_index":true,"preview_url":"https://yande.re/data/preview/ed/60/ed6088c8cd583ff10727319efd61192c.jpg","preview_width":106,"preview_height":150,"actual_preview_width":212,"actual_preview_height":300,"sample_url":"https://yande.re/sample/ed6088c8cd583ff10727319efd61192c/yande.re%20223447%20sample.jpg","sample_width":1060,"sample_height":1500,"sample_file_size":300777,"jpeg_url":"https://yande.re/image/ed6088c8cd583ff10727319efd61192c/yande.re%20223447%20spike.jpg","jpeg_width":1240,"jpeg_height":1754,"jpeg_file_size":0,"rating":"s","has_children":false,"parent_id":null,"status":"active","width":1240,"height":1754,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[]},{"id":223446,"tags":"shuka tagme","created_at":1346612934,"creator_id":1305,"author":"Radioactive","change":1116431,"source":"http://i2.pixiv.net/img04/img/taupe/29860239.jpg","score":0,"md5":"769aac131791f8f91b92fab96cd9b001","file_size":855283,"file_url":"https://yande.re/image/769aac131791f8f91b92fab96cd9b001/yande.re%20223446%20shuka%20tagme.jpg","is_shown_in_index":true,"preview_url":"https://yande.re/data/preview/76/9a/769aac131791f8f91b92fab96cd9b001.jpg","preview_width":150,"preview_height":106,"actual_preview_width":300,"actual_preview_height":212,"sample_url":"https://yande.re/sample/769aac131791f8f91b92fab96cd9b001/yande.re%20223446%20sample.jpg","sample_width":1500,"sample_height":1062,"sample_file_size":722959,"jpeg_url":"https://yande.re/image/769aac131791f8f91b92fab96cd9b001/yande.re%20223446%20shuka%20tagme.jpg","jpeg_width":1500,"jpeg_height":1062,"jpeg_file_size":0,"rating":"s","has_children":false,"parent_id":null,"status":"active","width":1500,"height":1062,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[]},{"id":223445,"tags":"kotoba_noriaki tagme","created_at":1346612879,"creator_id":1305,"author":"Radioactive","change":1116430,"source":"http://i2.pixiv.net/img12/img/ijiekoniidennpa/29859630.jpg","score":1,"md5":"5a0fc948ab53a98e8fd65fd38553d926","file_size":2233025,"file_url":"https://yande.re/image/5a0fc948ab53a98e8fd65fd38553d926/yande.re%20223445%20kotoba_noriaki%20tagme.jpg","is_shown_in_index":true,"preview_url":"https://yande.re/data/preview/5a/0f/5a0fc948ab53a98e8fd65fd38553d926.jpg","preview_width":142,"preview_height":150,"actual_preview_width":284,"actual_preview_height":300,"sample_url":"https://yande.re/sample/5a0fc948ab53a98e8fd65fd38553d926/yande.re%20223445%20sample.jpg","sample_width":1200,"sample_height":1268,"sample_file_size":266177,"jpeg_url":"https://yande.re/image/5a0fc948ab53a98e8fd65fd38553d926/yande.re%20223445%20kotoba_noriaki%20tagme.jpg","jpeg_width":1904,"jpeg_height":2012,"jpeg_file_size":0,"rating":"s","has_children":false,"parent_id":null,"status":"active","width":1904,"height":2012,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[]},{"id":223444,"tags":"c.c._lemon c.c._lemon_(character) spike tagme","created_at":1346612873,"creator_id":9241,"author":"eridani","change":1116469,"source":"http://i1.pixiv.net/img43/img/daible2099/28216247.jpg","score":0,"md5":"38535a12bdee82109ddc8849f1484dfe","file_size":717165,"file_url":"https://yande.re/image/38535a12bdee82109ddc8849f1484dfe/yande.re%20223444%20c.c._lemon%20c.c._lemon_%28character%29%20spike%20tagme.jpg","is_shown_in_index":true,"preview_url":"https://yande.re/data/preview/38/53/38535a12bdee82109ddc8849f1484dfe.jpg","preview_width":106,"preview_height":150,"actual_preview_width":212,"actual_preview_height":300,"sample_url":"https://yande.re/sample/38535a12bdee82109ddc8849f1484dfe/yande.re%20223444%20sample.jpg","sample_width":1060,"sample_height":1500,"sample_file_size":216147,"jpeg_url":"https://yande.re/image/38535a12bdee82109ddc8849f1484dfe/yande.re%20223444%20c.c._lemon%20c.c._lemon_%28character%29%20spike%20tagme.jpg","jpeg_width":1158,"jpeg_height":1638,"jpeg_file_size":0,"rating":"s","has_children":false,"parent_id":null,"status":"active","width":1158,"height":1638,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[]},{"id":223443,"tags":"archaic_sealed_heat tagme","created_at":1346612147,"creator_id":1305,"author":"Radioactive","change":1116426,"source":"","score":0,"md5":"582d734474d73fcdebef21e5b58b12fd","file_size":5494320,"file_url":"https://yande.re/image/582d734474d73fcdebef21e5b58b12fd/yande.re%20223443%20archaic_sealed_heat%20tagme.png","is_shown_in_index":true,"preview_url":"https://yande.re/data/preview/58/2d/582d734474d73fcdebef21e5b58b12fd.jpg","preview_width":127,"preview_height":150,"actual_preview_width":254,"actual_preview_height":300,"sample_url":"https://yande.re/sample/582d734474d73fcdebef21e5b58b12fd/yande.re%20223443%20sample.jpg","sample_width":1200,"sample_height":1415,"sample_file_size":355881,"jpeg_url":"https://yande.re/jpeg/582d734474d73fcdebef21e5b58b12fd/yande.re%20223443%20archaic_sealed_heat%20tagme.jpg","jpeg_width":2127,"jpeg_height":2508,"jpeg_file_size":2023132,"rating":"s","has_children":false,"parent_id":null,"status":"active","width":2127,"height":2508,"is_held":false,"frames_pending_string":"","frames_pending":[],"frames_string":"","frames":[]}]
|
data/lib/booru.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
$:.unshift File.dirname(__FILE__) # For use/testing when no gem is installed
|
3
|
+
|
4
|
+
# stdlib
|
5
|
+
require 'open-uri'
|
6
|
+
require 'cgi'
|
7
|
+
require 'digest'
|
8
|
+
require 'json'
|
9
|
+
|
10
|
+
# third party
|
11
|
+
begin
|
12
|
+
require 'trollop'
|
13
|
+
require 'rest-client'
|
14
|
+
require 'nori'
|
15
|
+
rescue LoadError => e
|
16
|
+
puts "LoadError: #{e.message}"
|
17
|
+
end
|
18
|
+
|
19
|
+
# internal api methods
|
20
|
+
require 'booru/version'
|
21
|
+
require 'booru/error.rb'
|
22
|
+
require 'booru/request.rb'
|
23
|
+
require 'booru/api.rb'
|
24
|
+
require 'booru/api/artist'
|
25
|
+
require 'booru/api/comment'
|
26
|
+
require 'booru/api/favorite'
|
27
|
+
require 'booru/api/forum'
|
28
|
+
require 'booru/api/note'
|
29
|
+
require 'booru/api/pool'
|
30
|
+
require 'booru/api/post'
|
31
|
+
require 'booru/api/tag'
|
32
|
+
require 'booru/api/user'
|
33
|
+
require 'booru/api/wiki'
|
34
|
+
|
35
|
+
# internal client
|
36
|
+
require 'booru/client.rb'
|
37
|
+
require 'booru/client/konachan.rb'
|
38
|
+
require 'booru/client/yandere.rb'
|
39
|
+
require 'booru/client/danbooru.rb'
|
40
|
+
require 'booru/client/behoimi.rb'
|
41
|
+
|
42
|
+
# internal tools
|
43
|
+
require 'booru/utils'
|
44
|
+
require 'booru/downloader.rb'
|
data/lib/booru/api.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
module Booru
|
3
|
+
module API
|
4
|
+
|
5
|
+
def parse(response)
|
6
|
+
case @format
|
7
|
+
when :json
|
8
|
+
JSON.parse(response)
|
9
|
+
when :xml
|
10
|
+
Nori.parse(response)
|
11
|
+
else
|
12
|
+
response
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def query_string(path, options = {}, formatted = false)
|
17
|
+
params = options.map { |k,v| "#{k}=#{v}" }.join("&")
|
18
|
+
path = formatted_path(path) unless formatted
|
19
|
+
path += "?#{params}" unless params.empty?
|
20
|
+
end
|
21
|
+
|
22
|
+
def formatted_path(path)
|
23
|
+
[path, @format].compact.join('.')
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
module Booru
|
3
|
+
module API
|
4
|
+
module Artist
|
5
|
+
|
6
|
+
# List: This action retrieves a list of artists
|
7
|
+
# TODO optional args?
|
8
|
+
#
|
9
|
+
# options - The Hash used to refine the selection (default: {}):
|
10
|
+
# :name - The name (or a fragment of the name) of the
|
11
|
+
# artist.
|
12
|
+
# :order - Can be date or name.
|
13
|
+
# :page - The page number (default: 1)
|
14
|
+
def list_artists(options = {})
|
15
|
+
base_url = '/artist/index'
|
16
|
+
query = query_string(base_url, options)
|
17
|
+
parse(get(query))
|
18
|
+
end
|
19
|
+
|
20
|
+
# Create: This action creates an artist
|
21
|
+
# TODO Optional args?
|
22
|
+
#
|
23
|
+
# options - The Hash used to refine the selection (default: {}):
|
24
|
+
# :artist[name] - The artist's name.
|
25
|
+
# :artist[urls] - A list of URLs associated with the
|
26
|
+
# artist, whitespace delimited.
|
27
|
+
# :artist[alias] - The artist that this artist is an
|
28
|
+
# alias for. Simply enter the alias
|
29
|
+
# artist's name.
|
30
|
+
# :artist[group] - The group or cicle that this artist is a
|
31
|
+
# member of. Simply enter the group's name.
|
32
|
+
def create_artist(options = {})
|
33
|
+
base_url = '/artist/create'
|
34
|
+
query = query_string(base_url, options)
|
35
|
+
parse(post(query))
|
36
|
+
end
|
37
|
+
|
38
|
+
# Update: This action updates an artist's attributes
|
39
|
+
#
|
40
|
+
# Only the id parameter is required.
|
41
|
+
#
|
42
|
+
# options - The Hash used to refine the selection (default: {}):
|
43
|
+
# :id - The id of thr artist to update.
|
44
|
+
# :artist[name] - The artist's name (optional).
|
45
|
+
# :artist[urls] - A list of URLs associated with the
|
46
|
+
# artist, whitespace delimited (optional).
|
47
|
+
# :artist[alias] - The artist that this artist is an
|
48
|
+
# alias for. Simply enter the alias
|
49
|
+
# artist's name (optional).
|
50
|
+
# :artist[group] - The group or cicle that this artist is a
|
51
|
+
# member of. Simply enter the group's name
|
52
|
+
# (optional).
|
53
|
+
def update_artist(options = {})
|
54
|
+
base_url = '/artist/update'
|
55
|
+
query = query_string(base_url, options)
|
56
|
+
parse(post(query))
|
57
|
+
end
|
58
|
+
|
59
|
+
# Destroy: This action deletes an artist
|
60
|
+
#
|
61
|
+
# options - The Hash used to refine the selection (default: {}):
|
62
|
+
# :id - The id of the artist to destroy.
|
63
|
+
#
|
64
|
+
# You must be logged in to delete artists.
|
65
|
+
def destroy_artist(options = {})
|
66
|
+
base_url = '/artist/destroy'
|
67
|
+
query = query_string(base_url, options)
|
68
|
+
parse(post(query))
|
69
|
+
end
|
70
|
+
|
71
|
+
alias_method :delete_artist, :destroy_artist
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
module Booru
|
3
|
+
module API
|
4
|
+
module Comment
|
5
|
+
|
6
|
+
# Show: This action retrieves a single comment.
|
7
|
+
#
|
8
|
+
# options - The Hash used to refine the selection (default: {}):
|
9
|
+
# :id - The id number of the comment to retrieve.
|
10
|
+
def show_comment(options = {})
|
11
|
+
base_url = '/comment/destroy'
|
12
|
+
query = query_string(base_url, options)
|
13
|
+
parse(get(query))
|
14
|
+
end
|
15
|
+
|
16
|
+
# Create: This action creates a comment
|
17
|
+
#
|
18
|
+
# options - The Hash used to refine the selection (default: {}):
|
19
|
+
# :comment[anonymous] - Set to 1 if you want to post this
|
20
|
+
# comment anonymously (optional).
|
21
|
+
# :comment[post_id] - The post id number to which you are
|
22
|
+
# responding.
|
23
|
+
# :comment[body] - The body of the comment.
|
24
|
+
def create_comment(options = {})
|
25
|
+
base_url = '/comment/create'
|
26
|
+
query = query_string(base_url, options)
|
27
|
+
parse(post(query))
|
28
|
+
end
|
29
|
+
|
30
|
+
alias_method :post_comment, :create_comment
|
31
|
+
|
32
|
+
# Destroy: This action deletes a comment
|
33
|
+
#
|
34
|
+
# options - The Hash used to refine the selection (default: {}):
|
35
|
+
# :id - The id number of the comment to delete.
|
36
|
+
#
|
37
|
+
# You must be logged in to use this action. You must also be the owner
|
38
|
+
# of the comment, or you must be a moderator.
|
39
|
+
def destroy_comment(options = {})
|
40
|
+
base_url = '/comment/destroy'
|
41
|
+
query = query_string(base_url, options)
|
42
|
+
parse(post(query))
|
43
|
+
end
|
44
|
+
|
45
|
+
alias_method :delete_comment, :destroy_comment
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
module Booru
|
3
|
+
module API
|
4
|
+
module Favorite
|
5
|
+
# List Users: This action retrieves a list of users who have
|
6
|
+
# 'favorited' the post specified
|
7
|
+
#
|
8
|
+
# options - The Hash used to refine the selection (default: {}):
|
9
|
+
# :id - The post id.
|
10
|
+
#
|
11
|
+
# There is no XML API for this action.
|
12
|
+
def list_favorites(options = {})
|
13
|
+
base_url = 'favorite/list_users.xml'
|
14
|
+
query = query_string(base_url, options, formatted = true)
|
15
|
+
parse(get(query))
|
16
|
+
end
|
17
|
+
|
18
|
+
alias_method :post_favorites, :list_favorites
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
module Booru
|
3
|
+
module API
|
4
|
+
module Forum
|
5
|
+
|
6
|
+
# List: This action retrieves information from the forum
|
7
|
+
#
|
8
|
+
# If you don't specify any parameters you'll get a list of all the
|
9
|
+
# parent topics.
|
10
|
+
#
|
11
|
+
# options - The Hash used to refine the selection (default: {}):
|
12
|
+
# :parent_id - The parent ID number. You'll return all the
|
13
|
+
# responses to that forum post.
|
14
|
+
def forum_list(options = {})
|
15
|
+
base_url = 'forum/index'
|
16
|
+
query = query_string(base_url, options)
|
17
|
+
parse(get(query))
|
18
|
+
end
|
19
|
+
|
20
|
+
alias_method :list_forum, :forum_list
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
module Booru
|
3
|
+
module API
|
4
|
+
module Note
|
5
|
+
|
6
|
+
# List: This action retrieves a list of notes for a specified post
|
7
|
+
#
|
8
|
+
# options - The Hash used to refine the selection (default: {}):
|
9
|
+
# :post_id - The post id number to retrieve notes for.
|
10
|
+
def list_notes(options = {})
|
11
|
+
base_url = '/note/index'
|
12
|
+
query = query_string(base_url, options)
|
13
|
+
parse(get(query))
|
14
|
+
end
|
15
|
+
|
16
|
+
# Search: This action searches and retrieves a list of notes
|
17
|
+
#
|
18
|
+
# options - The Hash used to refine the selection (default: {}):
|
19
|
+
# :query - A word or phrase to search for.
|
20
|
+
def search_notes(options = {})
|
21
|
+
base_url = '/note/search'
|
22
|
+
query = query_string(base_url, options)
|
23
|
+
parse(get(query))
|
24
|
+
end
|
25
|
+
|
26
|
+
# History: This action retrieves a note's history (previous versions)
|
27
|
+
#
|
28
|
+
# You can either specify id, post_id, or nothing. Specifying nothing
|
29
|
+
# will give you a list of every note verison.
|
30
|
+
#
|
31
|
+
# options - The Hash used to refine the selection (default: {}):
|
32
|
+
# :limit - How many versions to retrieve.
|
33
|
+
# :page - The offset.
|
34
|
+
# :post_id - The post id number to retrieve note versions for.
|
35
|
+
# :id - The note id number to retrieve versions for.
|
36
|
+
def note_history(options = {})
|
37
|
+
base_url = '/note/history'
|
38
|
+
query = query_string(base_url, options)
|
39
|
+
parse(get(query))
|
40
|
+
end
|
41
|
+
|
42
|
+
# Revert: This action reverts a note to a previous version
|
43
|
+
#
|
44
|
+
# options - The Hash used to refine the selection (default: {}):
|
45
|
+
# :id - The note id to update.
|
46
|
+
# :version - The version to revert to.
|
47
|
+
#
|
48
|
+
# Potential error reasons: "Post is locked"
|
49
|
+
def revert_note(options = {})
|
50
|
+
base_url = '/note/revert'
|
51
|
+
query = query_string(base_url, options)
|
52
|
+
parse(post(query))
|
53
|
+
end
|
54
|
+
|
55
|
+
# Create/Update: This action creates or modifies an existing note
|
56
|
+
#
|
57
|
+
# Notes differ from the other controllers in that the interface for
|
58
|
+
# creation and updates is the same. If you supply an id parameter,
|
59
|
+
# then Danbooru will assume you're updating an existing note.
|
60
|
+
# Otherwise, it will create a new note.
|
61
|
+
#
|
62
|
+
# options - The Hash used to refine the selection (default: {}):
|
63
|
+
# :id - If you are updating a note, this is
|
64
|
+
# the note id number to update.
|
65
|
+
# :note[post_id] - The post id number of this note.
|
66
|
+
# :note[x] - The x coordinate of the note.
|
67
|
+
# :note[y] - The y coordinate of the note.
|
68
|
+
# :note[width] - The width of the note.
|
69
|
+
# :note[height] - The height of the note.
|
70
|
+
# :note[is_active] - Whether or not the note is visible.
|
71
|
+
# Set to 1 for active, 0 for inactive.
|
72
|
+
# :note[body] - The note message.
|
73
|
+
#
|
74
|
+
# Potential error reasons: "Post is locked"
|
75
|
+
def update_note(options = {})
|
76
|
+
base_url = '/note/update'
|
77
|
+
query = query_string(base_url, options)
|
78
|
+
parse(post(query))
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|