41 Commits

Author SHA1 Message Date
eai04191
dea1eeabd6 エラーを前置きにした
Co-authored-by: hina <hina@hinaloe.net>
2019-07-03 17:03:30 +09:00
eai04191
0284827fcf 型「カタカタ……」 2019-07-03 16:33:24 +09:00
eai04191
d7ffcfcf7b コメントを検索対象に含まれないようにする 2019-07-03 16:29:38 +09:00
eai04191
23f9d1a220 配列をまとめた
Co-authored-by: hina <hina@hinaloe.net>
2019-07-03 15:12:53 +09:00
eai04191
a47f4537b1 Add test fixture update command 2019-07-02 15:02:29 +09:00
eai04191
a13ac75fba テストをユニークにする
ついでにテスト名とfixtureファイル名を同一にする
2019-07-02 15:02:29 +09:00
eai04191
a4fbed9060 死んだテストを交換 2019-07-02 15:02:29 +09:00
shibafu
cf5e269fd8 Merge pull request #233 from eai04191/feature/lint-tests
Lint tests
2019-07-02 12:51:40 +09:00
eai04191
4747f822ab Lint tests 2019-07-02 12:44:25 +09:00
shibafu
fa171bc3d3 Merge pull request #224 from shikorism/feature/105-tag-suggest
チェックイン時にメタデータからタグをサジェストする
2019-06-29 19:17:07 +09:00
shibafu
b828a233bc Merge pull request #227 from eai04191/feature/icon-identity
Gravatarのデフォルトアイコンをretroにする
2019-06-29 17:24:17 +09:00
shibafu
bbfd6a9895 Merge pull request #226 from eai04191/feature/resolver-pixiv-fix
PixivResolverの取得画像をregularにする
2019-06-29 00:13:44 +09:00
shibafu
e1dd2b1c8f メタデータの読み込み中・読み込み失敗を表示するようにした 2019-06-28 00:27:31 +09:00
shibafu
ec4e0f3dda メタデータプレビュー専用のスタイルなので .link-card-mini はSFC内に封印 2019-06-27 23:55:36 +09:00
shibafu
0aed1d9ebe 画像を含まないメタデータの場合、サムネイルを非表示にする 2019-06-27 23:53:04 +09:00
shibafu
d8cdf218b7 Update resources/assets/sass/components/_link-card.scss
Co-Authored-By: Aoi Irie <eai@mizle.net>
2019-06-27 23:50:59 +09:00
eai04191
7c9eefe478 Gravatarのデフォルトをretroに指定 2019-06-27 13:32:20 +09:00
eai04191
810a1dbc59 PixivResolverの取得画像をregularにする 2019-06-27 00:34:53 +09:00
shibafu
a521a26aa5 Merge pull request #225 from eai04191/feature/test-komiflo
KomifloResolverのテストを追加
2019-06-27 00:21:24 +09:00
eai04191
e80acf79b7 KomifloResolverのテストを追加 2019-06-27 00:05:47 +09:00
shibafu
1b5fbfabc4 Merge pull request #223 from eai04191/feature/codecov
codecovを追加する
2019-06-26 23:32:11 +09:00
shibafu
0ad0b268bc 既に入力されているタグを二重追加しない 2019-06-26 23:23:06 +09:00
shibafu
da19806a3d ページロード時点でオカズリンクにURLが入力されている場合、すぐにメタデータを取得する 2019-06-26 23:20:53 +09:00
eai04191
4390af53f9 revert Dockerfile 2019-06-26 23:15:04 +09:00
shibafu
dd12582dba Merge pull request #189 from eai04191/feature/test-pixiv
PixivResolverのテストを追加
2019-06-26 22:32:15 +09:00
eai04191
6e81f091d1 必要のないパイプを削除 2019-06-26 15:46:35 +09:00
eai04191
c60d41427d Add codecov 2019-06-26 15:31:14 +09:00
shibafu
b8482e0e3c メタデータプレビューとタグ候補選択のコンポーネント 2019-06-26 01:44:18 +09:00
shibafu
a1cb313d4f Card APIでタグ情報も取れるようにする 2019-06-26 01:40:55 +09:00
eai04191
53f7a17b8e PixivResolverのテストを追加 2019-06-26 01:12:25 +09:00
shibafu
41039a6650 Merge pull request #214 from shikorism/feature/editorconfig
.editorconfigを追加
2019-06-24 22:01:46 +09:00
shibafu
6d4f6e47a3 Merge pull request #222 from shikorism/fix/218
ユーザー入力テキストをLinkifyする時に target="_blank" rel="noopener" を付与する
2019-06-24 22:01:13 +09:00
shibafu
47eec65101 ユーザー入力テキストをLinkifyする時に target="_blank" rel="noopener" を付与する 2019-06-24 20:19:58 +09:00
shibafu
c2da5eef9d Merge pull request #217 from eai04191/feature/update-readme
README更新
2019-06-24 20:11:16 +09:00
shibafu
94cabdc827 Merge pull request #204 from shikorism/feature/average-range-limit
平均記録を直近30チェックインから算出するように変更
2019-06-24 20:10:20 +09:00
shibafu
1e11bd3290 JSON fileのインデント幅を指定
ただしcomposer.jsonは4 spaceを使うので、据え置く
2019-06-24 20:05:30 +09:00
shibafu
f729fa7908 YAML fileのインデント幅を指定 2019-06-24 19:59:43 +09:00
eai04191
5172f1cb70 chownの変更先をstorageのみにする 2019-06-18 11:18:06 +09:00
eai04191
663888dcb1 prestissimoを使用してインストールを高速化 2019-06-18 11:16:51 +09:00
shibafu
8c5a7f4d09 .editorconfigを追加 2019-06-16 23:08:45 +09:00
shibafu
709f10f098 平均記録を直近30チェックインから算出するように変更 2019-06-12 00:03:18 +09:00
41 changed files with 7392 additions and 63 deletions

View File

@@ -1,4 +1,5 @@
version: 2
jobs:
build:
docker:
@@ -67,7 +68,14 @@ jobs:
- run:
command: |
mkdir -p /tmp/phpunit
./vendor/bin/phpunit --log-junit /tmp/phpunit/phpunit.xml
./vendor/bin/phpunit --log-junit /tmp/phpunit/phpunit.xml --coverage-clover=/tmp/phpunit/coverage.xml
when: always
- store_test_results:
path: /tmp/phpunit
- store_artifacts:
path: /tmp/phpunit/coverage.xml
# Upload coverage
- run:
command: bash <(curl -s https://codecov.io/bash) -f /tmp/phpunit/coverage.xml
when: always

21
.editorconfig Normal file
View File

@@ -0,0 +1,21 @@
root = true
[*]
indent_style = space
indent_size = 4
charset = utf-8
end_of_line = lf
trim_trailing_whitespace = true
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false
[*.yml]
indent_size = 2
[*.json]
indent_size = 2
[composer.json]
indent_size = 4

View File

@@ -36,6 +36,7 @@ docker-compose up -d
4. Composer と yarn を使い必要なライブラリをインストールします。
```
docker-compose exec web composer global require hirak/prestissimo
docker-compose exec web composer install
docker-compose exec web yarn install
```
@@ -50,7 +51,7 @@ docker-compose exec web php artisan migrate
6. ファイルに書き込めるように権限を設定します。
```
docker-compose exec web chown -R www-data /var/www/html
docker-compose exec web chown -R www-data /var/www/html/storage
```
7. アセットをビルドします。

View File

@@ -0,0 +1,82 @@
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
class UpdateFixture extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'test:fixture:update {resolver : Some Resolver Name }';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Update specific fixtures';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$resolver_base_path = __DIR__ . '/../../../tests/Unit/MetadataResolver/';
$test_file_path = $resolver_base_path . $this->argument('resolver') . 'ResolverTest.php';
if (!file_exists($test_file_path)) {
throw new \RuntimeException($this->argument('resolver') . 'ResolverTest.php is not found.');
}
$this->info($this->argument('resolver') . 'ResolverTest.php is found.');
$test_file = file_get_contents($test_file_path);
$test_file_without_comment = '';
// コメントを削除する
$tokens = token_get_all($test_file);
foreach ($tokens as $token) {
if (is_string($token)) {
$test_file_without_comment .= $token;
} else {
list($id, $text) = $token;
if (token_name($id) !== 'T_COMMENT') {
$test_file_without_comment .= $text;
}
}
}
preg_match_all('~file_get_contents\(__DIR__ . \'/(.+)\'\);~', $test_file_without_comment, $fixtures);
preg_match_all('~\$this->assertSame\(\'(.+)\', \(string\) \$this->handler->getLastRequest\(\)->getUri\(\)\);~m', $test_file_without_comment, $urls);
$update_list = array_combine($fixtures[1], $urls[1]);
$progress = $this->output->createProgressBar(count($update_list));
$progress->setFormat('Updating %path% from %url%' . PHP_EOL . '%current%/%max% [%bar%] %percent:3s%%');
foreach ($update_list as $path => $url) {
sleep(1);
$progress->setMessage($path, 'path');
$progress->setMessage($url, 'url');
file_put_contents($resolver_base_path . $path, file_get_contents($url));
$progress->advance();
}
$progress->finish();
$this->output->newLine();
$this->info('Update Complete!');
}
}

View File

@@ -51,6 +51,8 @@ class CardController
$metadata->tags()->sync($tagIds);
}
$metadata->load('tags');
$response = response($metadata);
if (!config('app.debug')) {
$response = $response->setCache(['public' => true, 'max_age' => 86400]);

View File

@@ -35,9 +35,27 @@ class ProfileStatsComposer
}
// 概況欄のデータ取得
$average = DB::select(<<<'SQL'
SELECT
avg(span) AS average
FROM
(
SELECT
extract(epoch from ejaculated_date - lead(ejaculated_date, 1, NULL) OVER (ORDER BY ejaculated_date DESC)) AS span
FROM
ejaculations
WHERE
user_id = :user_id
ORDER BY
ejaculated_date DESC
LIMIT
30
) AS temp
SQL
, ['user_id' => $user->id]);
$summary = DB::select(<<<'SQL'
SELECT
avg(span) AS average,
max(span) AS longest,
min(span) AS shortest,
sum(span) AS total_times,
@@ -56,6 +74,6 @@ FROM
SQL
, ['user_id' => $user->id]);
$view->with(compact('latestEjaculation', 'currentSession', 'summary'));
$view->with(compact('latestEjaculation', 'currentSession', 'average', 'summary'));
}
}

View File

@@ -11,7 +11,7 @@ class Metadata extends Model
protected $keyType = 'string';
protected $fillable = ['url', 'title', 'description', 'image', 'expires_at'];
protected $visible = ['url', 'title', 'description', 'image', 'expires_at'];
protected $visible = ['url', 'title', 'description', 'image', 'expires_at', 'tags'];
protected $dates = ['created_at', 'updated_at', 'expires_at'];

View File

@@ -64,7 +64,7 @@ class PixivResolver implements Resolver
$metadata->title = $json['body']['illustTitle'] ?? '';
$metadata->description = '投稿者: ' . $json['body']['userName'] . PHP_EOL . strip_tags(str_replace('<br />', PHP_EOL, $json['body']['illustComment'] ?? ''));
$metadata->image = $this->proxize($json['body']['urls']['original'] ?? '');
$metadata->image = $this->proxize($json['body']['urls']['regular'] ?? '');
// ページ数の指定がある場合は画像URLをそのページにする
if ($page != 0) {

View File

@@ -11,6 +11,9 @@ class Tag extends Model
protected $fillable = [
'name'
];
protected $visible = [
'name'
];
public function ejaculations()
{

View File

@@ -41,7 +41,7 @@ class User extends Authenticatable
{
$hash = md5(strtolower(trim($this->email)));
return '//www.gravatar.com/avatar/' . $hash . '?s=' . $size;
return '//www.gravatar.com/avatar/' . $hash . '?s=' . $size . '&d=retro';
}
/**

View File

@@ -35,7 +35,7 @@ class Formatter
*/
public function linkify($text)
{
return $this->linkify->processUrls($text);
return $this->linkify->processUrls($text, ['attr' => ['target' => '_blank', 'rel' => 'noopener']]);
}
/**

View File

@@ -1,9 +1,66 @@
import Vue from 'vue';
import TagInput from "./components/TagInput.vue";
import MetadataPreview from './components/MetadataPreview.vue';
export const bus = new Vue({name: "EventBus"});
export enum MetadataLoadState {
Inactive,
Loading,
Success,
Failed,
}
new Vue({
el: '#app',
data: {
metadata: null,
metadataLoadState: MetadataLoadState.Inactive,
},
components: {
TagInput
TagInput,
MetadataPreview
},
mounted() {
// オカズリンクにURLがセットされている場合は、すぐにメタデータを取得する
const linkInput = this.$el.querySelector<HTMLInputElement>("#link");
if (linkInput && /^https?:\/\//.test(linkInput.value)) {
this.fetchMetadata(linkInput.value);
}
},
methods: {
// オカズリンクの変更時
onChangeLink(event: Event) {
if (event.target instanceof HTMLInputElement) {
const url = event.target.value;
if (url.trim() === '' || !/^https?:\/\//.test(url)) {
this.metadata = null;
this.metadataLoadState = MetadataLoadState.Inactive;
return;
}
this.fetchMetadata(url);
}
},
// メタデータの取得
fetchMetadata(url: string) {
this.metadataLoadState = MetadataLoadState.Loading;
$.ajax({
url: '/api/checkin/card',
method: 'get',
type: 'json',
data: {
url
}
}).then(data => {
this.metadata = data;
this.metadataLoadState = MetadataLoadState.Success;
}).catch(e => {
this.metadata = null;
this.metadataLoadState = MetadataLoadState.Failed;
});
}
}
});

View File

@@ -0,0 +1,119 @@
<template>
<div class="form-row" v-if="state !== MetadataLoadState.Inactive">
<div class="form-group col-sm-12">
<div class="card link-card-mini mb-2 px-0">
<div v-if="state === MetadataLoadState.Loading" class="row no-gutters">
<div class="col-12">
<div class="card-body">
<h6 class="card-title text-center font-weight-bold text-info" style="font-size: small;"><span class="oi oi-loop-circular"></span> オカズの情報を読み込んでいます</h6>
</div>
</div>
</div>
<div v-else-if="state === MetadataLoadState.Success" class="row no-gutters">
<div v-if="hasImage" class="col-4 justify-content-center align-items-center">
<img :src="metadata.image" alt="Thumbnail" class="card-img-top-to-left bg-secondary">
</div>
<div :class="descClasses">
<div class="card-body">
<h6 class="card-title font-weight-bold" style="font-size: small;">{{ metadata.title }}</h6>
<template v-if="suggestions.length > 0">
<p class="card-text mb-2" style="font-size: small;">タグ候補<br><span class="text-secondary">(クリックするとタグ入力欄にコピーできます)</span></p>
<ul class="list-inline d-inline">
<li v-for="tag in suggestions"
class="list-inline-item badge badge-primary metadata-tag-item"
@click="addTag(tag)"><span class="oi oi-tag"></span> {{ tag }}</li>
</ul>
</template>
</div>
</div>
</div>
<div v-else class="row no-gutters">
<div class="col-12">
<div class="card-body">
<h6 class="card-title text-center font-weight-bold text-danger" style="font-size: small;"><span class="oi oi-circle-x"></span> オカズの情報を読み込めませんでした</h6>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script lang="ts">
import {Vue, Component, Prop} from "vue-property-decorator";
import {bus, MetadataLoadState} from "../checkin";
type Metadata = {
url: string,
title: string,
description: string,
image: string,
expires_at: string | null,
tags: {
name: string
}[],
};
@Component
export default class MetadataPreview extends Vue {
@Prop() readonly state!: MetadataLoadState;
@Prop() readonly metadata!: Metadata | null;
// for use in v-if
private readonly MetadataLoadState = MetadataLoadState;
addTag(tag: string) {
bus.$emit("add-tag", tag);
}
get suggestions() {
if (this.metadata === null) {
return [];
}
return this.metadata.tags.map(t => t.name);
}
get hasImage() {
return this.metadata !== null && this.metadata.image !== ''
}
get descClasses() {
return {
"col-8": this.hasImage,
"col-12": !this.hasImage,
};
}
}
</script>
<style lang="scss" scoped>
.link-card-mini {
$height: 150px;
.row > div {
overflow: hidden;
}
.row > div:first-child {
display: flex;
&:not([display=none]) {
min-height: $height;
img {
position: absolute;
}
}
}
.card-text {
white-space: pre-line;
}
}
.metadata-tag-item {
cursor: pointer;
user-select: none;
}
</style>

View File

@@ -17,6 +17,7 @@
<script lang="ts">
import {Vue, Component, Prop} from "vue-property-decorator";
import {bus} from "../checkin";
@Component
export default class TagInput extends Vue {
@@ -28,6 +29,10 @@
tags: string[] = this.value.trim() !== "" ? this.value.trim().split(" ") : [];
buffer: string = "";
created() {
bus.$on("add-tag", (tag: string) => this.tags.indexOf(tag) === -1 && this.tags.push(tag));
}
onKeyDown(event: KeyboardEvent) {
if (this.buffer.trim() !== "") {
switch (event.key) {

View File

@@ -8,7 +8,7 @@
@endif
<h6 class="font-weight-bold"><span class="oi oi-graph"></span> 概況</h6>
<p class="card-text mb-0">平均記録: {{ Formatter::formatInterval($summary[0]->average) }}</p>
<p class="card-text mb-0">平均記録: {{ Formatter::formatInterval($average[0]->average) }}</p>
<p class="card-text mb-0">最長記録: {{ Formatter::formatInterval($summary[0]->longest) }}</p>
<p class="card-text mb-0">最短記録: {{ Formatter::formatInterval($summary[0]->shortest) }}</p>
<p class="card-text mb-0">合計時間: {{ Formatter::formatInterval($summary[0]->total_times) }}</p>

View File

@@ -52,7 +52,9 @@
<div class="form-row">
<div class="form-group col-sm-12">
<label for="link"><span class="oi oi-link-intact"></span> オカズリンク</label>
<input id="link" name="link" type="text" autocomplete="off" class="form-control {{ $errors->has('link') ? ' is-invalid' : '' }}" placeholder="http://..." value="{{ old('link') ?? $defaults['link'] }}">
<input id="link" name="link" type="text" autocomplete="off" class="form-control {{ $errors->has('link') ? ' is-invalid' : '' }}"
placeholder="http://..." value="{{ old('link') ?? $defaults['link'] }}"
@change="onChangeLink">
<small class="form-text text-muted">
オカズのURLを貼り付けて登録することができます。
</small>
@@ -61,6 +63,7 @@
@endif
</div>
</div>
<metadata-preview :metadata="metadata" :state="metadataLoadState"></metadata-preview>
<div class="form-row">
<div class="form-group col-sm-12">
<label for="note"><span class="oi oi-comment-square"></span> ノート</label>

View File

@@ -53,7 +53,9 @@
<div class="form-row">
<div class="form-group col-sm-12">
<label for="link"><span class="oi oi-link-intact"></span> オカズリンク</label>
<input id="link" name="link" type="text" autocomplete="off" class="form-control {{ $errors->has('link') ? ' is-invalid' : '' }}" placeholder="http://..." value="{{ old('link') ?? $ejaculation->link }}">
<input id="link" name="link" type="text" autocomplete="off" class="form-control {{ $errors->has('link') ? ' is-invalid' : '' }}"
placeholder="http://..." value="{{ old('link') ?? $ejaculation->link }}"
@change="onChangeLink">
<small class="form-text text-muted">
オカズのURLを貼り付けて登録することができます。
</small>
@@ -62,6 +64,7 @@
@endif
</div>
</div>
<metadata-preview :metadata="metadata" :state="metadataLoadState"></metadata-preview>
<div class="form-row">
<div class="form-group col-sm-12">
<label for="note"><span class="oi oi-comment-square"></span> ノート</label>

View File

@@ -196,8 +196,7 @@ class DLsiteResolverTest extends TestCase
public function testSPLink()
{
$responseText = file_get_contents(__DIR__.'/../../fixture/DLsite/testHome.html');
// SP版touchのURLのテストだがリゾルバ側でURLから-touchを削除してPC版を取得するので、PC版の内容を使用する
$responseText = file_get_contents(__DIR__ . '/../../fixture/DLsite/testSPLink.html');
$this->createResolver(DLsiteResolver::class, $responseText);
@@ -213,7 +212,7 @@ class DLsiteResolverTest extends TestCase
public function testShortLink()
{
$responseText = file_get_contents(__DIR__.'/../../fixture/DLsite/testHome.html');
$responseText = file_get_contents(__DIR__ . '/../../fixture/DLsite/testShortLink.html');
$this->createResolver(DLsiteResolver::class, $responseText);

View File

@@ -0,0 +1,52 @@
<?php
namespace Tests\Unit\MetadataResolver;
use App\MetadataResolver\KomifloResolver;
use Tests\TestCase;
class KomifloResolverTest extends TestCase
{
use CreateMockedResolver;
public function setUp()
{
parent::setUp();
if (!$this->shouldUseMock()) {
sleep(1);
}
}
public function testComic()
{
$responseText = file_get_contents(__DIR__ . '/../../fixture/Komiflo/comic.json');
$this->createResolver(KomifloResolver::class, $responseText);
$metadata = $this->resolver->resolve('https://komiflo.com/#!/comics/5490');
$this->assertEquals('魔法少女とえっち物語', $metadata->title);
$this->assertEquals('薙派 - メガストアα 19.07', $metadata->description);
$this->assertEquals('https://t.komiflo.com/564_mobile_large_3x/contents/23a4cd530060b8607aa434f4b299b249e71a4d5c.jpg', $metadata->image);
$this->assertEquals(['薙派', 'お姉さん', 'ショタ', 'ファンタジー', '巨乳', '野外・露出', '羞恥'], $metadata->tags);
if ($this->shouldUseMock()) {
$this->assertSame('https://api.komiflo.com/content/id/5490', (string) $this->handler->getLastRequest()->getUri());
}
}
public function testComicWithNoParents()
{
$responseText = file_get_contents(__DIR__ . '/../../fixture/Komiflo/comicWithNoParents.json');
$this->createResolver(KomifloResolver::class, $responseText);
$metadata = $this->resolver->resolve('https://komiflo.com/#!/comics/3414');
$this->assertEquals('生まれなおしプログラム', $metadata->title);
$this->assertEquals('EROKI - ?', $metadata->description);
$this->assertEquals('https://t.komiflo.com/564_mobile_large_3x/contents/71cfb83640aead3cdd35e4329c4e2f427606a11d.jpg', $metadata->image);
$this->assertEquals(['EROKI', 'お姉さん', 'しつけ', 'オリジナル', 'ショートカット', '逆転', '巨乳'], $metadata->tags);
if ($this->shouldUseMock()) {
$this->assertSame('https://api.komiflo.com/content/id/3414', (string) $this->handler->getLastRequest()->getUri());
}
}
}

View File

@@ -20,7 +20,7 @@ class NijieResolverTest extends TestCase
public function testStandardPicture()
{
$responseText = file_get_contents(__DIR__ . '/../../fixture/Nijie/testStandardPictureResponse.html');
$responseText = file_get_contents(__DIR__ . '/../../fixture/Nijie/testStandardPicture.html');
$this->createResolver(NijieResolver::class, $responseText);
@@ -36,7 +36,7 @@ class NijieResolverTest extends TestCase
public function testMultiplePicture()
{
$responseText = file_get_contents(__DIR__ . '/../../fixture/Nijie/testMultiplePictureResponse.html');
$responseText = file_get_contents(__DIR__ . '/../../fixture/Nijie/testMultiplePicture.html');
$this->createResolver(NijieResolver::class, $responseText);
@@ -52,7 +52,7 @@ class NijieResolverTest extends TestCase
public function testAnimationGif()
{
$responseText = file_get_contents(__DIR__ . '/../../fixture/Nijie/testAnimationGifResponse.html');
$responseText = file_get_contents(__DIR__ . '/../../fixture/Nijie/testAnimationGif.html');
$this->createResolver(NijieResolver::class, $responseText);
@@ -67,7 +67,7 @@ class NijieResolverTest extends TestCase
public function testMp4Movie()
{
$responseText = file_get_contents(__DIR__ . '/../../fixture/Nijie/testMp4MovieResponse.html');
$responseText = file_get_contents(__DIR__ . '/../../fixture/Nijie/testMp4Movie.html');
$this->createResolver(NijieResolver::class, $responseText);
@@ -82,7 +82,7 @@ class NijieResolverTest extends TestCase
public function testStandardPictureSp()
{
$responseText = file_get_contents(__DIR__ . '/../../fixture/Nijie/testStandardPictureResponse.html');
$responseText = file_get_contents(__DIR__ . '/../../fixture/Nijie/testStandardPictureSp.html');
$this->createResolver(NijieResolver::class, $responseText);
@@ -98,7 +98,7 @@ class NijieResolverTest extends TestCase
public function testMultiplePictureSp()
{
$responseText = file_get_contents(__DIR__ . '/../../fixture/Nijie/testMultiplePictureResponse.html');
$responseText = file_get_contents(__DIR__ . '/../../fixture/Nijie/testMultiplePictureSp.html');
$this->createResolver(NijieResolver::class, $responseText);
@@ -114,7 +114,7 @@ class NijieResolverTest extends TestCase
public function testAnimationGifSp()
{
$responseText = file_get_contents(__DIR__ . '/../../fixture/Nijie/testAnimationGifResponse.html');
$responseText = file_get_contents(__DIR__ . '/../../fixture/Nijie/testAnimationGifSp.html');
$this->createResolver(NijieResolver::class, $responseText);
@@ -130,7 +130,7 @@ class NijieResolverTest extends TestCase
public function testMp4MovieSp()
{
$responseText = file_get_contents(__DIR__ . '/../../fixture/Nijie/testMp4MovieResponse.html');
$responseText = file_get_contents(__DIR__ . '/../../fixture/Nijie/testMp4MovieSp.html');
$this->createResolver(NijieResolver::class, $responseText);

View File

@@ -0,0 +1,68 @@
<?php
namespace Tests\Unit\MetadataResolver;
use App\MetadataResolver\PixivResolver;
use Tests\TestCase;
class PixivResolverTest extends TestCase
{
use CreateMockedResolver;
public function setUp()
{
parent::setUp();
if (!$this->shouldUseMock()) {
sleep(1);
}
}
public function testIllust()
{
$responseText = file_get_contents(__DIR__ . '/../../fixture/Pixiv/testIllust.json');
$this->createResolver(PixivResolver::class, $responseText);
$metadata = $this->resolver->resolve('https://www.pixiv.net/member_illust.php?mode=medium&illust_id=68188073');
$this->assertEquals('coffee break', $metadata->title);
$this->assertEquals('投稿者: 裕' . PHP_EOL, $metadata->description);
$this->assertEquals('https://i.pixiv.cat/img-master/img/2018/04/12/00/01/28/68188073_p0_master1200.jpg', $metadata->image);
$this->assertEquals(['オリジナル', 'カフェ', '眼鏡', 'イヤホン', 'ぱっつん', '艶ぼくろ', '眼鏡っ娘', 'オリジナル5000users入り'], $metadata->tags);
if ($this->shouldUseMock()) {
$this->assertSame('https://www.pixiv.net/ajax/illust/68188073', (string) $this->handler->getLastRequest()->getUri());
}
}
public function testIllustMultiPages()
{
$responseText = file_get_contents(__DIR__ . '/../../fixture/Pixiv/testIllustMultiPages.json');
$this->createResolver(PixivResolver::class, $responseText);
$metadata = $this->resolver->resolve('https://www.pixiv.net/member_illust.php?mode=medium&illust_id=47220843');
$this->assertEquals('がぶ飲みミルクティー', $metadata->title);
$this->assertEquals('投稿者: きっぷる' . PHP_EOL . '劇中で度々お見かけするお姿がたまらなく愛おしいのです' . PHP_EOL . 'チラリズムでしょうか', $metadata->description);
$this->assertEquals('https://i.pixiv.cat/img-master/img/2014/11/23/15/52/00/47220843_p0_master1200.jpg', $metadata->image);
$this->assertEquals(['SHIROBAKO', '小笠原綸子', 'ゴスロリ様', '中出し', 'SHIRUPAKO', 'くわえたくしあげ', 'ずらし挿入', 'SHIROBAKO1000users入り', '破れストッキング'], $metadata->tags);
if ($this->shouldUseMock()) {
$this->assertSame('https://www.pixiv.net/ajax/illust/47220843', (string) $this->handler->getLastRequest()->getUri());
}
}
public function testManga()
{
$responseText = file_get_contents(__DIR__ . '/../../fixture/Pixiv/testManga.json');
$this->createResolver(PixivResolver::class, $responseText);
$metadata = $this->resolver->resolve('https://www.pixiv.net/member_illust.php?mode=medium&illust_id=46713544');
$this->assertEquals('冬の日ラブラブ', $metadata->title);
$this->assertEquals('投稿者: Aza' . PHP_EOL . 'ラブラブエッチのらくがき' . PHP_EOL . PHP_EOL . '三万フォロワー感謝します~' . PHP_EOL . PHP_EOL . '最近忙しいので、自分の時間が少ない・・・', $metadata->description);
$this->assertEquals('https://i.pixiv.cat/img-master/img/2014/10/25/00/06/58/46713544_p0_master1200.jpg', $metadata->image);
$this->assertEquals(['落書き', 'おっぱい', 'オリジナル', 'パイズリ', '中出し', 'だいしゅきホールド', '愛のあるセックス', '黒髪ロング', 'オリジナル10000users入り'], $metadata->tags);
if ($this->shouldUseMock()) {
$this->assertSame('https://www.pixiv.net/ajax/illust/46713544', (string) $this->handler->getLastRequest()->getUri());
}
}
}

View File

@@ -28,6 +28,9 @@ class SteamResolverTest extends TestCase
$this->assertEquals('NEKOPARA Vol. 1', $metadata->title);
$this->assertEquals('水無月嘉祥(みなづき かしょう)は伝統ある老舗和菓子屋である実家を出て、 パティシエとして自身のケーキ屋『ラ・ソレイユ』を一人で開店する。 しかし実家から送った引っ越し荷物の中に、 実家で飼っていた人型ネコのショコラとバニラが紛れ込んでいた。', $metadata->description);
$this->assertStringStartsWith('https://steamcdn-a.akamaihd.net/steam/apps/333600/header.jpg?t=', $metadata->image);
if ($this->shouldUseMock()) {
$this->assertSame('https://store.steampowered.com/api/appdetails/?l=japanese&appids=333600', (string) $this->handler->getLastRequest()->getUri());
}
}
public function testR18()
@@ -40,6 +43,9 @@ class SteamResolverTest extends TestCase
$this->assertEquals('Broke Girl | 負債千金', $metadata->title);
$this->assertEquals('苦労知らずに育ったお嬢様は一夜にして1000万の借金を背負うことになった。借金を返済するために働かなければならない。しかし世間には悪意が満ちており、男達はお金で彼女を誘うか凌辱することしか考えていない。', $metadata->description);
$this->assertStringStartsWith('https://steamcdn-a.akamaihd.net/steam/apps/1077580/header.jpg?t=', $metadata->image);
if ($this->shouldUseMock()) {
$this->assertSame('https://store.steampowered.com/api/appdetails/?l=japanese&appids=1077580', (string) $this->handler->getLastRequest()->getUri());
}
}
public function testNotFound()
@@ -51,5 +57,8 @@ class SteamResolverTest extends TestCase
$this->createResolver(SteamResolver::class, $responseText);
$this->resolver->resolve('https://store.steampowered.com/app/1');
if ($this->shouldUseMock()) {
$this->assertSame('https://store.steampowered.com/api/appdetails/?l=japanese&appids=1', (string) $this->handler->getLastRequest()->getUri());
}
}
}

2159
tests/fixture/DLsite/testSPLink.html vendored Normal file

File diff suppressed because it is too large Load Diff

2159
tests/fixture/DLsite/testShortLink.html vendored Normal file

File diff suppressed because it is too large Load Diff

437
tests/fixture/Komiflo/comic.json vendored Normal file
View File

@@ -0,0 +1,437 @@
{
"content": {
"attributes": {
"artists": {
"meta": {
"cdn_public": "",
"cdn_thumbs": "",
"content_count": 0,
"data": {
"name": "Artists"
},
"id": 2,
"name_read": "Artists",
"new_content_count": 0,
"pages": null,
"published": null,
"signature": "",
"signature_expires": "2019-06-26T14:56:11.304746387Z",
"slug": "artists",
"source": "live",
"visibility": 1
},
"children": [
{
"cdn_public": "",
"cdn_thumbs": "",
"content_count": 0,
"data": {
"href": "",
"ipRestrict": "",
"name": "薙派",
"name_en": "chiba",
"published": "",
"searchTerms": "ちば,チバ",
"tankoubonLabel": "",
"visibility": true
},
"id": 1722,
"name_read": "ちば",
"new_content_count": 0,
"pages": null,
"parent_id": 2,
"published": null,
"signature": "",
"signature_expires": "2019-06-26T14:56:11.303687274Z",
"slug": "chiba",
"source": "live",
"visibility": 1
}
]
},
"label": {
"meta": {
"cdn_public": "",
"cdn_thumbs": "",
"content_count": 0,
"data": {
"href": "",
"ipRestrict": "",
"name": "Labels",
"name_en": "",
"searchTerms": "",
"visibility": true
},
"id": 638,
"name_read": "",
"new_content_count": 0,
"pages": null,
"published": null,
"signature": "",
"signature_expires": "2019-06-26T14:56:11.304743971Z",
"slug": "label",
"source": "live",
"visibility": 1
},
"children": [
{
"cdn_public": "",
"cdn_thumbs": "",
"content_count": 0,
"data": {
"href": "",
"ipRestrict": "",
"name": "First double page",
"name_en": "",
"searchTerms": "",
"visibility": true
},
"id": 659,
"name_read": "",
"new_content_count": 0,
"pages": null,
"parent_id": 638,
"published": null,
"signature": "",
"signature_expires": "2019-06-26T14:56:11.30368064Z",
"slug": "label-firstdoublepage",
"source": "live",
"visibility": 1
}
]
},
"tags": {
"meta": {
"cdn_public": "",
"cdn_thumbs": "",
"content_count": 0,
"data": {
"name": "Tags"
},
"id": 1,
"name_read": "Tags",
"new_content_count": 0,
"pages": null,
"published": null,
"signature": "",
"signature_expires": "2019-06-26T14:56:11.304745145Z",
"slug": "tags",
"source": "live",
"visibility": 1
},
"children": [
{
"cdn_public": "",
"cdn_thumbs": "",
"content_count": 0,
"data": {
"href": "",
"ipRestrict": "",
"name": "お姉さん",
"name_en": "Mature sister",
"published": "",
"searchTerms": "おねえさん,年上,おねーさん,オネエサン",
"tankoubonLabel": "",
"visibility": true
},
"id": 59,
"name_read": "おねえさん",
"new_content_count": 0,
"pages": null,
"parent_id": 1,
"published": null,
"signature": "",
"signature_expires": "2019-06-26T14:56:11.303682097Z",
"slug": "oneesan",
"source": "live",
"visibility": 1
},
{
"cdn_public": "",
"cdn_thumbs": "",
"content_count": 0,
"data": {
"href": "",
"ipRestrict": "",
"name": "ショタ",
"name_en": "Little boy",
"published": "",
"searchTerms": "しょた,ショタコン,小学生,中学生",
"tankoubonLabel": "",
"visibility": true
},
"id": 75,
"name_read": "しょた",
"new_content_count": 0,
"pages": null,
"parent_id": 1,
"published": null,
"signature": "",
"signature_expires": "2019-06-26T14:56:11.303683565Z",
"slug": "shota",
"source": "live",
"visibility": 1
},
{
"cdn_public": "",
"cdn_thumbs": "",
"content_count": 0,
"data": {
"href": "",
"ipRestrict": "",
"name": "ファンタジー",
"name_en": "",
"published": "",
"searchTerms": "ふぁんたじー,SF,妖怪",
"tankoubonLabel": "",
"visibility": true
},
"id": 98,
"name_read": "ふぁんたじー",
"new_content_count": 0,
"pages": null,
"parent_id": 1,
"published": null,
"signature": "",
"signature_expires": "2019-06-26T14:56:11.30368434Z",
"slug": "fantasy",
"source": "live",
"visibility": 1
},
{
"cdn_public": "",
"cdn_thumbs": "",
"content_count": 0,
"data": {
"href": "",
"ipRestrict": "",
"name": "巨乳",
"name_en": "Big breasts",
"published": "",
"searchTerms": "きょにゅう,キョニュウ,爆乳",
"tankoubonLabel": "",
"visibility": true
},
"id": 37,
"name_read": "きょにゅう",
"new_content_count": 0,
"pages": null,
"parent_id": 1,
"published": null,
"signature": "",
"signature_expires": "2019-06-26T14:56:11.303686492Z",
"slug": "kyonyu",
"source": "live",
"visibility": 1
},
{
"cdn_public": "",
"cdn_thumbs": "",
"content_count": 0,
"data": {
"href": "",
"ipRestrict": "",
"name": "野外・露出",
"name_en": "In public",
"published": "",
"searchTerms": "やがい,ろしゅつ,露出狂,アオカン,青姦",
"tankoubonLabel": "",
"visibility": true
},
"id": 53,
"name_read": "やがい",
"new_content_count": 0,
"pages": null,
"parent_id": 1,
"published": null,
"signature": "",
"signature_expires": "2019-06-26T14:56:11.30368814Z",
"slug": "yagai",
"source": "live",
"visibility": 1
},
{
"cdn_public": "",
"cdn_thumbs": "",
"content_count": 0,
"data": {
"href": "",
"ipRestrict": "",
"name": "羞恥",
"name_en": "Shy girl",
"published": "",
"searchTerms": "しゅうち,シュウチ,羞恥プレイ",
"tankoubonLabel": "",
"visibility": true
},
"id": 47,
"name_read": "しゅうち",
"new_content_count": 0,
"pages": null,
"parent_id": 1,
"published": null,
"signature": "",
"signature_expires": "2019-06-26T14:56:11.303688932Z",
"slug": "shuchi",
"source": "live",
"visibility": 1
}
]
},
"tags-hidden": {
"meta": {
"cdn_public": "",
"cdn_thumbs": "",
"content_count": 0,
"data": {
"href": "",
"ipRestrict": "",
"name": "Hidden tags",
"name_en": "",
"published": "",
"searchTerms": "",
"tankoubonLabel": "",
"visibility": true
},
"id": 783,
"name_read": "",
"new_content_count": 0,
"pages": null,
"published": null,
"signature": "",
"signature_expires": "2019-06-26T14:56:11.304741513Z",
"slug": "tags-hidden",
"source": "live",
"visibility": 1
},
"children": [
{
"cdn_public": "",
"cdn_thumbs": "",
"content_count": 0,
"data": {
"href": "",
"ipRestrict": "",
"name": "COMICメガストアαsearch",
"name_en": "",
"published": "",
"searchTerms": "メガストア,めがすとあ",
"tankoubonLabel": "",
"visibility": true
},
"id": 1009,
"name_read": "",
"new_content_count": 0,
"pages": null,
"parent_id": 783,
"published": null,
"signature": "",
"signature_expires": "2019-06-26T14:56:11.303678935Z",
"slug": "megastore-search",
"source": "live",
"visibility": 1
}
]
}
},
"body": "",
"cdn_public": "https://cdn.komiflo.com/resized",
"cdn_thumbs": "",
"children": [],
"comments_count": 3,
"data": {
"category": "",
"censorship": "モザイク修正",
"download_type": "",
"isbn": "",
"link_amazon": "",
"link_dlsite": "",
"link_dmm": "",
"link_wani": "",
"msrp": "",
"naughty": "",
"restricted": "",
"size": "",
"title": "魔法少女とえっち物語",
"url": ""
},
"expiry": "2020-06-20T15:00:00Z",
"id": 5490,
"imgs": null,
"key_data": "",
"key_hash": "",
"liked": false,
"likes_count": 127,
"named_imgs": {
"cover": {
"id": 79325,
"original": 81185,
"width": 4299,
"height": 6071,
"ident": "cover",
"filename": "contents/23a4cd530060b8607aa434f4b299b249e71a4d5c.jpg",
"variants": [
"148_desktop_small",
"296_desktop_small_2x",
"198_desktop_medium",
"396_desktop_medium_2x",
"247_desktop_large",
"494_desktop_large_2x",
"160_mobile_narrow",
"320_mobile_narrow_2x",
"207_mobile_medium",
"414_mobile_medium_2x",
"188_mobile_large",
"376_mobile_large_2x",
"564_mobile_large_3x",
"346_mobile"
]
}
},
"page_count": 0,
"parents": [
{
"body": "",
"cdn_public": "",
"cdn_thumbs": "",
"data": {
"category": "",
"download_type": "",
"isbn": "",
"link_amazon": "",
"link_dlsite": "",
"link_dmm": "",
"link_wani": "",
"msrp": "780",
"release_date": "",
"size": "",
"title": "メガストアα 19.07",
"url": ""
},
"expiry": "2020-06-20T15:00:00Z",
"id": 5474,
"likes_count": 0,
"page_count": null,
"premium": false,
"public": false,
"published": "2019-06-20T15:00:00Z",
"reading_lists": null,
"signature": "",
"signature_expires": "2019-06-27T02:56:11Z",
"slug": null,
"source": "cache",
"type": "volume"
}
],
"premium": false,
"public": true,
"published": "2019-06-20T15:00:00Z",
"reading_lists": [],
"signature": "?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9jZG4ua29taWZsby5jb20vKi9jb250ZW50cy8qIiwiQ29uZGl0aW9uIjp7IklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIzOS4xMTEuMjE4LjE2MC8zMiJ9LCJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTU2MTYwNDE3MX19fV19&Signature=ilu4WlHoMMecmk8Ab3UuJ3LBTe~FhQxoGVdPbBF9CTrTB-Teockvf43MgWuAzWgsfFrwmCeV-hedV-iEx07B3S~D7ObXWCFcbPd1rb12D0qY~NF2SfGTv8lIbCDMQkc9wyUtE5K4MlZ35Bm4mZRv9HtEZkX1yjkVuAV7sBScBfJUkfnlg6yYsL2d2g4tDkN8gCOjZChUODetZPm05qwTmItIbq0kQhirgXNV~R1z~kFRwsgoBYClCq3vpQCsCy7tbKGmzHz6ku-PgpopqsOCmAaCl9Jh4D2pw8R64aREw6SX4tSoe7NPKG4KbtLzBsio260luuORDeaFcTjvlQI0~g__&Key-Pair-Id=APKAIILYVN5NFPDL7WIA",
"signature_expires": "2019-06-27T02:56:11Z",
"slug": null,
"source": "live",
"type": "chapter"
},
"success": true
}

View File

@@ -0,0 +1,298 @@
{
"content": {
"attributes": {
"artists": {
"meta": {
"cdn_public": "",
"cdn_thumbs": "",
"content_count": 0,
"data": {
"name": "Artists"
},
"id": 2,
"name_read": "Artists",
"new_content_count": 0,
"pages": null,
"published": null,
"signature": "",
"signature_expires": "2019-06-26T14:50:55.176026561Z",
"slug": "artists",
"source": "live",
"visibility": 1
},
"children": [
{
"cdn_public": "",
"cdn_thumbs": "",
"content_count": 0,
"data": {
"href": "",
"ipRestrict": "",
"name": "EROKI",
"name_en": "eroki",
"published": "",
"searchTerms": "えろき,エロキ",
"tankoubonLabel": "",
"visibility": true
},
"id": 836,
"name_read": "えろき",
"new_content_count": 0,
"pages": null,
"parent_id": 2,
"published": null,
"signature": "",
"signature_expires": "2019-06-26T14:50:55.174698472Z",
"slug": "eroki",
"source": "live",
"visibility": 1
}
]
},
"tags": {
"meta": {
"cdn_public": "",
"cdn_thumbs": "",
"content_count": 0,
"data": {
"name": "Tags"
},
"id": 1,
"name_read": "Tags",
"new_content_count": 0,
"pages": null,
"published": null,
"signature": "",
"signature_expires": "2019-06-26T14:50:55.176028723Z",
"slug": "tags",
"source": "live",
"visibility": 1
},
"children": [
{
"cdn_public": "",
"cdn_thumbs": "",
"content_count": 0,
"data": {
"href": "",
"ipRestrict": "",
"name": "お姉さん",
"name_en": "Mature sister",
"published": "",
"searchTerms": "おねえさん,年上,おねーさん,オネエサン",
"tankoubonLabel": "",
"visibility": true
},
"id": 59,
"name_read": "おねえさん",
"new_content_count": 0,
"pages": null,
"parent_id": 1,
"published": null,
"signature": "",
"signature_expires": "2019-06-26T14:50:55.174699935Z",
"slug": "oneesan",
"source": "live",
"visibility": 1
},
{
"cdn_public": "",
"cdn_thumbs": "",
"content_count": 0,
"data": {
"href": "",
"ipRestrict": "",
"name": "しつけ",
"name_en": "Discipline",
"published": "",
"searchTerms": "しつけ,躾,シツケ",
"tankoubonLabel": "",
"visibility": true
},
"id": 69,
"name_read": "しつけ",
"new_content_count": 0,
"pages": null,
"parent_id": 1,
"published": null,
"signature": "",
"signature_expires": "2019-06-26T14:50:55.174701095Z",
"slug": "shitsuke",
"source": "live",
"visibility": 1
},
{
"cdn_public": "",
"cdn_thumbs": "",
"content_count": 0,
"data": {
"href": "",
"ipRestrict": "",
"name": "オリジナル",
"name_en": "",
"published": "",
"searchTerms": "おりじなる,オリジナル",
"tankoubonLabel": "",
"visibility": true
},
"id": 534,
"name_read": "おりじなる",
"new_content_count": 0,
"pages": null,
"parent_id": 1,
"published": null,
"signature": "",
"signature_expires": "2019-06-26T14:50:55.174702761Z",
"slug": "original",
"source": "live",
"visibility": 1
},
{
"cdn_public": "",
"cdn_thumbs": "",
"content_count": 0,
"data": {
"href": "",
"ipRestrict": "",
"name": "ショートカット",
"name_en": "",
"published": "",
"searchTerms": "ショートヘアー,ショート,しょーと,しょーとへあ",
"tankoubonLabel": "",
"visibility": true
},
"id": 798,
"name_read": "しょーとかっと",
"new_content_count": 0,
"pages": null,
"parent_id": 1,
"published": null,
"signature": "",
"signature_expires": "2019-06-26T14:50:55.174703509Z",
"slug": "shorthair",
"source": "live",
"visibility": 1
},
{
"cdn_public": "",
"cdn_thumbs": "",
"content_count": 0,
"data": {
"href": "",
"ipRestrict": "",
"name": "逆転",
"name_en": "",
"published": "",
"searchTerms": "ぎゃくてん,女性優位,ギャクテン",
"tankoubonLabel": "",
"visibility": true
},
"id": 74,
"name_read": "ぎゃくてん",
"new_content_count": 0,
"pages": null,
"parent_id": 1,
"published": null,
"signature": "",
"signature_expires": "2019-06-26T14:50:55.174705548Z",
"slug": "gyakuten",
"source": "live",
"visibility": 1
},
{
"cdn_public": "",
"cdn_thumbs": "",
"content_count": 0,
"data": {
"href": "",
"ipRestrict": "",
"name": "巨乳",
"name_en": "Big breasts",
"published": "",
"searchTerms": "きょにゅう,キョニュウ,爆乳",
"tankoubonLabel": "",
"visibility": true
},
"id": 37,
"name_read": "きょにゅう",
"new_content_count": 0,
"pages": null,
"parent_id": 1,
"published": null,
"signature": "",
"signature_expires": "2019-06-26T14:50:55.174706294Z",
"slug": "kyonyu",
"source": "live",
"visibility": 1
}
]
}
},
"body": "",
"cdn_public": "https://cdn.komiflo.com/resized",
"cdn_thumbs": "",
"children": [],
"comments_count": 26,
"data": {
"category": "",
"censorship": "黒棒による修正",
"download_type": "",
"isbn": "",
"link_amazon": "",
"link_dlsite": "",
"link_dmm": "",
"link_wani": "",
"msrp": "",
"naughty": "",
"restricted": "",
"size": "",
"title": "生まれなおしプログラム",
"url": ""
},
"expiry": null,
"id": 3414,
"imgs": null,
"key_data": "",
"key_hash": "",
"liked": false,
"likes_count": 627,
"named_imgs": {
"cover": {
"id": 49645,
"original": 50622,
"width": 4299,
"height": 6071,
"ident": "cover",
"filename": "contents/71cfb83640aead3cdd35e4329c4e2f427606a11d.jpg",
"variants": [
"148_desktop_small",
"296_desktop_small_2x",
"198_desktop_medium",
"396_desktop_medium_2x",
"247_desktop_large",
"494_desktop_large_2x",
"160_mobile_narrow",
"320_mobile_narrow_2x",
"207_mobile_medium",
"414_mobile_medium_2x",
"188_mobile_large",
"376_mobile_large_2x",
"564_mobile_large_3x",
"346_mobile"
]
}
},
"page_count": 0,
"parents": [],
"premium": false,
"public": true,
"published": "2018-04-10T15:00:00Z",
"reading_lists": [],
"signature": "?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9jZG4ua29taWZsby5jb20vKi9jb250ZW50cy8qIiwiQ29uZGl0aW9uIjp7IklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIzOS4xMTEuMjE4LjE2MC8zMiJ9LCJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTU2MTYwMzg1NX19fV19&Signature=bZFuvU1rgv2iBSSFlxyoexOIjjacWW4Sxe--EEjI2ruQPNnZE8iU542yCsWBSrmHfFOXFcYNKIf3PmTAxwjS-CeoyRc~O0VO6T9bNdlinFICMezNTPlYe0Ri~nUWxQ8Oy364ik5zrd5RwHmEOVMjfuc96N6ivrcL9Q5tfi-2sFs~8S9m-IH76Kf7dLXn8~TRPfGFj8bfyoDcn42YfCvfXzl4D92EnKjQO52x2~KICQR3X7igirQ6X1GmuYEoJd9GAYZlKNKUEQch7T6dpR-uJZEJ5hOJDsWrIJkvoMu9ZTBgdZOZGuNLfWunAJ0NhovNlN6-D8PmlhSd79Mu0P2LUA__&Key-Pair-Id=APKAIILYVN5NFPDL7WIA",
"signature_expires": "2019-06-27T02:50:55Z",
"slug": null,
"source": "live",
"type": "chapter"
},
"success": true
}

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"><head><link rel="alternate" media="handheld" href="http://mb.nijie.info/view.php?id=9537" /><link rel="alternate" media="only screen and (max-width: 640px)" href="https://sp.nijie.info/view.php?id=9537" /><link rel="canonical" href="https://nijie.info/view.php?id=9537" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=970" /><meta name="format-detection" content="telephone=no" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta http-equiv="Content-Style-Type" content="text/css; charset=utf-8" /><meta http-equiv="Content-Script-Type" content="text/javascript" /><meta http-equiv="Content-Language" content="ja" /><meta name="description" content="ニジエに投稿された、黒末アプコのイラスト「ニジエがgifに対応したんだってね 奥さん」です。この画像はニジエがgifに対応したんだってね 奥さん,黒末アプコ,おっぱい,陥没乳首,眼鏡,GIFアニメ,ぶるんぶるん,アニメgif,に関連があります。「アニメgifとか専門外なのでよくわかりませんでした」" /><meta name="keywords" content="ニジエがgifに対応したんだってね 奥さん,黒末アプコ,おっぱい,陥没乳首,眼鏡,GIFアニメ,ぶるんぶるん,アニメgif," /><meta property="og:title" content="ニジエがgifに対応したんだってね 奥さん | 黒末アプコ" /><meta property="og:type" content="article" /><meta property="og:description" content="アニメgifとか専門外なのでよくわかりませんでした" /><meta property="og:url" content="https://nijie.info/view.php?id=9537" /><meta property="og:image" content="https://nijie.info/pic/logo/nijie_logo_og.png?201902161557" /><meta property="og:site_name" content="ニジエがgifに対応したんだってね 奥さん | 黒末アプコ | ニジエ" /><meta property="og:email" content="info@nijie.co.jp" /><link rel="alternate" href="https://nijie.info/view.php?id=9537" hreflang="x-default" /><link rel="shortcut icon" href="https://nijie.info/icon/favicon.ico?201902161557" /><link rel="shortcut icon" type="image/vnd.microsoft.icon" href="https://nijie.info/pic/icon/nijie.png?201902161557" /><title>ニジエがgifに対応したんだってね 奥さん | 黒末アプコ | ニジエ</title></head>
<body>
<!-- pickup some json -->
<script type="application/ld+json">{"@context": "http://schema.org","@type": "ImageObject","name": "ニジエがgifに対応したんだってね 奥さん","description": "アニメgifとか専門外なのでよくわかりませんでした","text": "アニメgifとか専門外なのでよくわかりませんでした","interactionCount": "10862 UserPlays, 6 UserComments","datePublished": "Sun Apr 8 06:59:48 2012","uploadDate": "Sun Apr 8 06:59:48 2012","dateModified": "Mon Apr 9 17:09:30 2012","copyrightYear": "2012","genre":"Image","contentLocation":"Japan","width":160,"height":90,"thumbnailUrl": "https://pic01.nijie.info/__rs_l160x160/nijie_picture/201204080659341943.gif","author": {"@type": "Person","name": "黒末アプコ","description": "判子エロ絵師とはわたしのことです","sameAs": "https://nijie.info/members.php?id=1943","image": "https://pic04.nijie.info/members_picture/thumbnail/1943_1542569693.gif"},"creator": {"@type": "Person","name": "黒末アプコ","description": "判子エロ絵師とはわたしのことです","sameAs": "https://nijie.info/members.php?id=1943","image": "https://pic04.nijie.info/members_picture/thumbnail/1943_1542569693.gif"},"editor": {"@type": "Person","name": "黒末アプコ","description": "判子エロ絵師とはわたしのことです","sameAs": "https://nijie.info/members.php?id=1943","image": "https://pic04.nijie.info/members_picture/thumbnail/1943_1542569693.gif"},"copyrightHolder": {"@type": "Person","name": "黒末アプコ","description": "判子エロ絵師とはわたしのことです","sameAs": "https://nijie.info/members.php?id=1943","image": "https://pic04.nijie.info/members_picture/thumbnail/1943_1542569693.gif"}}</script>
<script type="application/ld+json">{"@context": "http://schema.org","@type": "Review","reviewBody": "ティッシュ","author": {"@type": "Person","name": "黒末アプコ","description": "判子エロ絵師とはわたしのことです","sameAs": "https://nijie.info/members.php?id=1943","image": "http://pic04.nijie.info/members_picture/thumbnail/1943_1542569693.gif"},"datePublished": "Wed Nov 19 12:57:57 2014","contentLocation": "Japan","itemReviewed": {"@type" : "ImageObject","name" : "ニジエがgifに対応したんだってね 奥さん","sameAs": "https://nijie.info/view.php?id=9537"}}</script>
<script type="application/ld+json">{"@context": "http://schema.org","@type": "Review","reviewBody": "ひっ さくや様! ガタガタガタ  ","author": {"@type": "Person","name": "黒末アプコ","description": "判子エロ絵師とはわたしのことです","sameAs": "https://nijie.info/members.php?id=1943","image": "http://pic04.nijie.info/members_picture/thumbnail/1943_1542569693.gif"},"datePublished": "Thu Apr 19 20:48:02 2012","contentLocation": "Japan","itemReviewed": {"@type" : "ImageObject","name" : "ニジエがgifに対応したんだってね 奥さん","sameAs": "https://nijie.info/view.php?id=9537"}}</script>
<script type="application/ld+json">{"@context": "http://schema.org","@type": "Review","reviewBody": "さっ、最高です!!","author": {"@type": "Person","name": "黒末アプコ","description": "判子エロ絵師とはわたしのことです","sameAs": "https://nijie.info/members.php?id=1943","image": "http://pic04.nijie.info/members_picture/thumbnail/1943_1542569693.gif"},"datePublished": "Thu Apr 19 20:35:19 2012","contentLocation": "Japan","itemReviewed": {"@type" : "ImageObject","name" : "ニジエがgifに対応したんだってね 奥さん","sameAs": "https://nijie.info/view.php?id=9537"}}</script>
<script type="application/ld+json">{"@context": "http://schema.org","@type": "Review","reviewBody": "ぎょっ 新着コメントがtopに表示されないバグ  しこっていただけてさいわいです","author": {"@type": "Person","name": "黒末アプコ","description": "判子エロ絵師とはわたしのことです","sameAs": "https://nijie.info/members.php?id=1943","image": "http://pic04.nijie.info/members_picture/thumbnail/1943_1542569693.gif"},"datePublished": "Sun Apr 8 14:04:52 2012","contentLocation": "Japan","itemReviewed": {"@type" : "ImageObject","name" : "ニジエがgifに対応したんだってね 奥さん","sameAs": "https://nijie.info/view.php?id=9537"}}</script>
<script type="application/ld+json">{"@context": "http://schema.org","@type": "BreadcrumbList","itemListElement":[{"@type": "ListItem","position": 1,"item":{"@id": "https://nijie.info/members.php?id=1943","name": "黒末アプコ"}},{"@type": "ListItem","position": 2,"item":{"@id": "https://nijie.info/members_illust.php?id=1943","name": "黒末アプコさんのイラスト一覧"}},{"@type": "ListItem","position": 3,"item":{"@id": "https://nijie.info/view.php?id=9537","name": "ニジエがgifに対応したんだってね 奥さん"}}]}</script>
</body></html>

30
tests/fixture/Nijie/testMp4MovieSp.html vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,12 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"><head><link rel="alternate" media="handheld" href="http://mb.nijie.info/view.php?id=202707" /><link rel="alternate" media="only screen and (max-width: 640px)" href="https://sp.nijie.info/view.php?id=202707" /><link rel="canonical" href="https://nijie.info/view.php?id=202707" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=970" /><meta name="format-detection" content="telephone=no" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta http-equiv="Content-Style-Type" content="text/css; charset=utf-8" /><meta http-equiv="Content-Script-Type" content="text/javascript" /><meta http-equiv="Content-Language" content="ja" /><meta name="description" content="ニジエに投稿された、ニジエ運営のイラスト「ニジエ壁紙」です。この画像はニジエ壁紙,ニジエ運営,ニジエたん,壁紙,に関連があります。「ニジエのPCとiphone用(4.7inch推奨)の壁紙です。
保存してご自由にお使いくださいませ。」" /><meta name="keywords" content="ニジエ壁紙,ニジエ運営,ニジエたん,壁紙," />
<meta property="og:title" content="ニジエ壁紙 | ニジエ運営" /><meta property="og:type" content="article" /><meta property="og:description" content="ニジエのPCとiphone用(4.7inch推奨)の壁紙です。
保存してご自由にお使いくださいませ。" /><meta property="og:url" content="https://nijie.info/view.php?id=202707" /><meta property="og:image" content="https://nijie.info/pic/logo/nijie_logo_og.png?201902161557" /><meta property="og:site_name" content="ニジエ壁紙 | ニジエ運営 | ニジエ" /><meta property="og:email" content="info@nijie.co.jp" /><link rel="alternate" href="https://nijie.info/view.php?id=202707" hreflang="x-default" /><link rel="shortcut icon" href="https://nijie.info/icon/favicon.ico?201902161557" /><link rel="shortcut icon" type="image/vnd.microsoft.icon" href="https://nijie.info/pic/icon/nijie.png?201902161557" /><title>ニジエ壁紙 | ニジエ運営 | ニジエ</title></head>
<body>
<!-- pickup some JSON-LD -->
<script type="application/ld+json">{"@context": "http://schema.org","@type": "ImageObject","name": "ニジエ壁紙","description": "ニジエのPCとiphone用(4.7inch推奨)の壁紙です。
保存してご自由にお使いくださいませ。","text": "ニジエのPCとiphone用(4.7inch推奨)の壁紙です。
保存してご自由にお使いくださいませ。","interactionCount": "2301 UserPlays, 4 UserComments","datePublished": "Thu Feb 9 18:58:03 2017","uploadDate": "Thu Feb 9 18:58:03 2017","dateModified": "Thu Feb 9 18:58:03 2017","copyrightYear": "2017","genre":"Image","contentLocation":"Japan","width":160,"height":90,"thumbnailUrl": "https://pic03.nijie.info/__rs_l160x160/nijie_picture/38_20170209185801_0.png","author": {"@type": "Person","name": "ニジエ運営","description": "ニジエンジョイ!","sameAs": "https://nijie.info/members.php?id=38","image": "https://pic04.nijie.info/members_picture/thumbnail/38_1511696698.png"},"creator": {"@type": "Person","name": "ニジエ運営","description": "ニジエンジョイ!","sameAs": "https://nijie.info/members.php?id=38","image": "https://pic04.nijie.info/members_picture/thumbnail/38_1511696698.png"},"editor": {"@type": "Person","name": "ニジエ運営","description": "ニジエンジョイ!","sameAs": "https://nijie.info/members.php?id=38","image": "https://pic04.nijie.info/members_picture/thumbnail/38_1511696698.png"},"copyrightHolder": {"@type": "Person","name": "ニジエ運営","description": "ニジエンジョイ!","sameAs": "https://nijie.info/members.php?id=38","image": "https://pic04.nijie.info/members_picture/thumbnail/38_1511696698.png"}}</script>
<script type="application/ld+json">{"@context": "http://schema.org","@type": "Review","reviewBody": "やったぜ!","author": {"@type": "Person","name": "ニジエ運営","description": "ニジエンジョイ!","sameAs": "https://nijie.info/members.php?id=38","image": "http://pic04.nijie.info/members_picture/thumbnail/38_1511696698.png"},"datePublished": "Fri Feb 17 01:31:00 2017","contentLocation": "Japan","itemReviewed": {"@type" : "ImageObject","name" : "ニジエ壁紙","sameAs": "https://nijie.info/view.php?id=202707"}}</script>
<script type="application/ld+json">{"@context": "http://schema.org","@type": "Review","reviewBody": "ぺろぺろしたいです","author": {"@type": "Person","name": "ニジエ運営","description": "ニジエンジョイ!","sameAs": "https://nijie.info/members.php?id=38","image": "http://pic04.nijie.info/members_picture/thumbnail/38_1511696698.png"},"datePublished": "Fri Feb 17 01:30:54 2017","contentLocation": "Japan","itemReviewed": {"@type" : "ImageObject","name" : "ニジエ壁紙","sameAs": "https://nijie.info/view.php?id=202707"}}</script>
</body></html>

View File

@@ -0,0 +1,16 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"><head><link rel="alternate" media="handheld" href="http://mb.nijie.info/view.php?id=66384" /><link rel="alternate" media="only screen and (max-width: 640px)" href="https://sp.nijie.info/view.php?id=66384" /><link rel="canonical" href="https://nijie.info/view.php?id=66384" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=970" /><meta name="format-detection" content="telephone=no" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta http-equiv="Content-Style-Type" content="text/css; charset=utf-8" /><meta http-equiv="Content-Script-Type" content="text/javascript" /><meta http-equiv="Content-Language" content="ja" /><meta name="description" content="ニジエに投稿された、ニジエ運営のイラスト「チンポップくんの日常ep.1「チンポップくんと釣り」」です。この画像はチンポップくんの日常ep.1「チンポップくんと釣り」,ニジエ運営,ニジエたん,釣り,チンポップ君の日常,公式漫画,に関連があります。「メールマガジン漫画のバックナンバー第一話です!
最新話はメールマガジンより配信中です。」" /><meta name="keywords" content="チンポップくんの日常ep.1「チンポップくんと釣り」,ニジエ運営,ニジエたん,釣り,チンポップ君の日常,公式漫画," /><meta property="og:title" content="チンポップくんの日常ep.1「チンポップくんと釣り」 | ニジエ運営" /><meta property="og:type" content="article" /><meta property="og:description" content="メールマガジン漫画のバックナンバー第一話です!
最新話はメールマガジンより配信中です。" /><meta property="og:url" content="https://nijie.info/view.php?id=66384" /><meta property="og:image" content="https://nijie.info/pic/logo/nijie_logo_og.png?201902161557" /><meta property="og:site_name" content="チンポップくんの日常ep.1「チンポップくんと釣り」 | ニジエ運営 | ニジエ" /><meta property="og:email" content="info@nijie.co.jp" /><link rel="alternate" href="https://nijie.info/view.php?id=66384" hreflang="x-default" /><link rel="shortcut icon" href="https://nijie.info/icon/favicon.ico?201902161557" /><link rel="shortcut icon" type="image/vnd.microsoft.icon" href="https://nijie.info/pic/icon/nijie.png?201902161557" /><title>チンポップくんの日常ep.1「チンポップくんと釣り」 | ニジエ運営 | ニジエ</title></head>
<body>
<!-- pickup only json -->
<script type="application/ld+json">{"@context": "http://schema.org","@type": "ImageObject","name": "チンポップくんの日常ep.1「チンポップくんと釣り」","description": "メールマガジン漫画のバックナンバー第一話です!
最新話はメールマガジンより配信中です。","text": "メールマガジン漫画のバックナンバー第一話です!
最新話はメールマガジンより配信中です。","interactionCount": "13634 UserPlays, 24 UserComments","datePublished": "Sat Nov 30 15:56:26 2013","uploadDate": "Sat Nov 30 15:56:26 2013","dateModified": "Sat Nov 30 15:56:26 2013","copyrightYear": "2013","genre":"Image","contentLocation":"Japan","width":160,"height":90,"thumbnailUrl": "https://pic04.nijie.info/__rs_l160x160/nijie_picture/38_20131130155623.png","author": {"@type": "Person","name": "ニジエ運営","description": "ニジエンジョイ!","sameAs": "https://nijie.info/members.php?id=38","image": "https://pic04.nijie.info/members_picture/thumbnail/38_1511696698.png"},"creator": {"@type": "Person","name": "ニジエ運営","description": "ニジエンジョイ!","sameAs": "https://nijie.info/members.php?id=38","image": "https://pic04.nijie.info/members_picture/thumbnail/38_1511696698.png"},"editor": {"@type": "Person","name": "ニジエ運営","description": "ニジエンジョイ!","sameAs": "https://nijie.info/members.php?id=38","image": "https://pic04.nijie.info/members_picture/thumbnail/38_1511696698.png"},"copyrightHolder": {"@type": "Person","name": "ニジエ運営","description": "ニジエンジョイ!","sameAs": "https://nijie.info/members.php?id=38","image": "https://pic04.nijie.info/members_picture/thumbnail/38_1511696698.png"}}</script>
<script type="application/ld+json">{"@context": "http://schema.org","@type": "Review","reviewBody": "ミルコ字幕","author": {"@type": "Person","name": "ニジエ運営","description": "ニジエンジョイ!","sameAs": "https://nijie.info/members.php?id=38","image": "http://pic04.nijie.info/members_picture/thumbnail/38_1511696698.png"},"datePublished": "Tue Jan 27 08:58:02 2015","contentLocation": "Japan","itemReviewed": {"@type" : "ImageObject","name" : "チンポップくんの日常ep.1「チンポップくんと釣り」","sameAs": "https://nijie.info/view.php?id=66384"}}</script>
<script type="application/ld+json">{"@context": "http://schema.org","@type": "Review","reviewBody": "ティッシュ","author": {"@type": "Person","name": "ニジエ運営","description": "ニジエンジョイ!","sameAs": "https://nijie.info/members.php?id=38","image": "http://pic04.nijie.info/members_picture/thumbnail/38_1511696698.png"},"datePublished": "Tue Aug 26 17:56:41 2014","contentLocation": "Japan","itemReviewed": {"@type" : "ImageObject","name" : "チンポップくんの日常ep.1「チンポップくんと釣り」","sameAs": "https://nijie.info/view.php?id=66384"}}</script>
<script type="application/ld+json">{"@context": "http://schema.org","@type": "Review","reviewBody": "ヨダレもの","author": {"@type": "Person","name": "ニジエ運営","description": "ニジエンジョイ!","sameAs": "https://nijie.info/members.php?id=38","image": "http://pic04.nijie.info/members_picture/thumbnail/38_1511696698.png"},"datePublished": "Mon Jun 23 10:17:29 2014","contentLocation": "Japan","itemReviewed": {"@type" : "ImageObject","name" : "チンポップくんの日常ep.1「チンポップくんと釣り」","sameAs": "https://nijie.info/view.php?id=66384"}}</script>
<script type="application/ld+json">{"@context": "http://schema.org","@type": "Review","reviewBody": "おまわりさんこっちです","author": {"@type": "Person","name": "ニジエ運営","description": "ニジエンジョイ!","sameAs": "https://nijie.info/members.php?id=38","image": "http://pic04.nijie.info/members_picture/thumbnail/38_1511696698.png"},"datePublished": "Thu Mar 27 10:49:56 2014","contentLocation": "Japan","itemReviewed": {"@type" : "ImageObject","name" : "チンポップくんの日常ep.1「チンポップくんと釣り」","sameAs": "https://nijie.info/view.php?id=66384"}}</script>
<script type="application/ld+json">{"@context": "http://schema.org","@type": "Review","reviewBody": "めちゃシコ","author": {"@type": "Person","name": "ニジエ運営","description": "ニジエンジョイ!","sameAs": "https://nijie.info/members.php?id=38","image": "http://pic04.nijie.info/members_picture/thumbnail/38_1511696698.png"},"datePublished": "Sat Feb 15 18:47:22 2014","contentLocation": "Japan","itemReviewed": {"@type" : "ImageObject","name" : "チンポップくんの日常ep.1「チンポップくんと釣り」","sameAs": "https://nijie.info/view.php?id=66384"}}</script>
</body>
</html>

824
tests/fixture/Pixiv/testIllust.json vendored Normal file
View File

@@ -0,0 +1,824 @@
{
"error": false,
"message": "",
"body": {
"illustId": "68188073",
"illustTitle": "coffee break",
"illustComment": "",
"id": "68188073",
"title": "coffee break",
"description": "",
"illustType": 0,
"createDate": "2018-04-11T15:01:28+00:00",
"uploadDate": "2018-04-11T15:01:28+00:00",
"restrict": 0,
"xRestrict": 0,
"sl": 2,
"urls": {
"mini": "https://i.pximg.net/c/48x48/img-master/img/2018/04/12/00/01/28/68188073_p0_square1200.jpg",
"thumb": "https://i.pximg.net/c/250x250_80_a2/img-master/img/2018/04/12/00/01/28/68188073_p0_square1200.jpg",
"small": "https://i.pximg.net/c/540x540_70/img-master/img/2018/04/12/00/01/28/68188073_p0_master1200.jpg",
"regular": "https://i.pximg.net/img-master/img/2018/04/12/00/01/28/68188073_p0_master1200.jpg",
"original": "https://i.pximg.net/img-original/img/2018/04/12/00/01/28/68188073_p0.jpg"
},
"tags": {
"authorId": "17810",
"isLocked": false,
"tags": [
{
"tag": "オリジナル",
"locked": true,
"deletable": false,
"userId": "17810",
"romaji": "orijinaru",
"translation": {
"en": "original"
},
"userName": "裕"
},
{
"tag": "カフェ",
"locked": true,
"deletable": false,
"userId": "17810",
"romaji": "kafe",
"translation": {
"en": "cafe"
},
"userName": "裕"
},
{
"tag": "眼鏡",
"locked": true,
"deletable": false,
"userId": "17810",
"romaji": "megane",
"translation": {
"en": "glasses"
},
"userName": "裕"
},
{
"tag": "イヤホン",
"locked": true,
"deletable": false,
"userId": "17810",
"romaji": "iyahonn",
"translation": {
"en": "earphones"
},
"userName": "裕"
},
{
"tag": "ぱっつん",
"locked": false,
"deletable": false,
"romaji": "pattsunn",
"translation": {
"en": "straight fringe"
}
},
{
"tag": "艶ぼくろ",
"locked": false,
"deletable": false,
"romaji": "tsuyabokuro"
},
{
"tag": "眼鏡っ娘",
"locked": false,
"deletable": false,
"romaji": "meganekko",
"translation": {
"en": "girl with glasses"
}
},
{
"tag": "オリジナル5000users入り",
"locked": false,
"deletable": false,
"romaji": "orijinarugosennyu-za-zuiri",
"translation": {
"en": "original 5000+ bookmarks"
}
}
],
"writable": false
},
"storableTags": [
"RTJMXD26Ak",
"-UnxstvmLW",
"Nbvc4l7O_x",
"FTUtcpiOkA",
"w0fH70xUZS",
"27uevOlfIe",
"Sjwi7bh6-s",
"_pwIgrV8TB"
],
"userId": "17810",
"userName": "裕",
"userAccount": "youcapriccio",
"userIllusts": {
"14053843": null,
"14053937": null,
"14054027": null,
"14054186": null,
"14062828": null,
"14477076": null,
"14792405": null,
"16046742": null,
"16138239": null,
"16352926": null,
"16452748": null,
"16915557": null,
"17083628": null,
"17210510": null,
"17386995": null,
"17423518": null,
"17448062": null,
"17543415": null,
"17568036": null,
"17593779": null,
"17619003": null,
"17628888": null,
"17698823": null,
"17817803": null,
"17942662": null,
"18161965": null,
"18212527": null,
"18837942": null,
"19413060": null,
"19692459": null,
"19966924": null,
"19972770": null,
"20324120": null,
"20340204": null,
"20366995": null,
"20471558": null,
"20602724": null,
"20604539": null,
"20688177": null,
"21091157": null,
"21458619": null,
"21465117": null,
"21499486": null,
"21761917": null,
"22045640": null,
"22123124": null,
"22197758": null,
"22218971": null,
"22234319": null,
"22283588": null,
"22646212": null,
"22671292": null,
"23077173": null,
"23652482": null,
"24064845": null,
"24665326": null,
"24679135": null,
"24712190": null,
"24947762": null,
"25329936": null,
"26366272": null,
"27393935": null,
"27485745": null,
"27666949": null,
"28259132": null,
"28342787": null,
"28472420": null,
"28542432": null,
"28802580": null,
"28944777": null,
"29191265": null,
"29205875": null,
"29684473": null,
"29783263": null,
"30192166": null,
"31110886": null,
"31537645": null,
"32646946": null,
"32750353": null,
"33202416": null,
"33395376": null,
"33440266": null,
"35365709": null,
"35460263": null,
"36004858": null,
"36165748": null,
"36700962": null,
"36701188": null,
"36701484": null,
"36701689": null,
"37016640": null,
"37095482": null,
"37547592": null,
"39164365": null,
"40884078": null,
"41559080": null,
"46072865": null,
"46201289": null,
"46278624": null,
"47055452": null,
"47778617": null,
"48069391": null,
"48695249": null,
"48803034": null,
"49208325": null,
"49928045": null,
"51884036": null,
"51945556": null,
"52323083": null,
"52335660": null,
"52420382": null,
"52665902": null,
"52698908": null,
"52879266": null,
"53242280": null,
"53349656": null,
"53416534": null,
"53539911": null,
"53691135": null,
"53883574": null,
"53883648": null,
"54260186": null,
"54772276": null,
"54804756": null,
"54928943": null,
"54959965": null,
"55189849": null,
"55486830": null,
"55608689": null,
"55624737": null,
"55722012": null,
"55758248": null,
"55882194": null,
"56678994": null,
"57209033": null,
"57249918": null,
"57330537": null,
"57405593": null,
"57420595": null,
"57775178": null,
"58076340": null,
"59119603": null,
"59261109": null,
"59561361": null,
"59575686": null,
"60021663": null,
"60053226": null,
"60083767": null,
"60421993": null,
"60619841": null,
"60865442": null,
"61015613": null,
"61198859": null,
"61367766": null,
"61544285": null,
"61717134": null,
"61824584": null,
"61914664": null,
"62114491": null,
"62226468": null,
"62991520": null,
"63100455": null,
"63227860": null,
"63515109": null,
"63867496": null,
"64082433": null,
"64304193": null,
"64516472": null,
"64723379": null,
"64930347": null,
"64975155": null,
"65195542": null,
"65405890": null,
"65655985": null,
"65671343": null,
"65690745": null,
"65706774": null,
"65736319": null,
"65982587": null,
"66005055": null,
"66106458": null,
"66414630": null,
"66494466": null,
"66595810": null,
"66681398": null,
"66700481": null,
"66716698": null,
"66772099": null,
"67134385": null,
"67148315": null,
"67207903": null,
"67496395": null,
"67656921": null,
"67868039": null,
"67881973": null,
"67882087": {
"illustId": "67882087",
"illustTitle": "魔龍",
"id": "67882087",
"title": "魔龍",
"illustType": 0,
"xRestrict": 0,
"restrict": 0,
"sl": 2,
"url": "https://i.pximg.net/c/250x250_80_a2/img-master/img/2018/03/24/00/05/13/67882087_p0_square1200.jpg",
"description": "",
"tags": [
"オリジナル",
"ドラゴン",
"魔龍",
"仕事絵"
],
"userId": "17810",
"userName": "裕",
"width": 1494,
"height": 1000,
"pageCount": 2,
"isBookmarkable": null,
"bookmarkData": null
},
"67932654": {
"illustId": "67932654",
"illustTitle": "武器デザイン",
"id": "67932654",
"title": "武器デザイン",
"illustType": 0,
"xRestrict": 0,
"restrict": 0,
"sl": 2,
"url": "https://i.pximg.net/c/250x250_80_a2/img-master/img/2018/03/27/00/16/43/67932654_p0_square1200.jpg",
"description": "",
"tags": [
"オリジナル",
"仕事絵",
"ファンタジー",
"武器"
],
"userId": "17810",
"userName": "裕",
"width": 1383,
"height": 1573,
"pageCount": 1,
"isBookmarkable": null,
"bookmarkData": null
},
"67932696": {
"illustId": "67932696",
"illustTitle": "ファンタジーキャラ×6",
"id": "67932696",
"title": "ファンタジーキャラ×6",
"illustType": 0,
"xRestrict": 0,
"restrict": 0,
"sl": 2,
"url": "https://i.pximg.net/c/250x250_80_a2/img-master/img/2018/03/27/00/18/33/67932696_p0_square1200.jpg",
"description": "",
"tags": [
"オリジナル",
"仕事絵",
"ファンタジー",
"デフォルメ",
"SD"
],
"userId": "17810",
"userName": "裕",
"width": 970,
"height": 812,
"pageCount": 1,
"isBookmarkable": null,
"bookmarkData": null
},
"67947316": {
"illustId": "67947316",
"illustTitle": "春ピンク🌸",
"id": "67947316",
"title": "春ピンク🌸",
"illustType": 0,
"xRestrict": 0,
"restrict": 0,
"sl": 2,
"url": "https://i.pximg.net/c/250x250_80_a2/img-master/img/2018/03/28/00/05/33/67947316_p0_square1200.jpg",
"description": "",
"tags": [
"オリジナル",
"女の子",
"ファッション",
"カチューシャ編み",
"ピアス",
"アイシャドウ",
"マニキュア",
"茶髪"
],
"userId": "17810",
"userName": "裕",
"width": 1173,
"height": 1227,
"pageCount": 1,
"isBookmarkable": null,
"bookmarkData": null
},
"68064045": {
"illustId": "68064045",
"illustTitle": "Girls🌸",
"id": "68064045",
"title": "Girls🌸",
"illustType": 0,
"xRestrict": 0,
"restrict": 0,
"sl": 2,
"url": "https://i.pximg.net/c/250x250_80_a2/img-master/img/2018/04/04/00/00/32/68064045_p0_square1200.jpg",
"description": "",
"tags": [
"オリジナル",
"ガールズイラスト",
"ファッション",
"ピアス",
"アイシャドウ",
"マニキュア",
"茶髪",
"パーマ"
],
"userId": "17810",
"userName": "裕",
"width": 800,
"height": 1148,
"pageCount": 1,
"isBookmarkable": null,
"bookmarkData": null
},
"68146376": {
"illustId": "68146376",
"illustTitle": "ねこ娘",
"id": "68146376",
"title": "ねこ娘",
"illustType": 0,
"xRestrict": 0,
"restrict": 0,
"sl": 2,
"url": "https://i.pximg.net/c/250x250_80_a2/img-master/img/2018/04/09/00/14/20/68146376_p0_square1200.jpg",
"description": "",
"tags": [
"ゲゲゲの鬼太郎",
"ねこ娘",
"6期猫娘",
"ゲゲゲの鬼太郎1000users入り"
],
"userId": "17810",
"userName": "裕",
"width": 1200,
"height": 1697,
"pageCount": 1,
"isBookmarkable": null,
"bookmarkData": null
},
"68188073": {
"illustId": "68188073",
"illustTitle": "coffee break",
"id": "68188073",
"title": "coffee break",
"illustType": 0,
"xRestrict": 0,
"restrict": 0,
"sl": 2,
"url": "https://i.pximg.net/c/250x250_80_a2/img-master/img/2018/04/12/00/01/28/68188073_p0_square1200.jpg",
"description": "",
"tags": [
"オリジナル",
"カフェ",
"眼鏡",
"イヤホン",
"ぱっつん",
"艶ぼくろ",
"眼鏡っ娘",
"オリジナル5000users入り"
],
"userId": "17810",
"userName": "裕",
"width": 1200,
"height": 842,
"pageCount": 1,
"isBookmarkable": true,
"bookmarkData": null
},
"68232025": {
"illustId": "68232025",
"illustTitle": "木漏れ日",
"id": "68232025",
"title": "木漏れ日",
"illustType": 0,
"xRestrict": 0,
"restrict": 0,
"sl": 2,
"url": "https://i.pximg.net/c/250x250_80_a2/img-master/img/2018/04/15/00/07/57/68232025_p0_square1200.jpg",
"description": "",
"tags": [
"オリジナル",
"女の子",
"木漏れ日",
"猫",
"オフショルダー",
"猫と女の子",
"オリジナル500users入り"
],
"userId": "17810",
"userName": "裕",
"width": 1200,
"height": 1446,
"pageCount": 1,
"isBookmarkable": null,
"bookmarkData": null
},
"68561488": {
"illustId": "68561488",
"illustTitle": "雨上がりとJK",
"id": "68561488",
"title": "雨上がりとJK",
"illustType": 0,
"xRestrict": 0,
"restrict": 0,
"sl": 2,
"url": "https://i.pximg.net/c/250x250_80_a2/img-master/img/2018/05/04/00/38/19/68561488_p0_square1200.jpg",
"description": "",
"tags": [
"オリジナル",
"女子高生",
"コミティア",
"COMITIA124",
"制服",
"白ハイソックス",
"魅惑のすね",
"ロングヘアー",
"オリジナル10000users入り"
],
"userId": "17810",
"userName": "裕",
"width": 600,
"height": 767,
"pageCount": 1,
"isBookmarkable": null,
"bookmarkData": null
},
"68625248": {
"illustId": "68625248",
"illustTitle": "ドット柄×眼鏡",
"id": "68625248",
"title": "ドット柄×眼鏡",
"illustType": 0,
"xRestrict": 0,
"restrict": 0,
"sl": 2,
"url": "https://i.pximg.net/c/250x250_80_a2/img-master/img/2018/05/07/00/57/20/68625248_p0_square1200.jpg",
"description": "",
"tags": [
"オリジナル",
"女の子",
"女子高生",
"ドット柄",
"眼鏡",
"制服",
"腕時計",
"リュックサック",
"リボン",
"オリジナル5000users入り"
],
"userId": "17810",
"userName": "裕",
"width": 600,
"height": 848,
"pageCount": 1,
"isBookmarkable": null,
"bookmarkData": null
},
"68684760": {
"illustId": "68684760",
"illustTitle": "告白の日",
"id": "68684760",
"title": "告白の日",
"illustType": 0,
"xRestrict": 0,
"restrict": 0,
"sl": 2,
"url": "https://i.pximg.net/c/250x250_80_a2/img-master/img/2018/05/11/00/00/14/68684760_p0_square1200.jpg",
"description": "",
"tags": [
"オリジナル",
"仕事絵",
"女子高生",
"制服",
"カルピス",
"ラブレター",
"カルピスウォーター",
"オリジナル1000users入り"
],
"userId": "17810",
"userName": "裕",
"width": 1400,
"height": 700,
"pageCount": 1,
"isBookmarkable": null,
"bookmarkData": null
},
"68780252": {
"illustId": "68780252",
"illustTitle": "たとえばお伽噺に出てくるような、そんな魔法使い",
"id": "68780252",
"title": "たとえばお伽噺に出てくるような、そんな魔法使い",
"illustType": 0,
"xRestrict": 0,
"restrict": 0,
"sl": 2,
"url": "https://i.pximg.net/c/250x250_80_a2/img-master/img/2018/05/17/00/03/26/68780252_p0_square1200.jpg",
"description": "",
"tags": [
"オリジナル",
"仕事絵",
"蒼空",
"オリジナル500users入り"
],
"userId": "17810",
"userName": "裕",
"width": 800,
"height": 1141,
"pageCount": 1,
"isBookmarkable": null,
"bookmarkData": null
},
"68936315": {
"illustId": "68936315",
"illustTitle": "謎のヒロインX",
"id": "68936315",
"title": "謎のヒロインX",
"illustType": 0,
"xRestrict": 0,
"restrict": 0,
"sl": 2,
"url": "https://i.pximg.net/c/250x250_80_a2/img-master/img/2018/05/27/00/01/02/68936315_p0_square1200.jpg",
"description": "",
"tags": [
"Fate/GrandOrder",
"謎のヒロインX",
"FGO",
"Fate/GO1000users入り",
"FGOイラコン2"
],
"userId": "17810",
"userName": "裕",
"width": 2893,
"height": 4092,
"pageCount": 1,
"isBookmarkable": null,
"bookmarkData": null
},
"69000379": null,
"69045498": null,
"69138520": null,
"69204438": null,
"69263984": null,
"69311774": null,
"69326765": null,
"69340502": null,
"69390965": null,
"69419351": null,
"69498750": null,
"69755373": null,
"69781341": null,
"69972875": null,
"70042642": null,
"70272492": null,
"70419208": null,
"70959974": null,
"70992219": null,
"71006962": null,
"71022606": null,
"71056067": null,
"71076458": null,
"71094391": null,
"71274492": null,
"71462679": null,
"72235293": null,
"72480342": null,
"72514297": null,
"72535044": null,
"72551222": null,
"72565887": null,
"72581189": null,
"72596181": null,
"72611658": null,
"72629786": null,
"72648764": null,
"72668158": null,
"72683532": null,
"72698000": null,
"72712777": null,
"72744221": null,
"72764549": null,
"72780210": null,
"72795236": null,
"72810723": null,
"72826398": null,
"72841779": null,
"72859874": null,
"72879945": null,
"72894635": null,
"73169245": null,
"73169325": null,
"73206108": null,
"73600652": null,
"74143168": null,
"74157207": null,
"74170787": null,
"74187191": null,
"74208185": null,
"74223553": null,
"74251605": null,
"74265532": null,
"74451789": null,
"74478687": null,
"74502113": null,
"74542366": null,
"74650363": null,
"74664239": null,
"74666682": null,
"74791171": null,
"74827564": null,
"75226739": null,
"75242973": null
},
"likeData": false,
"width": 1200,
"height": 842,
"pageCount": 1,
"bookmarkCount": 5431,
"likeCount": 4324,
"commentCount": 10,
"responseCount": 0,
"viewCount": 35092,
"isHowto": false,
"isOriginal": true,
"imageResponseOutData": [],
"imageResponseData": [],
"imageResponseCount": 0,
"pollData": null,
"seriesNavData": null,
"descriptionBoothId": null,
"descriptionYoutubeId": null,
"comicPromotion": null,
"contestBanners": [],
"factoryGoods": {
"integratable": true,
"integrated": false
},
"isBookmarkable": true,
"bookmarkData": null,
"contestData": null,
"zoneConfig": {
"responsive": {
"url": "https://pixon.ads-pixiv.net/show?zone_id=illust_responsive&format=js&s=0&up=0&ng=w&l=ja&uri=%2Fajax%2Fillust%2F_PARAM_&is_spa=1&ab_test_digits_first=5&ab_test_digits_second=5&Yuid=MjgDVlY&suid=Pg43qwdceqt404kl9&num=5d06c0df289"
},
"300x250": {
"url": "https://pixon.ads-pixiv.net/show?zone_id=illust_rectangle&format=js&s=0&up=0&ng=w&l=ja&uri=%2Fajax%2Fillust%2F_PARAM_&is_spa=1&ab_test_digits_first=5&ab_test_digits_second=5&Yuid=MjgDVlY&suid=Pg43qwdcett5g1ucx&num=5d06c0df449"
},
"header": {
"url": "https://pixon.ads-pixiv.net/show?zone_id=header&format=js&s=0&up=0&ng=w&l=ja&uri=%2Fajax%2Fillust%2F_PARAM_&is_spa=1&ab_test_digits_first=5&ab_test_digits_second=5&Yuid=MjgDVlY&suid=Pg43qwdcewbo66sio&num=5d06c0df704"
},
"footer": {
"url": "https://pixon.ads-pixiv.net/show?zone_id=footer&format=js&s=0&up=0&ng=w&l=ja&uri=%2Fajax%2Fillust%2F_PARAM_&is_spa=1&ab_test_digits_first=5&ab_test_digits_second=5&Yuid=MjgDVlY&suid=Pg43qwdceypre876g&num=5d06c0df256"
},
"expandedFooter": {
"url": "https://pixon.ads-pixiv.net/show?zone_id=multiple_illust_viewer&format=js&s=0&up=0&ng=w&l=ja&uri=%2Fajax%2Fillust%2F_PARAM_&is_spa=1&ab_test_digits_first=5&ab_test_digits_second=5&Yuid=MjgDVlY&suid=Pg43qwdcf11vpcj6t&num=5d06c0df904"
},
"logo": {
"url": "https://pixon.ads-pixiv.net/show?zone_id=logo_side&format=js&s=0&up=0&ng=w&l=ja&uri=%2Fajax%2Fillust%2F_PARAM_&is_spa=1&ab_test_digits_first=5&ab_test_digits_second=5&Yuid=MjgDVlY&suid=Pg43qwdcf3cd2h2z3&num=5d06c0df383"
},
"500x500": {
"url": "https://pixon.ads-pixiv.net/show?zone_id=bigbanner&format=js&s=0&up=0&ng=w&l=ja&uri=%2Fajax%2Fillust%2F_PARAM_&is_spa=1&ab_test_digits_first=5&ab_test_digits_second=5&Yuid=MjgDVlY&suid=Pg43qwdcf5o97vzyt&num=5d06c0df945"
}
},
"extraData": {
"meta": {
"title": "【オリジナル】「coffee break」/「裕」のイラスト [pixiv]",
"description": "この作品 「coffee break」 は 「オリジナル」「カフェ」 等のタグがつけられた「裕」さんのイラストです。 「」",
"keywords": "オリジナル,カフェ,眼鏡,イヤホン,ぱっつん,艶ぼくろ,眼鏡っ娘,オリジナル5000users入り,イラスト,pixiv,ピクシブ",
"canonical": "https://www.pixiv.net/member_illust.php?mode=medium&illust_id=68188073"
}
},
"noLoginData": {
"breadcrumbs": [
"創作",
"オリジナル"
],
"zengoIdWorks": {
"prev": {
"id": "68188072",
"title": "Winter Soldier_Infinity War ver."
},
"next": {
"id": "68188074",
"title": "【腐】翔太受けまとめ"
}
}
}
}
}

View File

@@ -0,0 +1,329 @@
{
"error": false,
"message": "",
"body": {
"illustId": "47220843",
"illustTitle": "がぶ飲みミルクティー",
"illustComment": "劇中で度々お見かけするお姿がたまらなく愛おしいのです<br />チラリズムでしょうか",
"id": "47220843",
"title": "がぶ飲みミルクティー",
"description": "劇中で度々お見かけするお姿がたまらなく愛おしいのです<br />チラリズムでしょうか",
"illustType": 0,
"createDate": "2014-11-23T06:52:00+00:00",
"uploadDate": "2014-11-23T06:52:00+00:00",
"restrict": 0,
"xRestrict": 1,
"sl": 6,
"urls": {
"mini": "https://i.pximg.net/c/48x48/img-master/img/2014/11/23/15/52/00/47220843_p0_square1200.jpg",
"thumb": "https://i.pximg.net/c/250x250_80_a2/img-master/img/2014/11/23/15/52/00/47220843_p0_square1200.jpg",
"small": "https://i.pximg.net/c/540x540_70/img-master/img/2014/11/23/15/52/00/47220843_p0_master1200.jpg",
"regular": "https://i.pximg.net/img-master/img/2014/11/23/15/52/00/47220843_p0_master1200.jpg",
"original": "https://i.pximg.net/img-original/img/2014/11/23/15/52/00/47220843_p0.jpg"
},
"tags": {
"authorId": "10589144",
"isLocked": false,
"tags": [
{
"tag": "R-18",
"locked": true,
"deletable": false,
"userId": "10589144",
"romaji": null,
"userName": "きっぷる"
},
{
"tag": "SHIROBAKO",
"locked": true,
"deletable": false,
"userId": "10589144",
"romaji": null,
"userName": "きっぷる"
},
{
"tag": "小笠原綸子",
"locked": true,
"deletable": false,
"userId": "10589144",
"romaji": "ogasawararinnko",
"userName": "きっぷる"
},
{
"tag": "ゴスロリ様",
"locked": true,
"deletable": false,
"userId": "10589144",
"romaji": "gosurorisama",
"userName": "きっぷる"
},
{
"tag": "中出し",
"locked": true,
"deletable": false,
"userId": "10589144",
"romaji": "nakadashi",
"translation": {
"en": "creampie"
},
"userName": "きっぷる"
},
{
"tag": "SHIRUPAKO",
"locked": false,
"deletable": false,
"romaji": null
},
{
"tag": "くわえたくしあげ",
"locked": false,
"deletable": false,
"romaji": "kuwaetakushiage",
"translation": {
"en": "shirt held up with the mouth"
}
},
{
"tag": "ずらし挿入",
"locked": false,
"deletable": false,
"romaji": "zurashisounyuu",
"translation": {
"en": "clothed penetration"
}
},
{
"tag": "SHIROBAKO1000users入り",
"locked": false,
"deletable": false,
"romaji": "shirobakoissennyu-za-zuiri"
},
{
"tag": "破れストッキング",
"locked": false,
"deletable": false,
"romaji": "yaburesutokkinngu",
"translation": {
"en": "torn stockings"
}
}
],
"writable": false
},
"storableTags": [
"0xsDLqCEW6",
"OFfMrDY0Rx",
"LUdsS_06nd",
"jOuNGy1xGb",
"MM6RXH_rlN",
"8MSz4vqmhj",
"G3Q8bNP7Gg",
"B_OtVkMSZT",
"0HPK64uuTz",
"jEfylbrgQX"
],
"userId": "10589144",
"userName": "きっぷる",
"userAccount": "kipples",
"userIllusts": {
"43288863": {
"illustId": "43288863",
"illustTitle": "だべの人",
"id": "43288863",
"title": "だべの人",
"illustType": 0,
"xRestrict": 0,
"restrict": 0,
"sl": 2,
"url": "https://i.pximg.net/c/250x250_80_a2/img-master/img/2014/05/04/13/05/50/43288863_p0_square1200.jpg",
"description": "",
"tags": [
"バトルスピリッツ",
"最強銀河究極ゼロ",
"マレーネ",
"CLIPSTUDIOPAINT"
],
"userId": "10589144",
"userName": "きっぷる",
"width": 648,
"height": 906,
"pageCount": 1,
"isBookmarkable": null,
"bookmarkData": null
},
"46440938": {
"illustId": "46440938",
"illustTitle": "二期で会おうぜ、ベイビー",
"id": "46440938",
"title": "二期で会おうぜ、ベイビー",
"illustType": 0,
"xRestrict": 0,
"restrict": 0,
"sl": 2,
"url": "https://i.pximg.net/c/250x250_80_a2/img-master/img/2014/10/09/10/14/37/46440938_p0_square1200.jpg",
"description": "",
"tags": [
"さばげぶっ!",
"カニ",
"ゲスかわ☆ガールズ",
"CLIPSTUDIOPAINT"
],
"userId": "10589144",
"userName": "きっぷる",
"width": 784,
"height": 1015,
"pageCount": 2,
"isBookmarkable": null,
"bookmarkData": null
},
"47220843": {
"illustId": "47220843",
"illustTitle": "がぶ飲みミルクティー",
"id": "47220843",
"title": "がぶ飲みミルクティー",
"illustType": 0,
"xRestrict": 1,
"restrict": 0,
"sl": 6,
"url": "https://i.pximg.net/c/250x250_80_a2/img-master/img/2014/11/23/15/52/00/47220843_p0_square1200.jpg",
"description": "劇中で度々お見かけするお姿がたまらなく愛おしいのです<br />チラリズムでしょうか",
"tags": [
"R-18",
"SHIROBAKO",
"小笠原綸子",
"ゴスロリ様",
"中出し",
"SHIRUPAKO",
"くわえたくしあげ",
"ずらし挿入",
"SHIROBAKO1000users入り",
"破れストッキング"
],
"userId": "10589144",
"userName": "きっぷる",
"width": 777,
"height": 1087,
"pageCount": 2,
"isBookmarkable": true,
"bookmarkData": null
},
"65079114": {
"illustId": "65079114",
"illustTitle": "あってます",
"id": "65079114",
"title": "あってます",
"illustType": 0,
"xRestrict": 0,
"restrict": 0,
"sl": 2,
"url": "https://i.pximg.net/c/250x250_80_a2/img-master/img/2017/09/22/10/40/35/65079114_p0_square1200.jpg",
"description": "",
"tags": [
"ニーアオートマタ",
"2B",
"9S",
"尻",
"尻神様",
"人類に栄光あれ",
"NieR:Automata",
"2B9S",
"ヨルハ二号B型",
"NieR1000users入り"
],
"userId": "10589144",
"userName": "きっぷる",
"width": 1171,
"height": 1447,
"pageCount": 5,
"isBookmarkable": null,
"bookmarkData": null
}
},
"likeData": false,
"width": 777,
"height": 1087,
"pageCount": 2,
"bookmarkCount": 2242,
"likeCount": 1718,
"commentCount": 12,
"responseCount": 0,
"viewCount": 85669,
"isHowto": false,
"isOriginal": false,
"imageResponseOutData": [],
"imageResponseData": [],
"imageResponseCount": 0,
"pollData": null,
"seriesNavData": null,
"descriptionBoothId": null,
"descriptionYoutubeId": null,
"comicPromotion": null,
"contestBanners": [],
"factoryGoods": {
"integratable": false,
"integrated": false
},
"isBookmarkable": true,
"bookmarkData": null,
"contestData": null,
"zoneConfig": {
"responsive": {
"url": "https://pixon.ads-pixiv.net/show?zone_id=illust_responsive&format=js&s=0&up=0&ng=g&l=ja&uri=%2Fajax%2Fillust%2F_PARAM_&is_spa=1&ab_test_digits_first=5&ab_test_digits_second=5&Yuid=MjgDVlY&suid=Pg4lgebkzsfhdvlrs&num=5d1af27028"
},
"300x250": {
"url": "https://pixon.ads-pixiv.net/show?zone_id=illust_rectangle&format=js&s=0&up=0&ng=g&l=ja&uri=%2Fajax%2Fillust%2F_PARAM_&is_spa=1&ab_test_digits_first=5&ab_test_digits_second=5&Yuid=MjgDVlY&suid=Pg4lgebkzvh1ugg9e&num=5d1af270873"
},
"500x500": {
"url": "https://pixon.ads-pixiv.net/show?zone_id=bigbanner&format=js&s=0&up=0&ng=g&l=ja&uri=%2Fajax%2Fillust%2F_PARAM_&is_spa=1&ab_test_digits_first=5&ab_test_digits_second=5&Yuid=MjgDVlY&suid=Pg4lgebkzxw1ynubq&num=5d1af270762"
},
"header": {
"url": "https://pixon.ads-pixiv.net/show?zone_id=header&format=js&s=0&up=0&ng=g&l=ja&uri=%2Fajax%2Fillust%2F_PARAM_&is_spa=1&ab_test_digits_first=5&ab_test_digits_second=5&Yuid=MjgDVlY&suid=Pg4lgebl00lfis546&num=5d1af270915"
},
"footer": {
"url": "https://pixon.ads-pixiv.net/show?zone_id=footer&format=js&s=0&up=0&ng=g&l=ja&uri=%2Fajax%2Fillust%2F_PARAM_&is_spa=1&ab_test_digits_first=5&ab_test_digits_second=5&Yuid=MjgDVlY&suid=Pg4lgebl02yvrd3wn&num=5d1af270474"
},
"expandedFooter": {
"url": "https://pixon.ads-pixiv.net/show?zone_id=multiple_illust_viewer&format=js&s=0&up=0&ng=g&l=ja&uri=%2Fajax%2Fillust%2F_PARAM_&is_spa=1&ab_test_digits_first=5&ab_test_digits_second=5&Yuid=MjgDVlY&suid=Pg4lgebl05avijuu5&num=5d1af270637"
},
"logo": {
"url": "https://pixon.ads-pixiv.net/show?zone_id=logo_side&format=js&s=0&up=0&ng=g&l=ja&uri=%2Fajax%2Fillust%2F_PARAM_&is_spa=1&ab_test_digits_first=5&ab_test_digits_second=5&Yuid=MjgDVlY&suid=Pg4lgebl07ypkz6k2&num=5d1af270788"
}
},
"extraData": {
"meta": {
"title": "[R-18] 【SHIROBAKO】「がぶ飲みミルクティー」/「きっぷる」のイラスト [pixiv]",
"description": "この作品 「がぶ飲みミルクティー」 は 「R-18」「SHIROBAKO」 等のタグがつけられた「きっぷる」さんのイラストです。 「劇中で度々お見かけするお姿がたまらなく愛おしいのですチラリズムでしょうか」",
"keywords": "R-18,SHIROBAKO,小笠原綸子,ゴスロリ様,中出し,SHIRUPAKO,くわえたくしあげ,ずらし挿入,SHIROBAKO1000users入り,破れストッキング,イラスト,pixiv,ピクシブ",
"canonical": "https://www.pixiv.net/member_illust.php?mode=medium&illust_id=47220843",
"ogp": {
"description": "劇中で度々お見かけするお姿がたまらなく愛おしいのですチラリズムでしょうか",
"image": "https://s.pximg.net/www/images/pixiv_logo.gif?2",
"title": "「がぶ飲みミルクティー」/「きっぷる」[pixiv]",
"type": "article"
},
"twitter": {
"description": "劇中で度々お見かけするお姿がたまらなく愛おしいのです\r\nチラリズムでしょうか",
"image": "https://s.pximg.net/www/images/pixiv_logo.gif?2",
"title": "[R-18]がぶ飲みミルクティー",
"card": "summary"
}
}
},
"noLoginData": {
"breadcrumbs": [
"日常",
"R-18"
],
"zengoIdWorks": {
"prev": {
"id": "47220842",
"title": "優しく 終わりを告げ て"
},
"next": {
"id": "47220846",
"title": "今泉受けまとめ3"
}
}
}
}
}

604
tests/fixture/Pixiv/testManga.json vendored Normal file
View File

@@ -0,0 +1,604 @@
{
"error": false,
"message": "",
"body": {
"illustId": "46713544",
"illustTitle": "冬の日ラブラブ",
"illustComment": "ラブラブエッチのらくがき<br /><br />三万フォロワー感謝します~<br /><br />最近忙しいので、自分の時間が少ない・・・",
"id": "46713544",
"title": "冬の日ラブラブ",
"description": "ラブラブエッチのらくがき<br /><br />三万フォロワー感謝します~<br /><br />最近忙しいので、自分の時間が少ない・・・",
"illustType": 1,
"createDate": "2014-10-24T15:06:58+00:00",
"uploadDate": "2014-10-24T15:06:58+00:00",
"restrict": 0,
"xRestrict": 1,
"sl": 6,
"urls": {
"mini": "https://i.pximg.net/c/48x48/img-master/img/2014/10/25/00/06/58/46713544_p0_square1200.jpg",
"thumb": "https://i.pximg.net/c/250x250_80_a2/img-master/img/2014/10/25/00/06/58/46713544_p0_square1200.jpg",
"small": "https://i.pximg.net/c/540x540_70/img-master/img/2014/10/25/00/06/58/46713544_p0_master1200.jpg",
"regular": "https://i.pximg.net/img-master/img/2014/10/25/00/06/58/46713544_p0_master1200.jpg",
"original": "https://i.pximg.net/img-original/img/2014/10/25/00/06/58/46713544_p0.jpg"
},
"tags": {
"authorId": "502217",
"isLocked": false,
"tags": [
{
"tag": "R-18",
"locked": true,
"deletable": false,
"userId": "502217",
"romaji": null,
"userName": "Aza"
},
{
"tag": "落書き",
"locked": true,
"deletable": false,
"userId": "502217",
"romaji": "rakugaki",
"translation": {
"en": "doodle"
},
"userName": "Aza"
},
{
"tag": "おっぱい",
"locked": true,
"deletable": false,
"userId": "502217",
"romaji": "oppai",
"translation": {
"en": "breasts"
},
"userName": "Aza"
},
{
"tag": "オリジナル",
"locked": true,
"deletable": false,
"userId": "502217",
"romaji": "orijinaru",
"translation": {
"en": "original"
},
"userName": "Aza"
},
{
"tag": "パイズリ",
"locked": false,
"deletable": false,
"romaji": "paizuri",
"translation": {
"en": "paizuri"
}
},
{
"tag": "中出し",
"locked": false,
"deletable": false,
"romaji": "nakadashi",
"translation": {
"en": "creampie"
}
},
{
"tag": "だいしゅきホールド",
"locked": false,
"deletable": false,
"romaji": "daishukiho-rudo",
"translation": {
"en": "leg lock"
}
},
{
"tag": "愛のあるセックス",
"locked": false,
"deletable": false,
"romaji": "ainoarusekkusu",
"translation": {
"en": "love-making"
}
},
{
"tag": "黒髪ロング",
"locked": false,
"deletable": false,
"romaji": "kurokamironngu",
"translation": {
"en": "long black hair"
}
},
{
"tag": "オリジナル10000users入り",
"locked": false,
"deletable": false,
"romaji": "orijinaruichimannyu-za-zuiri",
"translation": {
"en": "original 10000+ bookmarks"
}
}
],
"writable": false
},
"storableTags": [
"0xsDLqCEW6",
"KvAGITxIxH",
"Ie2c51_4Sp",
"RTJMXD26Ak",
"AI_aJCDFn0",
"MM6RXH_rlN",
"MmtTUk7gNU",
"LEmyJ-RN72",
"pYlUxeIoeg",
"jH0uD88V6F"
],
"userId": "502217",
"userName": "Aza",
"userAccount": "zaxwu",
"userIllusts": {
"2982154": null,
"3232171": null,
"9683924": null,
"9982638": null,
"10486890": null,
"13450140": null,
"13594508": null,
"15091512": null,
"15584077": null,
"18502761": null,
"19428567": null,
"21337912": null,
"23139081": null,
"26446486": null,
"26602193": null,
"29381152": null,
"30918820": null,
"31543061": null,
"32237888": null,
"32760977": null,
"32797035": null,
"33407004": null,
"34272641": null,
"35659365": {
"illustId": "35659365",
"illustTitle": "Redial",
"id": "35659365",
"title": "Redial",
"illustType": 0,
"xRestrict": 0,
"restrict": 0,
"sl": 2,
"url": "https://i.pximg.net/c/250x250_80_a2/img-master/img/2013/05/13/00/41/01/35659365_p0_square1200.jpg",
"description": "",
"tags": [
"初音ミク",
"Redial",
"無限ループ",
"ミクダヨー",
"ポリン",
"VOCALOID1000users入り",
"VOCALOID"
],
"userId": "502217",
"userName": "Aza",
"width": 1650,
"height": 1300,
"pageCount": 1,
"isBookmarkable": null,
"bookmarkData": null
},
"36344943": {
"illustId": "36344943",
"illustTitle": "バニーちーちゃん",
"id": "36344943",
"title": "バニーちーちゃん",
"illustType": 0,
"xRestrict": 0,
"restrict": 0,
"sl": 2,
"url": "https://i.pximg.net/c/250x250_80_a2/img-master/img/2013/06/14/10/20/58/36344943_p0_square1200.jpg",
"description": "",
"tags": [
"佐々木千穂",
"バニーガール",
"はたらく魔王さま!",
"おっぱい",
"パンスト",
"ロリ爆乳",
"黒バニー",
"ちーちゃん",
"手袋",
"はたらく魔王さま!500users入り"
],
"userId": "502217",
"userName": "Aza",
"width": 1200,
"height": 1350,
"pageCount": 1,
"isBookmarkable": null,
"bookmarkData": null
},
"38288483": {
"illustId": "38288483",
"illustTitle": "ログインゲーム",
"id": "38288483",
"title": "ログインゲーム",
"illustType": 0,
"xRestrict": 0,
"restrict": 0,
"sl": 2,
"url": "https://i.pximg.net/c/250x250_80_a2/img-master/img/2013/09/04/10/37/02/38288483_p0_square1200.jpg",
"description": "",
"tags": [
"ファイナルファンタジー14",
"ララフェル",
"FF100users入り"
],
"userId": "502217",
"userName": "Aza",
"width": 600,
"height": 1128,
"pageCount": 1,
"isBookmarkable": null,
"bookmarkData": null
},
"40513649": {
"illustId": "40513649",
"illustTitle": "クリスマス",
"id": "40513649",
"title": "クリスマス",
"illustType": 0,
"xRestrict": 0,
"restrict": 0,
"sl": 2,
"url": "https://i.pximg.net/c/250x250_80_a2/img-master/img/2013/12/26/00/13/24/40513649_p0_square1200.jpg",
"description": "",
"tags": [
"オリジナル",
"クリスマス",
"ハイヒール",
"オリジナル100users入り",
"女の子"
],
"userId": "502217",
"userName": "Aza",
"width": 900,
"height": 900,
"pageCount": 1,
"isBookmarkable": null,
"bookmarkData": null
},
"40865549": {
"illustId": "40865549",
"illustTitle": "ヲ級",
"id": "40865549",
"title": "ヲ級",
"illustType": 0,
"xRestrict": 0,
"restrict": 0,
"sl": 2,
"url": "https://i.pximg.net/c/250x250_80_a2/img-master/img/2014/01/10/00/48/39/40865549_p0_square1200.jpg",
"description": "",
"tags": [
"艦これ",
"空母ヲ級",
"落書き",
"深海棲艦",
"艦隊これくしょん",
"艦これ100users入り"
],
"userId": "502217",
"userName": "Aza",
"width": 800,
"height": 1056,
"pageCount": 1,
"isBookmarkable": null,
"bookmarkData": null
},
"44463100": {
"illustId": "44463100",
"illustTitle": "ノアちゃん",
"id": "44463100",
"title": "ノアちゃん",
"illustType": 0,
"xRestrict": 0,
"restrict": 0,
"sl": 2,
"url": "https://i.pximg.net/c/250x250_80_a2/img-master/img/2014/07/03/00/06/00/44463100_p0_square1200.jpg",
"description": "",
"tags": [
"パズドラ",
"ノア",
"パズドラ100users入り",
"おでこ"
],
"userId": "502217",
"userName": "Aza",
"width": 1200,
"height": 1200,
"pageCount": 1,
"isBookmarkable": null,
"bookmarkData": null
},
"46713544": {
"illustId": "46713544",
"illustTitle": "冬の日ラブラブ",
"id": "46713544",
"title": "冬の日ラブラブ",
"illustType": 1,
"xRestrict": 1,
"restrict": 0,
"sl": 6,
"url": "https://i.pximg.net/c/250x250_80_a2/img-master/img/2014/10/25/00/06/58/46713544_p0_square1200.jpg",
"description": "ラブラブエッチのらくがき<br /><br />三万フォロワー感謝します~<br /><br />最近忙しいので、自分の時間が少ない・・・",
"tags": [
"R-18",
"落書き",
"おっぱい",
"オリジナル",
"パイズリ",
"中出し",
"だいしゅきホールド",
"愛のあるセックス",
"黒髪ロング",
"オリジナル10000users入り"
],
"userId": "502217",
"userName": "Aza",
"width": 800,
"height": 800,
"pageCount": 20,
"isBookmarkable": true,
"bookmarkData": null
},
"49623591": {
"illustId": "49623591",
"illustTitle": "らくがきまとめ4",
"id": "49623591",
"title": "らくがきまとめ4",
"illustType": 0,
"xRestrict": 0,
"restrict": 0,
"sl": 2,
"url": "https://i.pximg.net/c/250x250_80_a2/img-master/img/2015/04/03/00/15/53/49623591_p0_square1200.jpg",
"description": "",
"tags": [
"落書き",
"極上の尻",
"パズドラ",
"ぴっちりスーツ",
"魔性の潮",
"加賀",
"艦これ100users入り",
"潮(艦隊これくしょん)",
"100users入り",
"バニーガール"
],
"userId": "502217",
"userName": "Aza",
"width": 1000,
"height": 1080,
"pageCount": 38,
"isBookmarkable": null,
"bookmarkData": null
},
"51747015": {
"illustId": "51747015",
"illustTitle": "バニー潮ちゃん",
"id": "51747015",
"title": "バニー潮ちゃん",
"illustType": 0,
"xRestrict": 0,
"restrict": 0,
"sl": 2,
"url": "https://i.pximg.net/c/250x250_80_a2/img-master/img/2015/08/03/21/22/52/51747015_p0_square1200.jpg",
"description": "",
"tags": [
"艦これ",
"バニーガール",
"バニーの日",
"潮っぱい",
"魔性の潮",
"まったく、駆逐艦は最高だぜ!!",
"艦々バニー",
"潮(艦隊これくしょん)",
"艦隊これくしょん",
"艦これ1000users入り"
],
"userId": "502217",
"userName": "Aza",
"width": 1000,
"height": 1421,
"pageCount": 1,
"isBookmarkable": null,
"bookmarkData": null
},
"52206867": {
"illustId": "52206867",
"illustTitle": "水着おっぱいまとめ",
"id": "52206867",
"title": "水着おっぱいまとめ",
"illustType": 1,
"xRestrict": 0,
"restrict": 0,
"sl": 2,
"url": "https://i.pximg.net/c/250x250_80_a2/img-master/img/2015/08/27/00/55/49/52206867_p0_square1200.jpg",
"description": "",
"tags": [
"おっぱい",
"水着",
"落書き",
"巨乳",
"挟まれたい谷間",
"デカァァァァァいッ説明不要!!",
"愛宕/パチュリー/千斗いすず/柏崎星奈/丹生谷森夏/ハトホル",
"千斗いすず"
],
"userId": "502217",
"userName": "Aza",
"width": 500,
"height": 875,
"pageCount": 7,
"isBookmarkable": null,
"bookmarkData": null
},
"52584590": {
"illustId": "52584590",
"illustTitle": "楓ちゃん",
"id": "52584590",
"title": "楓ちゃん",
"illustType": 0,
"xRestrict": 0,
"restrict": 0,
"sl": 2,
"url": "https://i.pximg.net/c/250x250_80_a2/img-master/img/2015/09/18/23/35/41/52584590_p0_square1200.jpg",
"description": "",
"tags": [
"アイドルマスターシンデレラガールズ",
"オッドアイ",
"高垣楓",
"アイマス1000users入り"
],
"userId": "502217",
"userName": "Aza",
"width": 900,
"height": 900,
"pageCount": 1,
"isBookmarkable": null,
"bookmarkData": null
},
"64877227": {
"illustId": "64877227",
"illustTitle": "マシュ",
"id": "64877227",
"title": "マシュ",
"illustType": 0,
"xRestrict": 0,
"restrict": 0,
"sl": 2,
"url": "https://i.pximg.net/c/250x250_80_a2/img-master/img/2017/09/10/00/10/03/64877227_p0_square1200.jpg",
"description": "",
"tags": [
"マシュ",
"Fate/GrandOrder",
"素晴らしすぎる",
"極上の乳",
"マシュ・キリエライト",
"Fate/GO1000users入り",
"濡れ透け",
"マシュマロおっぱい"
],
"userId": "502217",
"userName": "Aza",
"width": 1000,
"height": 1000,
"pageCount": 1,
"isBookmarkable": null,
"bookmarkData": null
},
"66698671": {
"illustId": "66698671",
"illustTitle": "モテそうですよね",
"id": "66698671",
"title": "モテそうですよね",
"illustType": 0,
"xRestrict": 0,
"restrict": 0,
"sl": 2,
"url": "https://i.pximg.net/c/250x250_80_a2/img-master/img/2018/01/08/00/47/32/66698671_p0_square1200.jpg",
"description": "",
"tags": [
"輝夜月",
"バーチャルYouTuber",
"魅惑の谷間",
"バーチャルYouTuber1000users入り"
],
"userId": "502217",
"userName": "Aza",
"width": 1200,
"height": 1200,
"pageCount": 1,
"isBookmarkable": null,
"bookmarkData": null
},
"69620476": null
},
"likeData": false,
"width": 800,
"height": 800,
"pageCount": 20,
"bookmarkCount": 16448,
"likeCount": 13048,
"commentCount": 70,
"responseCount": 0,
"viewCount": 483175,
"isHowto": false,
"isOriginal": true,
"imageResponseOutData": [],
"imageResponseData": [],
"imageResponseCount": 0,
"pollData": null,
"seriesNavData": null,
"descriptionBoothId": null,
"descriptionYoutubeId": null,
"comicPromotion": null,
"contestBanners": [],
"factoryGoods": {
"integratable": false,
"integrated": false
},
"isBookmarkable": true,
"bookmarkData": null,
"contestData": null,
"zoneConfig": {
"responsive": {
"url": "https://pixon.ads-pixiv.net/show?zone_id=illust_responsive&format=js&s=0&up=0&ng=g&l=ja&uri=%2Fajax%2Fillust%2F_PARAM_&is_spa=1&ab_test_digits_first=5&ab_test_digits_second=5&Yuid=MjgDVlY&suid=Pg4dukaxjl9lcz20o&num=5d1245e1507"
},
"300x250": {
"url": "https://pixon.ads-pixiv.net/show?zone_id=illust_rectangle&format=js&s=0&up=0&ng=g&l=ja&uri=%2Fajax%2Fillust%2F_PARAM_&is_spa=1&ab_test_digits_first=5&ab_test_digits_second=5&Yuid=MjgDVlY&suid=Pg4dukaxjo8fldij4&num=5d1245e15"
},
"500x500": {
"url": "https://pixon.ads-pixiv.net/show?zone_id=bigbanner&format=js&s=0&up=0&ng=g&l=ja&uri=%2Fajax%2Fillust%2F_PARAM_&is_spa=1&ab_test_digits_first=5&ab_test_digits_second=5&Yuid=MjgDVlY&suid=Pg4dukaxjqltfp2la&num=5d1245e182"
},
"header": {
"url": "https://pixon.ads-pixiv.net/show?zone_id=header&format=js&s=0&up=0&ng=g&l=ja&uri=%2Fajax%2Fillust%2F_PARAM_&is_spa=1&ab_test_digits_first=5&ab_test_digits_second=5&Yuid=MjgDVlY&suid=Pg4dukaxjsv9fca5h&num=5d1245e1969"
},
"footer": {
"url": "https://pixon.ads-pixiv.net/show?zone_id=footer&format=js&s=0&up=0&ng=g&l=ja&uri=%2Fajax%2Fillust%2F_PARAM_&is_spa=1&ab_test_digits_first=5&ab_test_digits_second=5&Yuid=MjgDVlY&suid=Pg4dukaxjv5vqfo0g&num=5d1245e1914"
},
"expandedFooter": {
"url": "https://pixon.ads-pixiv.net/show?zone_id=multiple_illust_viewer&format=js&s=0&up=0&ng=g&l=ja&uri=%2Fajax%2Fillust%2F_PARAM_&is_spa=1&ab_test_digits_first=5&ab_test_digits_second=5&Yuid=MjgDVlY&suid=Pg4dukaxjxd4y5zlv&num=5d1245e1125"
},
"logo": {
"url": "https://pixon.ads-pixiv.net/show?zone_id=logo_side&format=js&s=0&up=0&ng=g&l=ja&uri=%2Fajax%2Fillust%2F_PARAM_&is_spa=1&ab_test_digits_first=5&ab_test_digits_second=5&Yuid=MjgDVlY&suid=Pg4dukaxjzmhr6fid&num=5d1245e1989"
}
},
"extraData": {
"meta": {
"title": "[R-18] 【落書き】「冬の日ラブラブ」/「Aza」のマンガ [pixiv]",
"description": "この作品 「冬の日ラブラブ」 は 「R-18」「落書き」 等のタグがつけられた「Aza」さんの漫画です。 「ラブラブエッチのらくがき三万フォロワー感謝します~最近忙しいので、自分の時間が少ない・・・」",
"keywords": "R-18,落書き,おっぱい,オリジナル,パイズリ,中出し,だいしゅきホールド,愛のあるセックス,黒髪ロング,オリジナル10000users入り,イラスト,pixiv,ピクシブ",
"canonical": "https://www.pixiv.net/member_illust.php?mode=medium&illust_id=46713544"
}
},
"noLoginData": {
"breadcrumbs": [
"日常",
"R-18"
],
"zengoIdWorks": {
"prev": {
"id": "46713543",
"title": "ゆい様"
},
"next": {
"id": "46713545",
"title": "木吉"
}
}
}
}
}