Compare commits
41 Commits
legacy/cyp
...
feature/fi
Author | SHA1 | Date | |
---|---|---|---|
![]() |
dea1eeabd6 | ||
![]() |
0284827fcf | ||
![]() |
d7ffcfcf7b | ||
![]() |
23f9d1a220 | ||
![]() |
a47f4537b1 | ||
![]() |
a13ac75fba | ||
![]() |
a4fbed9060 | ||
![]() |
cf5e269fd8 | ||
![]() |
4747f822ab | ||
![]() |
fa171bc3d3 | ||
![]() |
b828a233bc | ||
![]() |
bbfd6a9895 | ||
![]() |
e1dd2b1c8f | ||
![]() |
ec4e0f3dda | ||
![]() |
0aed1d9ebe | ||
![]() |
d8cdf218b7 | ||
![]() |
7c9eefe478 | ||
![]() |
810a1dbc59 | ||
![]() |
a521a26aa5 | ||
![]() |
e80acf79b7 | ||
![]() |
1b5fbfabc4 | ||
![]() |
0ad0b268bc | ||
![]() |
da19806a3d | ||
![]() |
4390af53f9 | ||
![]() |
dd12582dba | ||
![]() |
6e81f091d1 | ||
![]() |
c60d41427d | ||
![]() |
b8482e0e3c | ||
![]() |
a1cb313d4f | ||
![]() |
53f7a17b8e | ||
![]() |
41039a6650 | ||
![]() |
6d4f6e47a3 | ||
![]() |
47eec65101 | ||
![]() |
c2da5eef9d | ||
![]() |
94cabdc827 | ||
![]() |
1e11bd3290 | ||
![]() |
f729fa7908 | ||
![]() |
5172f1cb70 | ||
![]() |
663888dcb1 | ||
![]() |
8c5a7f4d09 | ||
![]() |
709f10f098 |
@@ -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
21
.editorconfig
Normal 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
|
@@ -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. アセットをビルドします。
|
||||
|
82
app/Console/Commands/UpdateFixture.php
Normal file
82
app/Console/Commands/UpdateFixture.php
Normal 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!');
|
||||
}
|
||||
}
|
@@ -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]);
|
||||
|
@@ -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'));
|
||||
}
|
||||
}
|
||||
|
@@ -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'];
|
||||
|
||||
|
@@ -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) {
|
||||
|
@@ -11,6 +11,9 @@ class Tag extends Model
|
||||
protected $fillable = [
|
||||
'name'
|
||||
];
|
||||
protected $visible = [
|
||||
'name'
|
||||
];
|
||||
|
||||
public function ejaculations()
|
||||
{
|
||||
|
@@ -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';
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -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']]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -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;
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
119
resources/assets/js/components/MetadataPreview.vue
Normal file
119
resources/assets/js/components/MetadataPreview.vue
Normal 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>
|
@@ -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) {
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -49,6 +49,6 @@ trait CreateMockedResolver
|
||||
|
||||
protected function shouldUseMock(): bool
|
||||
{
|
||||
return (bool)env('TEST_USE_HTTP_MOCK', true);
|
||||
return (bool) env('TEST_USE_HTTP_MOCK', true);
|
||||
}
|
||||
}
|
||||
|
@@ -20,7 +20,7 @@ class DLsiteResolverTest extends TestCase
|
||||
|
||||
public function testHome()
|
||||
{
|
||||
$responseText = file_get_contents(__DIR__.'/../../fixture/DLsite/testHome.html');
|
||||
$responseText = file_get_contents(__DIR__ . '/../../fixture/DLsite/testHome.html');
|
||||
|
||||
$this->createResolver(DLsiteResolver::class, $responseText);
|
||||
|
||||
@@ -28,7 +28,7 @@ class DLsiteResolverTest extends TestCase
|
||||
$this->assertEquals('ひつじ、数えてあげるっ', $metadata->title);
|
||||
$this->assertEquals('サークル名: Butterfly Dream' . PHP_EOL . '眠れないあなたに彼女が羊を数えてくれる音声です。', $metadata->description);
|
||||
$this->assertEquals('https://img.dlsite.jp/modpub/images2/work/doujin/RJ222000/RJ221761_img_main.jpg', $metadata->image);
|
||||
$this->assertEquals(['癒し','バイノーラル/ダミヘ','日常/生活','ほのぼの','恋人同士'], $metadata->tags);
|
||||
$this->assertEquals(['癒し', 'バイノーラル/ダミヘ', '日常/生活', 'ほのぼの', '恋人同士'], $metadata->tags);
|
||||
if ($this->shouldUseMock()) {
|
||||
$this->assertSame('https://www.dlsite.com/home/work/=/product_id/RJ221761.html', (string) $this->handler->getLastRequest()->getUri());
|
||||
}
|
||||
@@ -36,7 +36,7 @@ class DLsiteResolverTest extends TestCase
|
||||
|
||||
public function testSoft()
|
||||
{
|
||||
$responseText = file_get_contents(__DIR__.'/../../fixture/DLsite/testSoft.html');
|
||||
$responseText = file_get_contents(__DIR__ . '/../../fixture/DLsite/testSoft.html');
|
||||
|
||||
$this->createResolver(DLsiteResolver::class, $responseText);
|
||||
|
||||
@@ -44,7 +44,7 @@ class DLsiteResolverTest extends TestCase
|
||||
$this->assertEquals('ことのはアムリラート', $metadata->title);
|
||||
$this->assertEquals('メーカー名: SukeraSparo' . PHP_EOL . '異世界へと迷い込んだ凜に救いの手を差し伸べるルカ――。これは、ふたりが手探りの意思疎通(ことのは)で織りなす、もどかしくも純粋な……女の子同士の物語。', $metadata->description);
|
||||
$this->assertEquals('https://img.dlsite.jp/modpub/images2/work/professional/VJ012000/VJ011276_img_main.jpg', $metadata->image);
|
||||
$this->assertEquals(['少女','日常/生活','純愛','百合'], $metadata->tags);
|
||||
$this->assertEquals(['少女', '日常/生活', '純愛', '百合'], $metadata->tags);
|
||||
if ($this->shouldUseMock()) {
|
||||
$this->assertSame('https://www.dlsite.com/soft/work/=/product_id/VJ011276.html', (string) $this->handler->getLastRequest()->getUri());
|
||||
}
|
||||
@@ -52,7 +52,7 @@ class DLsiteResolverTest extends TestCase
|
||||
|
||||
public function testComic()
|
||||
{
|
||||
$responseText = file_get_contents(__DIR__.'/../../fixture/DLsite/testComic.html');
|
||||
$responseText = file_get_contents(__DIR__ . '/../../fixture/DLsite/testComic.html');
|
||||
|
||||
$this->createResolver(DLsiteResolver::class, $responseText);
|
||||
|
||||
@@ -60,7 +60,7 @@ class DLsiteResolverTest extends TestCase
|
||||
$this->assertEquals('快楽ヒストリエ', $metadata->title);
|
||||
$this->assertEquals('著者: 火鳥' . PHP_EOL . '天地創造と原初の人類を描いた「創世編」をはじめ、英雄たちの偉業を大真面目に考証した正真正銘の学術コミック全15編。', $metadata->description);
|
||||
$this->assertEquals('https://img.dlsite.jp/modpub/images2/work/books/BJ139000/BJ138581_img_main.jpg', $metadata->image);
|
||||
$this->assertEquals(['おっぱい','ロリ','ショタ','妹','男性/おやじ','女王様/お姫様','王子様/王子系','戦士','セーラー服','着物/和服','青年コミック','ギャグ','コメディ','歴史/時代物','褐色/日焼け','爺'], $metadata->tags);
|
||||
$this->assertEquals(['おっぱい', 'ロリ', 'ショタ', '妹', '男性/おやじ', '女王様/お姫様', '王子様/王子系', '戦士', 'セーラー服', '着物/和服', '青年コミック', 'ギャグ', 'コメディ', '歴史/時代物', '褐色/日焼け', '爺'], $metadata->tags);
|
||||
if ($this->shouldUseMock()) {
|
||||
$this->assertSame('https://www.dlsite.com/comic/work/=/product_id/BJ138581.html', (string) $this->handler->getLastRequest()->getUri());
|
||||
}
|
||||
@@ -68,7 +68,7 @@ class DLsiteResolverTest extends TestCase
|
||||
|
||||
public function testManiax()
|
||||
{
|
||||
$responseText = file_get_contents(__DIR__.'/../../fixture/DLsite/testManiax.html');
|
||||
$responseText = file_get_contents(__DIR__ . '/../../fixture/DLsite/testManiax.html');
|
||||
|
||||
$this->createResolver(DLsiteResolver::class, $responseText);
|
||||
|
||||
@@ -76,7 +76,7 @@ class DLsiteResolverTest extends TestCase
|
||||
$this->assertEquals('催眠術で新婚人妻マナカさんとエッチしよう', $metadata->title);
|
||||
$this->assertEquals('サークル名: デルタブレード' . PHP_EOL . '催眠術で新婚人妻マナカさんの愛する夫にすり替わって子作りラブラブエッチをするCG集です。', $metadata->description);
|
||||
$this->assertEquals('https://img.dlsite.jp/modpub/images2/work/doujin/RJ206000/RJ205445_img_main.jpg', $metadata->image);
|
||||
$this->assertEquals(['断面図','人妻','中出し','妊娠/孕ませ','催眠','口内射精'], $metadata->tags);
|
||||
$this->assertEquals(['断面図', '人妻', '中出し', '妊娠/孕ませ', '催眠', '口内射精'], $metadata->tags);
|
||||
if ($this->shouldUseMock()) {
|
||||
$this->assertSame('https://www.dlsite.com/maniax/work/=/product_id/RJ205445.html', (string) $this->handler->getLastRequest()->getUri());
|
||||
}
|
||||
@@ -84,7 +84,7 @@ class DLsiteResolverTest extends TestCase
|
||||
|
||||
public function testPro()
|
||||
{
|
||||
$responseText = file_get_contents(__DIR__.'/../../fixture/DLsite/testPro.html');
|
||||
$responseText = file_get_contents(__DIR__ . '/../../fixture/DLsite/testPro.html');
|
||||
|
||||
$this->createResolver(DLsiteResolver::class, $responseText);
|
||||
|
||||
@@ -92,7 +92,7 @@ class DLsiteResolverTest extends TestCase
|
||||
$this->assertEquals('euphoria (HDリマスター) Best Price版', $metadata->title);
|
||||
$this->assertEquals('ブランド名: CLOCK UP' . PHP_EOL . 'インモラルハードコアADV「euphoria」が高解像度(1024×768)版、「euphoria HDリマスター」となって登場!', $metadata->description);
|
||||
$this->assertEquals('https://img.dlsite.jp/modpub/images2/work/professional/VJ009000/VJ008455_img_main.jpg', $metadata->image);
|
||||
$this->assertEquals(['アブノーマル','幼なじみ','女教師','退廃/背徳/インモラル','拘束','強制/無理矢理','スカトロ','アヘ顔','拷問','血液/流血','狂気'], $metadata->tags);
|
||||
$this->assertEquals(['アブノーマル', '幼なじみ', '女教師', '退廃/背徳/インモラル', '拘束', '強制/無理矢理', 'スカトロ', 'アヘ顔', '拷問', '血液/流血', '狂気'], $metadata->tags);
|
||||
if ($this->shouldUseMock()) {
|
||||
$this->assertSame('https://www.dlsite.com/pro/work/=/product_id/VJ008455.html', (string) $this->handler->getLastRequest()->getUri());
|
||||
}
|
||||
@@ -100,7 +100,7 @@ class DLsiteResolverTest extends TestCase
|
||||
|
||||
public function testBooks()
|
||||
{
|
||||
$responseText = file_get_contents(__DIR__.'/../../fixture/DLsite/testBooks.html');
|
||||
$responseText = file_get_contents(__DIR__ . '/../../fixture/DLsite/testBooks.html');
|
||||
|
||||
$this->createResolver(DLsiteResolver::class, $responseText);
|
||||
|
||||
@@ -108,7 +108,7 @@ class DLsiteResolverTest extends TestCase
|
||||
$this->assertEquals('永遠娘 vol.6', $metadata->title);
|
||||
$this->assertEquals('著者: あまがえる / 玉之けだま / びんせん / 甘露アメ / 源五郎 / すみやお / 宇宙烏賊 / 毒茸人 / あやね / ガロウド / ハードボイルドよし子 / 夜歌 / 黒青郎君' . PHP_EOL . '君の命はどんな味なのだろうな?', $metadata->description);
|
||||
$this->assertEquals('https://img.dlsite.jp/modpub/images2/work/books/BJ192000/BJ191317_img_main.jpg', $metadata->image);
|
||||
$this->assertEquals(['ツンデレ','ロリ','妖怪','人外娘/モンスター娘','セーラー服','メイド','ストッキング','ファンタジー','ぶっかけ','中出し','近親相姦','アヘ顔','口内射精'], $metadata->tags);
|
||||
$this->assertEquals(['ツンデレ', 'ロリ', '妖怪', '人外娘/モンスター娘', 'セーラー服', 'メイド', 'ストッキング', 'ファンタジー', 'ぶっかけ', '中出し', '近親相姦', 'アヘ顔', '口内射精'], $metadata->tags);
|
||||
if ($this->shouldUseMock()) {
|
||||
$this->assertSame('https://www.dlsite.com/books/work/=/product_id/BJ191317.html', (string) $this->handler->getLastRequest()->getUri());
|
||||
}
|
||||
@@ -116,7 +116,7 @@ class DLsiteResolverTest extends TestCase
|
||||
|
||||
public function testGirls()
|
||||
{
|
||||
$responseText = file_get_contents(__DIR__.'/../../fixture/DLsite/testGirls.html');
|
||||
$responseText = file_get_contents(__DIR__ . '/../../fixture/DLsite/testGirls.html');
|
||||
|
||||
$this->createResolver(DLsiteResolver::class, $responseText);
|
||||
|
||||
@@ -124,7 +124,7 @@ class DLsiteResolverTest extends TestCase
|
||||
$this->assertEquals('体イク教師', $metadata->title);
|
||||
$this->assertEquals('サークル名: Dusk' . PHP_EOL . '思い込みの激しい体育教師に執着されるお話', $metadata->description);
|
||||
$this->assertEquals('https://img.dlsite.jp/modpub/images2/work/doujin/RJ218000/RJ217995_img_main.jpg', $metadata->image);
|
||||
$this->assertEquals(['教師','中出し','陵辱','変態','強制/無理矢理','レイプ'], $metadata->tags);
|
||||
$this->assertEquals(['教師', '中出し', '陵辱', '変態', '強制/無理矢理', 'レイプ'], $metadata->tags);
|
||||
if ($this->shouldUseMock()) {
|
||||
$this->assertSame('https://www.dlsite.com/girls/work/=/product_id/RJ217995.html', (string) $this->handler->getLastRequest()->getUri());
|
||||
}
|
||||
@@ -132,7 +132,7 @@ class DLsiteResolverTest extends TestCase
|
||||
|
||||
public function testGirlsPro()
|
||||
{
|
||||
$responseText = file_get_contents(__DIR__.'/../../fixture/DLsite/testGirlsPro.html');
|
||||
$responseText = file_get_contents(__DIR__ . '/../../fixture/DLsite/testGirlsPro.html');
|
||||
|
||||
$this->createResolver(DLsiteResolver::class, $responseText);
|
||||
|
||||
@@ -140,7 +140,7 @@ class DLsiteResolverTest extends TestCase
|
||||
$this->assertEquals('×××レクチャー', $metadata->title);
|
||||
$this->assertEquals('著者: 江口尋' . PHP_EOL . '昔、告白してくれた地味な同級生・瀬尾は超人気セクシー男優になっていて!?', $metadata->description);
|
||||
$this->assertEquals('https://img.dlsite.jp/modpub/images2/work/books/BJ171000/BJ170641_img_main.jpg', $metadata->image);
|
||||
$this->assertEquals(['メガネ','芸能人/アイドル/モデル','俺様','ラブコメ','ラブラブ/あまあま','ティーンズラブ','調教','褐色/日焼け'], $metadata->tags);
|
||||
$this->assertEquals(['メガネ', '芸能人/アイドル/モデル', '俺様', 'ラブコメ', 'ラブラブ/あまあま', 'ティーンズラブ', '調教', '褐色/日焼け'], $metadata->tags);
|
||||
if ($this->shouldUseMock()) {
|
||||
$this->assertSame('https://www.dlsite.com/girls-pro/work/=/product_id/BJ170641.html', (string) $this->handler->getLastRequest()->getUri());
|
||||
}
|
||||
@@ -148,7 +148,7 @@ class DLsiteResolverTest extends TestCase
|
||||
|
||||
public function testBL()
|
||||
{
|
||||
$responseText = file_get_contents(__DIR__.'/../../fixture/DLsite/testBL.html');
|
||||
$responseText = file_get_contents(__DIR__ . '/../../fixture/DLsite/testBL.html');
|
||||
|
||||
$this->createResolver(DLsiteResolver::class, $responseText);
|
||||
|
||||
@@ -156,7 +156,7 @@ class DLsiteResolverTest extends TestCase
|
||||
$this->assertEquals('秘密に堕つ', $metadata->title);
|
||||
$this->assertEquals('サークル名: ナゲットぶん投げ屋さん' . PHP_EOL . 'とある村に越してきた新婚夫婦。村の集会所で行われた歓迎会で犯される花婿。村の男達に犯され続けた花婿にある変化が…?', $metadata->description);
|
||||
$this->assertEquals('https://img.dlsite.jp/modpub/images2/work/doujin/RJ245000/RJ244977_img_main.jpg', $metadata->image);
|
||||
$this->assertEquals(['既婚者','中出し','強制/無理矢理','レイプ','モブ姦'], $metadata->tags);
|
||||
$this->assertEquals(['既婚者', '中出し', '強制/無理矢理', 'レイプ', 'モブ姦'], $metadata->tags);
|
||||
if ($this->shouldUseMock()) {
|
||||
$this->assertSame('https://www.dlsite.com/bl/work/=/product_id/RJ244977.html', (string) $this->handler->getLastRequest()->getUri());
|
||||
}
|
||||
@@ -164,7 +164,7 @@ class DLsiteResolverTest extends TestCase
|
||||
|
||||
public function testEng()
|
||||
{
|
||||
$responseText = file_get_contents(__DIR__.'/../../fixture/DLsite/testEng.html');
|
||||
$responseText = file_get_contents(__DIR__ . '/../../fixture/DLsite/testEng.html');
|
||||
|
||||
$this->createResolver(DLsiteResolver::class, $responseText);
|
||||
|
||||
@@ -172,7 +172,7 @@ class DLsiteResolverTest extends TestCase
|
||||
$this->assertEquals('With Your First Girlfriend, at a Ghostly Night [Ear Cleaning] [Sleep Sharing]', $metadata->title);
|
||||
$this->assertEquals('Circle: Triangle!' . PHP_EOL . 'You go with a girl of your first love and enjoy going to haunted places and her massage, ear cleaning, sleep sharing etc. (CV: Yui Asami)', $metadata->description);
|
||||
$this->assertEquals('https://img.dlsite.jp/modpub/images2/work/doujin/RJ229000/RJ228866_img_main.jpg', $metadata->image);
|
||||
$this->assertEquals(['Healing','Binaural','ASMR','Childhood Friend','Ear Cleaning','Romance'], $metadata->tags);
|
||||
$this->assertEquals(['Healing', 'Binaural', 'ASMR', 'Childhood Friend', 'Ear Cleaning', 'Romance'], $metadata->tags);
|
||||
if ($this->shouldUseMock()) {
|
||||
$this->assertSame('https://www.dlsite.com/eng/work/=/product_id/RE228866.html', (string) $this->handler->getLastRequest()->getUri());
|
||||
}
|
||||
@@ -180,7 +180,7 @@ class DLsiteResolverTest extends TestCase
|
||||
|
||||
public function testEcchiEng()
|
||||
{
|
||||
$responseText = file_get_contents(__DIR__.'/../../fixture/DLsite/testEcchiEng.html');
|
||||
$responseText = file_get_contents(__DIR__ . '/../../fixture/DLsite/testEcchiEng.html');
|
||||
|
||||
$this->createResolver(DLsiteResolver::class, $responseText);
|
||||
|
||||
@@ -188,7 +188,7 @@ class DLsiteResolverTest extends TestCase
|
||||
$this->assertEquals('NEKOPARA vol.1', $metadata->title);
|
||||
$this->assertEquals('Circle: NEKO WORKs' . PHP_EOL . 'Chocolat and Vanilla star in a rich adult eroge series with E-mote system and animated H scenes', $metadata->description);
|
||||
$this->assertEquals('https://img.dlsite.jp/modpub/images2/work/doujin/RJ145000/RJ144678_img_main.jpg', $metadata->image);
|
||||
$this->assertEquals(['Moe','Master and Servant','Funny Love Story','Nekomimi (Cat Ears)'], $metadata->tags);
|
||||
$this->assertEquals(['Moe', 'Master and Servant', 'Funny Love Story', 'Nekomimi (Cat Ears)'], $metadata->tags);
|
||||
if ($this->shouldUseMock()) {
|
||||
$this->assertSame('https://www.dlsite.com/ecchi-eng/work/=/product_id/RE144678.html', (string) $this->handler->getLastRequest()->getUri());
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -205,7 +204,7 @@ class DLsiteResolverTest extends TestCase
|
||||
$this->assertEquals('ひつじ、数えてあげるっ', $metadata->title);
|
||||
$this->assertEquals('サークル名: Butterfly Dream' . PHP_EOL . '眠れないあなたに彼女が羊を数えてくれる音声です。', $metadata->description);
|
||||
$this->assertEquals('https://img.dlsite.jp/modpub/images2/work/doujin/RJ222000/RJ221761_img_main.jpg', $metadata->image);
|
||||
$this->assertEquals(['癒し','バイノーラル/ダミヘ','日常/生活','ほのぼの','恋人同士'], $metadata->tags);
|
||||
$this->assertEquals(['癒し', 'バイノーラル/ダミヘ', '日常/生活', 'ほのぼの', '恋人同士'], $metadata->tags);
|
||||
if ($this->shouldUseMock()) {
|
||||
$this->assertSame('https://www.dlsite.com/home/work/=/product_id/RJ221761.html', (string) $this->handler->getLastRequest()->getUri());
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -221,7 +220,7 @@ class DLsiteResolverTest extends TestCase
|
||||
$this->assertEquals('ひつじ、数えてあげるっ', $metadata->title);
|
||||
$this->assertEquals('サークル名: Butterfly Dream' . PHP_EOL . '眠れないあなたに彼女が羊を数えてくれる音声です。', $metadata->description);
|
||||
$this->assertEquals('https://img.dlsite.jp/modpub/images2/work/doujin/RJ222000/RJ221761_img_main.jpg', $metadata->image);
|
||||
$this->assertEquals(['癒し','バイノーラル/ダミヘ','日常/生活','ほのぼの','恋人同士'], $metadata->tags);
|
||||
$this->assertEquals(['癒し', 'バイノーラル/ダミヘ', '日常/生活', 'ほのぼの', '恋人同士'], $metadata->tags);
|
||||
if ($this->shouldUseMock()) {
|
||||
$this->assertSame('https://dlsite.jp/howtw/RJ221761.html', (string) $this->handler->getLastRequest()->getUri());
|
||||
}
|
||||
|
@@ -20,7 +20,7 @@ class FC2ContentsResolverTest extends TestCase
|
||||
|
||||
public function testAdult()
|
||||
{
|
||||
$responseText = file_get_contents(__DIR__.'/../../fixture/FC2Contents/adult.html');
|
||||
$responseText = file_get_contents(__DIR__ . '/../../fixture/FC2Contents/adult.html');
|
||||
|
||||
$this->createResolver(FC2ContentsResolver::class, $responseText);
|
||||
|
||||
@@ -35,7 +35,7 @@ class FC2ContentsResolverTest extends TestCase
|
||||
|
||||
public function testGeneral()
|
||||
{
|
||||
$responseText = file_get_contents(__DIR__.'/../../fixture/FC2Contents/general.html');
|
||||
$responseText = file_get_contents(__DIR__ . '/../../fixture/FC2Contents/general.html');
|
||||
|
||||
$this->createResolver(FC2ContentsResolver::class, $responseText);
|
||||
|
||||
|
52
tests/Unit/MetadataResolver/KomifloResolverTest.php
Normal file
52
tests/Unit/MetadataResolver/KomifloResolverTest.php
Normal 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());
|
||||
}
|
||||
}
|
||||
}
|
@@ -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);
|
||||
|
||||
@@ -30,13 +30,13 @@ class NijieResolverTest extends TestCase
|
||||
$this->assertRegExp('/pic\d+\.nijie\.info/', $metadata->image);
|
||||
$this->assertNotRegExp('~/diff/main/~', $metadata->image);
|
||||
if ($this->shouldUseMock()) {
|
||||
$this->assertSame('https://nijie.info/view.php?id=66384', (string)$this->handler->getLastRequest()->getUri());
|
||||
$this->assertSame('https://nijie.info/view.php?id=66384', (string) $this->handler->getLastRequest()->getUri());
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
@@ -46,13 +46,13 @@ class NijieResolverTest extends TestCase
|
||||
$this->assertRegExp('/pic\d+\.nijie\.info/', $metadata->image);
|
||||
$this->assertNotRegExp('~/diff/main/~', $metadata->image);
|
||||
if ($this->shouldUseMock()) {
|
||||
$this->assertSame('https://nijie.info/view.php?id=202707', (string)$this->handler->getLastRequest()->getUri());
|
||||
$this->assertSame('https://nijie.info/view.php?id=202707', (string) $this->handler->getLastRequest()->getUri());
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
@@ -61,13 +61,13 @@ class NijieResolverTest extends TestCase
|
||||
$this->assertEquals('アニメgifとか専門外なのでよくわかりませんでした', $metadata->description);
|
||||
$this->assertRegExp('~/nijie\.info/pic/logo~', $metadata->image);
|
||||
if ($this->shouldUseMock()) {
|
||||
$this->assertSame('https://nijie.info/view.php?id=9537', (string)$this->handler->getLastRequest()->getUri());
|
||||
$this->assertSame('https://nijie.info/view.php?id=9537', (string) $this->handler->getLastRequest()->getUri());
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
@@ -76,13 +76,13 @@ class NijieResolverTest extends TestCase
|
||||
$this->assertEquals("H264動画てすと あとで消します\r\n\r\n今の所、H264コーデックのみ、出力時に音声なしにしないと投稿できません\r\n動画は勝手にループします", $metadata->description);
|
||||
$this->assertRegExp('~/nijie\.info/pic/logo~', $metadata->image);
|
||||
if ($this->shouldUseMock()) {
|
||||
$this->assertSame('https://nijie.info/view.php?id=256283', (string)$this->handler->getLastRequest()->getUri());
|
||||
$this->assertSame('https://nijie.info/view.php?id=256283', (string) $this->handler->getLastRequest()->getUri());
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
@@ -92,13 +92,13 @@ class NijieResolverTest extends TestCase
|
||||
$this->assertRegExp('/pic\d+\.nijie\.info/', $metadata->image);
|
||||
$this->assertNotRegExp('~/diff/main/~', $metadata->image);
|
||||
if ($this->shouldUseMock()) {
|
||||
$this->assertSame('https://nijie.info/view.php?id=66384', (string)$this->handler->getLastRequest()->getUri());
|
||||
$this->assertSame('https://nijie.info/view.php?id=66384', (string) $this->handler->getLastRequest()->getUri());
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
@@ -108,13 +108,13 @@ class NijieResolverTest extends TestCase
|
||||
$this->assertRegExp('/pic\d+\.nijie\.info/', $metadata->image);
|
||||
$this->assertNotRegExp('~/diff/main/~', $metadata->image);
|
||||
if ($this->shouldUseMock()) {
|
||||
$this->assertSame('https://nijie.info/view.php?id=202707', (string)$this->handler->getLastRequest()->getUri());
|
||||
$this->assertSame('https://nijie.info/view.php?id=202707', (string) $this->handler->getLastRequest()->getUri());
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
@@ -124,13 +124,13 @@ class NijieResolverTest extends TestCase
|
||||
$this->assertEquals('アニメgifとか専門外なのでよくわかりませんでした', $metadata->description);
|
||||
$this->assertRegExp('~/nijie\.info/pic/logo~', $metadata->image);
|
||||
if ($this->shouldUseMock()) {
|
||||
$this->assertSame('https://nijie.info/view.php?id=9537', (string)$this->handler->getLastRequest()->getUri());
|
||||
$this->assertSame('https://nijie.info/view.php?id=9537', (string) $this->handler->getLastRequest()->getUri());
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
@@ -139,7 +139,7 @@ class NijieResolverTest extends TestCase
|
||||
$this->assertEquals("H264動画てすと あとで消します\r\n\r\n今の所、H264コーデックのみ、出力時に音声なしにしないと投稿できません\r\n動画は勝手にループします", $metadata->description);
|
||||
$this->assertRegExp('~/nijie\.info/pic/logo~', $metadata->image);
|
||||
if ($this->shouldUseMock()) {
|
||||
$this->assertSame('https://nijie.info/view.php?id=256283', (string)$this->handler->getLastRequest()->getUri());
|
||||
$this->assertSame('https://nijie.info/view.php?id=256283', (string) $this->handler->getLastRequest()->getUri());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
68
tests/Unit/MetadataResolver/PixivResolverTest.php
Normal file
68
tests/Unit/MetadataResolver/PixivResolverTest.php
Normal 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());
|
||||
}
|
||||
}
|
||||
}
|
@@ -20,7 +20,7 @@ class PlurkResolverTest extends TestCase
|
||||
|
||||
public function test()
|
||||
{
|
||||
$responseText = file_get_contents(__DIR__.'/../../fixture/Plurk/test.html');
|
||||
$responseText = file_get_contents(__DIR__ . '/../../fixture/Plurk/test.html');
|
||||
|
||||
$this->createResolver(PlurkResolver::class, $responseText);
|
||||
|
||||
|
@@ -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
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
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
437
tests/fixture/Komiflo/comic.json
vendored
Normal 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
|
||||
}
|
298
tests/fixture/Komiflo/comicWithNoParents.json
vendored
Normal file
298
tests/fixture/Komiflo/comicWithNoParents.json
vendored
Normal 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
|
||||
}
|
11
tests/fixture/Nijie/testAnimationGifSp.html
vendored
Normal file
11
tests/fixture/Nijie/testAnimationGifSp.html
vendored
Normal 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
30
tests/fixture/Nijie/testMp4MovieSp.html
vendored
Normal file
File diff suppressed because one or more lines are too long
12
tests/fixture/Nijie/testMultiplePictureSp.html
vendored
Normal file
12
tests/fixture/Nijie/testMultiplePictureSp.html
vendored
Normal 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>
|
16
tests/fixture/Nijie/testStandardPictureSp.html
vendored
Normal file
16
tests/fixture/Nijie/testStandardPictureSp.html
vendored
Normal 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
824
tests/fixture/Pixiv/testIllust.json
vendored
Normal 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": "【腐】翔太受けまとめ"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
329
tests/fixture/Pixiv/testIllustMultiPages.json
vendored
Normal file
329
tests/fixture/Pixiv/testIllustMultiPages.json
vendored
Normal 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
604
tests/fixture/Pixiv/testManga.json
vendored
Normal 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": "木吉"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user