Browse Source

[GelbooruBridge] Fix bridge not getting tags correctly

Tags are embedded in the 'title' attribute instead of 'alt' as
defined by the ancestor (DanbooruBridge).

The 'title' attribute also contains statistics data ('score:...',
'rating:...') that is now filtered by a custom implementation of
the 'getTags' function (elements that contain a colon are removed)

Closes #560
logmanoriginal 6 years ago
parent
commit
fc0ae42450
1 changed files with 13 additions and 0 deletions
  1. 13 0
      bridges/GelbooruBridge.php

+ 13 - 0
bridges/GelbooruBridge.php

@@ -10,6 +10,7 @@ class GelbooruBridge extends DanbooruBridge {
 
 	const PATHTODATA = '.thumb';
 	const IDATTRIBUTE = 'id';
+	const TAGATTRIBUTE = 'title';
 
 	const PIDBYPAGE = 63;
 
@@ -19,4 +20,16 @@ class GelbooruBridge extends DanbooruBridge {
 		. ($this->getInput('p') ? ($this->getInput('p') - 1) * static::PIDBYPAGE : '')
 		. '&tags=' . urlencode($this->getInput('t'));
 	}
+
+	protected function getTags($element){
+		$tags = parent::getTags($element);
+		$tags = explode(' ', $tags);
+
+		// Remove statistics from the tags list (identified by colon)
+		foreach($tags as $key => $tag) {
+			if(strpos($tag, ':') !== false) unset($tags[$key]);
+		}
+
+		return implode(' ', $tags);
+	}
 }