diff --git a/bridges/MangareaderBridge.php b/bridges/MangareaderBridge.php
index 55ba59c..551649e 100644
--- a/bridges/MangareaderBridge.php
+++ b/bridges/MangareaderBridge.php
@@ -1,5 +1,5 @@
maintainer = "logmanoriginal";
$this->name = "Mangareader Bridge";
$this->uri = "http://www.mangareader.net";
- $this->description = "Returns the latest Manga updates";
- $this->update = "2016-01-10";
-
- $this->parameters["Get latest updates"] = '[]';
+ $this->description = "Returns the latest updates. Set limits to -1 to disable the limit.";
+ $this->update = "2016-01-16";
+ $this->parameters["Get site updates"] = '[]';
+ $this->parameters["Get manga updates"] = '
+ [
+ {
+ "name" : "Manga path",
+ "identifier" : "path",
+ "type" : "text",
+ "required" : "true",
+ "pattern" : "[a-zA-Z0-9-_]*",
+ "exampleValue" : "bleach, umi-no-kishidan"
+ },
+ {
+ "name" : "Limit",
+ "identifier" : "limit",
+ "type" : "number",
+ "exampleValue" : "10"
+ }
+ ]';
}
public function collectData(array $param){
- /* We'll use the DOM parser for this as it makes navigation easier */
- $html = file_get_contents("http://www.mangareader.net/latest");
- $doc = new DomDocument;
+ $this->request = '';
+
+ $path = "latest";
+ $limit = MANGAREADER_LIMIT;
+
+ if(isset($param['path'])){
+ $path = $param['path'];
+ }
+
+ if(isset($param['limit']) && $param['limit'] !== ""){
+ $limit = $param['limit'];
+ }
+
+ // We'll use the DOM parser for this as it makes navigation easier
+ $html = file_get_contents("http://www.mangareader.net/" . $path);
+ if(!$html){
+ $this->returnError('Could not receive data for ' . $path . '!', 400);
+ }
+ $doc = new DomDocument;
@$doc->loadHTML($html);
- /* The latest updates are on the frontpage, navigate via XPath */
+ // Navigate via XPath
$xpath = new DomXPath($doc);
- /* Query each item (consists of Manga + chapters) */
- $nodes = $xpath->query("//*[@id='latestchapters']/table//td");
+ // Build feed based on the context (site updates or manga updates)
+ if($path === "latest"){
+
+ $this->request = 'Latest';
+
+ // Query each item (consists of Manga + chapters)
+ $nodes = $xpath->query("//*[@id='latestchapters']/table//td");
- foreach ($nodes as $node){
- /* Query the manga */
- $manga = $xpath->query("a[@class='chapter']", $node)->item(0);
-
- /* Collect the chapters for each Manga */
- $chapters = $xpath->query("a[@class='chaptersrec']", $node);
+ foreach ($nodes as $node){
+ // Query the manga
+ $manga = $xpath->query("a[@class='chapter']", $node)->item(0);
+
+ // Collect the chapters for each Manga
+ $chapters = $xpath->query("a[@class='chaptersrec']", $node);
- if (isset($manga) && $chapters->length >= 1){
- $item = new \Item();
- $item->uri = 'http://www.mangareader.net' . htmlspecialchars($manga->getAttribute('href'));
- $item->title = htmlspecialchars($manga->nodeValue);
-
- /* Add each chapter to the feed */
- $item->content = "";
-
- foreach ($chapters as $chapter){
- if($item->content <> ""){
- $item->content .= "
";
- }
- $item->content .= "" . htmlspecialchars($chapter->nodeValue) . "";
- }
-
- $this->items[] = $item;
- }
- }
-
- /* Return some dummy-data if no content available */
+ if (isset($manga) && $chapters->length >= 1){
+ $item = new \Item();
+ $item->uri = 'http://www.mangareader.net' . htmlspecialchars($manga->getAttribute('href'));
+ $item->title = htmlspecialchars($manga->nodeValue);
+
+ // Add each chapter to the feed
+ $item->content = "";
+
+ foreach ($chapters as $chapter){
+ if($item->content <> ""){
+ $item->content .= "
";
+ }
+ $item->content .= "" . htmlspecialchars($chapter->nodeValue) . "";
+ }
+
+ $this->items[] = $item;
+ }
+ }
+ } else {
+
+ $this->request = $xpath->query(".//*[@id='mangaproperties']//*[@class='aname']")->item(0)->nodeValue;
+
+ $query = "(.//*[@id='listing']//tr)[position() > 1]";
+
+ if($limit !== -1){
+ $query = "(.//*[@id='listing']//tr)[position() > 1][position() <= " . $limit . "]";
+ }
+
+ $chapters = $xpath->query($query);
+
+ foreach ($chapters as $chapter){
+ $item = new \Item();
+ $item->title = $xpath->query("td[1]/a", $chapter)->item(0)->nodeValue; // first column contains anchor with the name
+ $item->uri = 'http://www.mangareader.net' . $xpath->query("td[1]/a", $chapter)->item(0)->getAttribute('href'); // anchor includes path (with leading '/')
+ $item->description = substr($xpath->query("td[1]", $chapter)->item(0)->nodeValue, strlen($item->title) + 4); // first column provides " : ", we only want the description
+ $item->date = $xpath->query("td[2]", $chapter)->item(0)->nodeValue; // second column provides the release date
+ $item->content = $item->description . "
" . $item->date;
+ $this->items[] = $item;
+ }
+ }
+
+ // Return some dummy-data if no content available
if(count($this->items) == 0){
$item = new \Item();
$item->content = "No updates available
";
@@ -63,7 +122,7 @@ class MangareaderBridge extends BridgeAbstract{
}
public function getName(){
- return 'Mangareader Bridge';
+ return (!empty($this->request) ? $this->request . ' - ' : '') . 'Mangareader Bridge';
}
public function getURI(){
@@ -74,4 +133,4 @@ class MangareaderBridge extends BridgeAbstract{
return 10800; // 3 hours
}
}
-?>
+?>
\ No newline at end of file