зеркало из https://github.com/nextcloud/news.git
Merge pull request #371 from owncloud/comic-enhancers
Add article enhancer for various comic sites
This commit is contained in:
Коммит
6d5e8373a9
|
@ -63,6 +63,11 @@ use \OCA\News\Utility\SimplePieFileFactory;
|
|||
use \OCA\News\Utility\ArticleEnhancer\Enhancer;
|
||||
use \OCA\News\Utility\ArticleEnhancer\CyanideAndHappinessEnhancer;
|
||||
use \OCA\News\Utility\ArticleEnhancer\ThemeRepublicEnhancer;
|
||||
use OCA\News\Utility\ArticleEnhancer\CADEnhancer;
|
||||
use OCA\News\Utility\ArticleEnhancer\PennyArcadeEnhancer;
|
||||
use OCA\News\Utility\ArticleEnhancer\TwoGAGEnhancer;
|
||||
use OCA\News\Utility\ArticleEnhancer\LeastICouldDoEnhancer;
|
||||
use OCA\News\Utility\ArticleEnhancer\EscapistComicEnhancer;
|
||||
|
||||
use \OCA\News\Middleware\CORSMiddleware;
|
||||
|
||||
|
@ -261,6 +266,18 @@ class DIContainer extends BaseContainer {
|
|||
// the most generic enhancer should be the last one
|
||||
$enhancer->registerEnhancer('explosm.net', $c['CyanideAndHappinessEnhancer']);
|
||||
$enhancer->registerEnhancer('themerepublic.net', $c['ThemeRepublicEnhancer']);
|
||||
$enhancer->registerEnhancer('cad-comic.com', $c['CADEnhancer']);
|
||||
$enhancer->registerEnhancer('penny-arcade.com', $c['PennyArcadeEnhancer']);
|
||||
$enhancer->registerEnhancer('twogag.com', $c['TwoGAGEnhancer']);
|
||||
$enhancer->registerEnhancer('leasticoulddo.com', $c['LeastICouldDoEnhancer']);
|
||||
$enhancer->registerEnhancer('escapistmagazine.com/articles/view/comics/critical-miss', $c['EscapistComicEnhancer']);
|
||||
$enhancer->registerEnhancer('escapistmagazine.com/articles/view/comics/critical-miss', $c['EscapistComicEnhancer']);
|
||||
$enhancer->registerEnhancer('escapistmagazine.com/articles/view/comics/namegame', $c['EscapistComicEnhancer']);
|
||||
$enhancer->registerEnhancer('escapistmagazine.com/articles/view/comics/stolen-pixels', $c['EscapistComicEnhancer']);
|
||||
$enhancer->registerEnhancer('escapistmagazine.com/articles/view/comics/bumhugparade', $c['EscapistComicEnhancer']);
|
||||
$enhancer->registerEnhancer('escapistmagazine.com/articles/view/comics/escapistradiotheater', $c['EscapistComicEnhancer']);
|
||||
$enhancer->registerEnhancer('escapistmagazine.com/articles/view/comics/paused', $c['EscapistComicEnhancer']);
|
||||
$enhancer->registerEnhancer('escapistmagazine.com/articles/view/comics/fraughtwithperil', $c['EscapistComicEnhancer']);
|
||||
|
||||
return $enhancer;
|
||||
});
|
||||
|
@ -285,6 +302,46 @@ class DIContainer extends BaseContainer {
|
|||
);
|
||||
});
|
||||
|
||||
$this['CADEnhancer'] = $this->share(function($c){
|
||||
return new CADEnhancer(
|
||||
$c['SimplePieFileFactory'],
|
||||
$c['HTMLPurifier'],
|
||||
$c['feedFetcherTimeout']
|
||||
);
|
||||
});
|
||||
|
||||
$this['PennyArcadeEnhancer'] = $this->share(function($c){
|
||||
return new PennyArcadeEnhancer(
|
||||
$c['SimplePieFileFactory'],
|
||||
$c['HTMLPurifier'],
|
||||
$c['feedFetcherTimeout']
|
||||
);
|
||||
});
|
||||
|
||||
$this['TwoGAGEnhancer'] = $this->share(function($c){
|
||||
return new TwoGAGEnhancer(
|
||||
$c['SimplePieFileFactory'],
|
||||
$c['HTMLPurifier'],
|
||||
$c['feedFetcherTimeout']
|
||||
);
|
||||
});
|
||||
|
||||
$this['LeastICouldDoEnhancer'] = $this->share(function($c){
|
||||
return new LeastICouldDoEnhancer(
|
||||
$c['SimplePieFileFactory'],
|
||||
$c['HTMLPurifier'],
|
||||
$c['feedFetcherTimeout']
|
||||
);
|
||||
});
|
||||
|
||||
$this['EscapistComicEnhancer'] = $this->share(function($c){
|
||||
return new EscapistComicEnhancer(
|
||||
$c['SimplePieFileFactory'],
|
||||
$c['HTMLPurifier'],
|
||||
$c['feedFetcherTimeout']
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
$this['Fetcher'] = $this->share(function($c){
|
||||
$fetcher = new Fetcher();
|
||||
|
|
|
@ -0,0 +1,47 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* ownCloud - News
|
||||
*
|
||||
* @author Alessandro Cosentino
|
||||
* @author Bernhard Posselt
|
||||
* @copyright 2012 Alessandro Cosentino cosenal@gmail.com
|
||||
* @copyright 2012 Bernhard Posselt dev@bernhard-posselt.com
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 3 of the License, or any later version.
|
||||
*
|
||||
* This library 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 AFFERO GENERAL PUBLIC LICENSE for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public
|
||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OCA\News\Utility\ArticleEnhancer;
|
||||
|
||||
use \OCA\News\Utility\SimplePieFileFactory;
|
||||
|
||||
|
||||
class CADEnhancer extends ArticleEnhancer {
|
||||
|
||||
|
||||
public function __construct(SimplePieFileFactory $fileFactory, $purifier,
|
||||
$timeout){
|
||||
parent::__construct(
|
||||
$purifier,
|
||||
$fileFactory,
|
||||
array(
|
||||
'/cad-comic.com\/cad\/\d+\/$/' => '//*[@id=\'content\']/img'
|
||||
),
|
||||
$timeout
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* ownCloud - News
|
||||
*
|
||||
* @author Alessandro Cosentino
|
||||
* @author Bernhard Posselt
|
||||
* @copyright 2012 Alessandro Cosentino cosenal@gmail.com
|
||||
* @copyright 2012 Bernhard Posselt dev@bernhard-posselt.com
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 3 of the License, or any later version.
|
||||
*
|
||||
* This library 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 AFFERO GENERAL PUBLIC LICENSE for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public
|
||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OCA\News\Utility\ArticleEnhancer;
|
||||
|
||||
use \OCA\News\Utility\SimplePieFileFactory;
|
||||
|
||||
|
||||
class EscapistComicEnhancer extends ArticleEnhancer {
|
||||
|
||||
|
||||
public function __construct(SimplePieFileFactory $fileFactory, $purifier,
|
||||
$timeout) {
|
||||
parent::__construct(
|
||||
$purifier,
|
||||
$fileFactory,
|
||||
array(
|
||||
'/escapistmagazine.com\/articles\/view\/comics\/critical-miss/' => '//*[@class=\'body\']/span/img',
|
||||
'/escapistmagazine.com\/articles\/view\/comics\/namegame/' => '//*[@class=\'body\']/span/p/img[@height != "120"]',
|
||||
'/escapistmagazine.com\/articles\/view\/comics\/(stolen-pixels|bumhugparade|escapistradiotheater)/' => '//*[@class=\'body\']/span/p[2]/img',
|
||||
'/escapistmagazine.com\/articles\/view\/comics\/paused/' => '//*[@class=\'body\']/span/p[2]/img | //*[@class=\'body\']/span/div/img',
|
||||
'/escapistmagazine.com\/articles\/view\/comics\/fraughtwithperil/' => '//*[@class=\'body\']',
|
||||
),
|
||||
$timeout
|
||||
);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* ownCloud - News
|
||||
*
|
||||
* @author Alessandro Cosentino
|
||||
* @author Bernhard Posselt
|
||||
* @copyright 2012 Alessandro Cosentino cosenal@gmail.com
|
||||
* @copyright 2012 Bernhard Posselt dev@bernhard-posselt.com
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 3 of the License, or any later version.
|
||||
*
|
||||
* This library 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 AFFERO GENERAL PUBLIC LICENSE for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public
|
||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OCA\News\Utility\ArticleEnhancer;
|
||||
|
||||
use \OCA\News\Utility\SimplePieFileFactory;
|
||||
|
||||
|
||||
class LeastICouldDoEnhancer extends ArticleEnhancer {
|
||||
|
||||
|
||||
public function __construct(SimplePieFileFactory $fileFactory, $purifier,
|
||||
$timeout) {
|
||||
parent::__construct(
|
||||
$purifier,
|
||||
$fileFactory,
|
||||
array(
|
||||
'/feedproxy.google.com\/\~r\/LICD/' => '//*[@id=\'comic-img\']/a/img | //*[@id=\'comic-img\']/img'
|
||||
),
|
||||
$timeout
|
||||
);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* ownCloud - News
|
||||
*
|
||||
* @author Alessandro Cosentino
|
||||
* @author Bernhard Posselt
|
||||
* @copyright 2012 Alessandro Cosentino cosenal@gmail.com
|
||||
* @copyright 2012 Bernhard Posselt dev@bernhard-posselt.com
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 3 of the License, or any later version.
|
||||
*
|
||||
* This library 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 AFFERO GENERAL PUBLIC LICENSE for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public
|
||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OCA\News\Utility\ArticleEnhancer;
|
||||
|
||||
use \OCA\News\Utility\SimplePieFileFactory;
|
||||
|
||||
|
||||
class PennyArcadeEnhancer extends ArticleEnhancer {
|
||||
|
||||
|
||||
public function __construct(SimplePieFileFactory $fileFactory, $purifier,
|
||||
$timeout){
|
||||
parent::__construct(
|
||||
$purifier,
|
||||
$fileFactory,
|
||||
array(
|
||||
'/feeds.penny-arcade.com\/\~r\/pa-mainsite/' => '//*[starts-with(@class, "post")]'
|
||||
),
|
||||
$timeout
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* ownCloud - News
|
||||
*
|
||||
* @author Alessandro Cosentino
|
||||
* @author Bernhard Posselt
|
||||
* @copyright 2012 Alessandro Cosentino cosenal@gmail.com
|
||||
* @copyright 2012 Bernhard Posselt dev@bernhard-posselt.com
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 3 of the License, or any later version.
|
||||
*
|
||||
* This library 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 AFFERO GENERAL PUBLIC LICENSE for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public
|
||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OCA\News\Utility\ArticleEnhancer;
|
||||
|
||||
use \OCA\News\Utility\SimplePieFileFactory;
|
||||
|
||||
|
||||
class TwoGAGEnhancer extends ArticleEnhancer {
|
||||
|
||||
|
||||
public function __construct(SimplePieFileFactory $fileFactory, $purifier,
|
||||
$timeout) {
|
||||
parent::__construct(
|
||||
$purifier,
|
||||
$fileFactory,
|
||||
array(),
|
||||
$timeout
|
||||
);
|
||||
}
|
||||
|
||||
public function enhance($item) {
|
||||
if (preg_match('/www.twogag.com\/archives/', $item->getUrl()) || preg_match('/feedproxy.google.com\/\~r\/TwoGuysAndGuy/', $item->getUrl())) {
|
||||
$body = $item->getBody();
|
||||
$body = preg_replace('/http\:\/\/www.twogag.com\/comics-rss\/([^.]+)\.jpg/', 'http://www.twogag.com/comics/$1.jpg', $body);
|
||||
$item->setBody($body);
|
||||
}
|
||||
return $item;
|
||||
}
|
||||
}
|
Загрузка…
Ссылка в новой задаче