diff options
author | Bernhard Posselt <Raydiation@users.noreply.github.com> | 2013-09-25 15:09:45 -0700 |
---|---|---|
committer | Bernhard Posselt <Raydiation@users.noreply.github.com> | 2013-09-25 15:09:45 -0700 |
commit | 6d5e8373a9dd79c16a028d4799a6325b885f143f (patch) | |
tree | c08a9674bc3c370e1a3e8219db8cbeddb872abaa | |
parent | 5ea27804abb01645a64d7e5a63bb87d7b2e4e27b (diff) | |
parent | 9498b293c01856a67419b1d3c7d7425658a10a85 (diff) |
Merge pull request #371 from owncloud/comic-enhancers
Add article enhancer for various comic sites
-rw-r--r-- | dependencyinjection/dicontainer.php | 57 | ||||
-rw-r--r-- | utility/articleenhancer/cadenhancer.php | 47 | ||||
-rw-r--r-- | utility/articleenhancer/escapistcomicenhancer.php | 49 | ||||
-rw-r--r-- | utility/articleenhancer/leasticoulddoenhancer.php | 45 | ||||
-rw-r--r-- | utility/articleenhancer/pennyarcadeenhancer.php | 47 | ||||
-rw-r--r-- | utility/articleenhancer/twogagenhancer.php | 52 |
6 files changed, 297 insertions, 0 deletions
diff --git a/dependencyinjection/dicontainer.php b/dependencyinjection/dicontainer.php index ecdf0b3df..94806b2f7 100644 --- a/dependencyinjection/dicontainer.php +++ b/dependencyinjection/dicontainer.php @@ -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(); diff --git a/utility/articleenhancer/cadenhancer.php b/utility/articleenhancer/cadenhancer.php new file mode 100644 index 000000000..9df7f5eaf --- /dev/null +++ b/utility/articleenhancer/cadenhancer.php @@ -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 + ); + } + + +} diff --git a/utility/articleenhancer/escapistcomicenhancer.php b/utility/articleenhancer/escapistcomicenhancer.php new file mode 100644 index 000000000..a2238ed29 --- /dev/null +++ b/utility/articleenhancer/escapistcomicenhancer.php @@ -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 + ); + } +} diff --git a/utility/articleenhancer/leasticoulddoenhancer.php b/utility/articleenhancer/leasticoulddoenhancer.php new file mode 100644 index 000000000..4ba3f244c --- /dev/null +++ b/utility/articleenhancer/leasticoulddoenhancer.php @@ -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 + ); + } +} diff --git a/utility/articleenhancer/pennyarcadeenhancer.php b/utility/articleenhancer/pennyarcadeenhancer.php new file mode 100644 index 000000000..3d2b1fd95 --- /dev/null +++ b/utility/articleenhancer/pennyarcadeenhancer.php @@ -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 + ); + } + + +} diff --git a/utility/articleenhancer/twogagenhancer.php b/utility/articleenhancer/twogagenhancer.php new file mode 100644 index 000000000..7303e2b34 --- /dev/null +++ b/utility/articleenhancer/twogagenhancer.php @@ -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; + } +} |