diff --git a/Source/Anivisual.php b/Source/Anivisual.php index a2a0734..daec304 100644 --- a/Source/Anivisual.php +++ b/Source/Anivisual.php @@ -61,9 +61,11 @@ class Anivisual extends Source { $this->output .= $game->print(); }); } + public function checkPage($url) { - return (strpos($url,'http://anivisual.net/stuff/') !== FALSE); + return (strpos($url,'://anivisual.net/stuff/') !== FALSE); } + public function page($url) { $text = $this->get_text($url); $this->loadStr($text); @@ -71,7 +73,11 @@ class Anivisual extends Source { $game = new Game; $game->url = $url; $gameBlock = $this->dom->filter('#casing-box'); - $date = trim($gameBlock->filter('.icon-calendar')->first()->text()); + $dateBlock = $this->dom->filter('.icon-calendar'); + $date = ''; + if ($dateBlock->count() > 0) { + $date = trim($dateBlock->first()->text()); + } if (!empty($date)) { foreach ($this->months as $ruM => $enM) { $date = str_replace($ruM, $enM, $date); @@ -81,18 +87,20 @@ class Anivisual extends Source { } $title = $this->dom->filter('h1.logo')->first(); if ($title->count() > 0) { - $game->title = htmlspecialchars_decode($title->text()); + $game->title = trim(htmlspecialchars_decode($title->text())); } - $game->description = $gameBlock->filter('#content > section > span')->first()->text(); + $game->description = $this->dom->filter('#content > section > span')->first()->text(); $game->description = str_replace('(adsbygoogle = window.adsbygoogle || []).push({});', '', $game->description); + $game->description = str_replace('Доп. ссылки: Доступно только для пользователей', '', $game->description); $game->description = trim($game->description); + $sidebar = $gameBlock->filter('#sidebar')->first()->html(); - preg_match ('/Автор:<\/b>\s+(.*)(<\/a>)?
/', $sidebar, $matches); - if (count($matches) > 0) { - $game->author = strip_tags($matches[1]); - preg_match('/(.*)Теги:/', $game->author, $matches); - $game->author = $matches[1]; - } + $pos_start = mb_strpos($sidebar, 'Автор:'); + $sidebar_search = trim(mb_substr($sidebar, $pos_start)); + $pos_end = mb_strpos($sidebar_search, '
'); + $sidebar_search = trim(mb_substr($sidebar_search, 0, $pos_end)); + $sidebar_search = str_replace('Автор:', '', $sidebar_search); + $game->author = trim(strip_tags($sidebar_search)); $matches = []; preg_match ('/Перевод:<\/b>\s+(.*)<\/a>
/', $sidebar, $matches); if (count($matches) > 0) { diff --git a/tests/AnivisualTest.php b/tests/AnivisualTest.php new file mode 100644 index 0000000..3417828 --- /dev/null +++ b/tests/AnivisualTest.php @@ -0,0 +1,54 @@ + + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +require_once 'BaseTest.php'; +require_once 'Source/Anivisual.php'; + +class ItchTest extends BaseTest +{ + protected function setUp() { + $this->parser = new Source\Anivisual(); + } + public function testPageCheck() + { + $this->assertTrue($this->parser->checkPage('https://anivisual.net/stuff/3-1-0-1889')); + $this->assertFalse($this->parser->checkPage('https://anivisual.net/')); + $this->assertFalse($this->parser->checkPage('http://anivisual.net')); + $this->assertFalse($this->parser->checkPage('http://itch.io')); + } + public function testPageParsing() + { + $url = 'https://anivisual.net/stuff/3-1-0-1889'; + $game_page = NULL; + try { + $game_page = $this->parser->get_text($url); + } catch (\Exception $e) { + $game_page = file_get_contents('./tests/fixtures/anivisual_test_1.html'); + } + if (is_null($game_page)) { + $game_page = file_get_contents('./tests/fixtures/anivisual_test_1.html'); + } + $this->parser->loadStr($game_page, []); + $game = $this->parser->page($url); + $this->assertSame($game->url, $url); + $this->assertSame($game->title, 'Contract Demon'); + $this->assertSame($game->author, 'NomnomNami, пер. Sol Taere'); + $this->assertSame($game->description, 'Ангел, вместо своих ангельских дел, вызывает... демона. Да и демонесса какая-то странная, пытается выглядеть зловеще, но что-то совсем не получается. По крайней мере Ангел её не боится ни капли, а вроде даже наоборот... _______ От переводчика. Как я люблю эту короткометражную няшноту от NomnomNami, просто ужос. Хотел было и дальше переводить её поделки, но узнал, что уже всё переведено. А жаль. Работать с такими штуками - одно удовольствие. Лёгкий и приятный текст, и всего один-два дня работы. Прохождение этой ВН от Тернокса и Химари — р-р-раз, д-д-два'); + } +} diff --git a/tests/fixtures/anivisual_test_1.html b/tests/fixtures/anivisual_test_1.html new file mode 100644 index 0000000..2e10256 --- /dev/null +++ b/tests/fixtures/anivisual_test_1.html @@ -0,0 +1,1767 @@ + + + + + + + +Скачать Contract Demon для Windows — Anivisual.net — Визуальные новеллы + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Contract Demon

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ или зарегистрируйтесь, +
+чтобы добавить новеллу в список избранного. +
+ + + + +
+ + + +
+
+ +
+
+ +
+
+ +
+ + +
+ +
+ + +
+ + +
+ + + + + + + + + + + + + + + + +Ангел, вместо своих ангельских дел, вызывает... демона. Да и демонесса какая-то странная, пытается выглядеть зловеще, но что-то совсем не получается. По крайней мере Ангел её не боится ни капли, а вроде даже наоборот...

_______
От переводчика.
Как я люблю эту короткометражную няшноту от NomnomNami, просто ужос.
Хотел было и дальше переводить её поделки, но узнал, что уже всё переведено. А жаль.
Работать с такими штуками - одно удовольствие. Лёгкий и приятный текст, и всего один-два дня работы.


Прохождение этой ВН от Тернокса и Химари — р-р-раз, д-д-два

Доп. ссылки:
Доступно только для пользователей + + +
+
+ + +
+ +
+ + + + + + +
+ + +
+ + + + +
+
+
    +
+ 16 Апреля 2019 + 4375 + ice_cat + + + + + + + + +82 % + + + + + + + + + + + + + + + + + + + + + + + + + + +Отредактировано: + + + + + + + +
+ +
+ + + +
+ + +
+ + +
+ + + + + + + + + + + + +
+ + + +
+ + + + + + + + + +
+ + +
Комментарии (17):
+ +Убедительная просьба: в комментариях без спойлеров! Для обсуждения сюжетных моментов идите на форум. + + +
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
+ + + +

+
+
+ +
+ + + + + +
+
+
1
1 +gardares(16 Апреля 2019 23:07) + + +
8420
+
+
Из "её поделок" остались только игры от Sofdelux Studio, а именно Mermaid Splash и Disaster Log C.

p.s. перевод от Project Gardares на эту игру тоже будет. Нет перехватчикам, не сдавать свои переводы! Дедлайн будет разрушен! =D
+ +

+
+
1
2 +ice_cat(17 Апреля 2019 03:34) + + +
47981
+
+
Да лаааадно вам, ну разочек-то можно сдать, ну чего вы, никто не заметит joke
+ +

+
+
1
3 +gardares(17 Апреля 2019 03:36) + + +
8420
+
+
Я замечу, это хуже всего.
+ +

+
+
0
4 +ice_cat(17 Апреля 2019 07:28) + + +
47981
+
+
На самом деле не вижу ничего зазорного в том, чтобы свернуть работу, если её кто-то уже сделал.
Разве что вышедший раньше перевод окажется кровоглазым ужасом, и нужно дать людям огонь что-то более терпимое. Как было с Коносорой к примеру недавно.
+ +

+
+
0
11 +Хемуль(18 Апреля 2019 19:18) + + +
87473
+
+
Нет, ещё вот это не переведено
https://vndb.org/v19881
+ +

+
+
0
12 +gardares(18 Апреля 2019 19:21) + + +
8420
+
+
Это недоделанная новелла Nami, которую она не собирается доделывать.
+ +

+
+
0
13 +Хемуль(18 Апреля 2019 19:28) + + +
87473
+
+
Ну, можно ведь и демку перевести.
+ +

+
+
1
5 +Bulvit(17 Апреля 2019 11:34) + + +
97616
+
+
Мне понравилась новелла и перевод хорош. Только в одном месте, вроде, есть опечатка "У тебя тоже есть семя, Элени?". Наверное, там про семью речь, но позабавило)
+ +

+
+
0
6 +ice_cat(17 Апреля 2019 12:49) + + +
47981
+
+
А чорт ее знает, мож у неё и семя есть...
В любом случае, спасибо за внимательность, поправлено!
+ +

+
+
-1
7 +kalibry(17 Апреля 2019 14:27) + + +
59707
+
+
Так и знала что её в скором времени переведут :)
Потому и не бралась переводить
+ +

+
+
0
8 +KamMila(18 Апреля 2019 11:24) + + +
96665
+
+
Отличная, очень милая новелла. Читала с удовольствием. Спасибо)) happy
+ +

+
+
0
9 +princessfiona(18 Апреля 2019 17:36) + + +
99296
+
+
smile_57 Эту новеллу можно описать одним словом : МИЛО ^_^ Милая музыка, милая рисовка, милые персы.
Спасибо автору ты молодец )
+ +

+
+
0
10 +ice_cat(18 Апреля 2019 18:28) + + +
47981
+
+
Гляньте другие внки от этого же автора на акке у товарища GARDARES, что первым комментом стоит - найдете еще больше милоты joke
+ +

+
+
0
14 +AlekseyMT(19 Апреля 2019 16:51) + + +
58163
+
+
Комикс "Первый Контракт" - предыстория к этой новеллки. Можной найти на русском.
+ +

+
+
0
15 +gardares(19 Апреля 2019 22:45) + + +
8420
+
+
Предыстория доступна в виде комикса:
Первый контракт
И побочные истории доступны в серии Lonely Wolf Treat, начиная с: Дружелюбный Кролик Моти
+ +

+
+
0
16 +Annia(20 Апреля 2019 09:14) + + +
101213
+
+
Милейшая графика, которая так и манит скачать и посмотреть, а что внутри funny
+ +

+
+
0
17 +ice_cat(20 Апреля 2019 09:22) + + +
47981
+
+
Качайте, не пожалеете joke
+ +

+
+
+ + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +