|
@@ -4,7 +4,7 @@ class GooglePlusPostBridge extends BridgeAbstract{
|
|
|
protected $_title;
|
|
|
protected $_url;
|
|
|
|
|
|
- const MAINTAINER = 'Grummfy';
|
|
|
+ const MAINTAINER = 'Grummfy, logmanoriginal';
|
|
|
const NAME = 'Google Plus Post Bridge';
|
|
|
const URI = 'https://plus.google.com/';
|
|
|
const CACHE_TIMEOUT = 600; //10min
|
|
@@ -97,6 +97,20 @@ class GooglePlusPostBridge extends BridgeAbstract{
|
|
|
$item['content'] .= '<div style="margin-top: -1.5em">' . $content . '</div>';
|
|
|
$item['content'] = trim(strip_tags($item['content'], '<a><p><div><img>'));
|
|
|
|
|
|
+ $media = $post->find('[jsname="MTOxpb"]', 0);
|
|
|
+
|
|
|
+ if($media) {
|
|
|
+
|
|
|
+ $item['enclosures'] = array();
|
|
|
+
|
|
|
+ foreach($media->find('img') as $img) {
|
|
|
+
|
|
|
+ $item['enclosures'][] = $this->fixImage($img)->src;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
$this->items[] = $item;
|
|
|
}
|
|
|
}
|
|
@@ -108,4 +122,87 @@ class GooglePlusPostBridge extends BridgeAbstract{
|
|
|
public function getURI(){
|
|
|
return $this->_url ?: parent::getURI();
|
|
|
}
|
|
|
+
|
|
|
+ private function fixImage($img) {
|
|
|
+
|
|
|
+ // There are certain images like .gif which link to a static picture and
|
|
|
+ // get replaced dynamically via JS in the browser. If we want the "real"
|
|
|
+ // image we need to account for that.
|
|
|
+
|
|
|
+ $urlparts = parse_url($img->src);
|
|
|
+
|
|
|
+ if(array_key_exists('host', $urlparts)) {
|
|
|
+
|
|
|
+ // For some reason some URIs don't contain the scheme, assume https
|
|
|
+ if(!array_key_exists('scheme', $urlparts)) {
|
|
|
+ $urlparts['scheme'] = 'https';
|
|
|
+ }
|
|
|
+
|
|
|
+ $pathelements = explode('/', $urlparts['path']);
|
|
|
+
|
|
|
+ switch($urlparts['host']) {
|
|
|
+
|
|
|
+ case 'lh3.googleusercontent.com':
|
|
|
+
|
|
|
+ if(pathinfo(end($pathelements), PATHINFO_EXTENSION)) {
|
|
|
+
|
|
|
+ // The second to last element of the path specifies the
|
|
|
+ // image format. The URL is still valid if we remove it.
|
|
|
+ unset($pathelements[count($pathelements) - 2]);
|
|
|
+
|
|
|
+ } elseif(strrpos(end($pathelements), '=') !== false) {
|
|
|
+
|
|
|
+ // Some images go throug a proxy. For those images they
|
|
|
+ // add size information after an equal sign.
|
|
|
+ // Example: '=w530-h298-n'. Again this can safely be
|
|
|
+ // removed to get the original image.
|
|
|
+ $pathelements[count($pathelements) - 1] = substr(
|
|
|
+ end($pathelements),
|
|
|
+ 0,
|
|
|
+ strrpos(end($pathelements), '=')
|
|
|
+ );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ break;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ $urlparts['path'] = implode('/', $pathelements);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ echo $img->src . '<br>';
|
|
|
+
|
|
|
+ $img->src = $this->build_url($urlparts);
|
|
|
+
|
|
|
+ echo $img->src . '<br><br>';
|
|
|
+
|
|
|
+ return $img;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * From: https://gist.github.com/Ellrion/f51ba0d40ae1d62eeae44fd1adf7b704
|
|
|
+ * slightly adjusted to work with PHP < 7.0
|
|
|
+ * @param array $parts
|
|
|
+ * @return string
|
|
|
+ */
|
|
|
+ private function build_url(array $parts)
|
|
|
+ {
|
|
|
+
|
|
|
+ $scheme = isset($parts['scheme']) ? ($parts['scheme'] . '://') : '';
|
|
|
+ $host = isset($parts['host']) ? $parts['host'] : '';
|
|
|
+ $port = isset($parts['port']) ? (':' . $parts['port']) : '';
|
|
|
+ $user = isset($parts['user']) ? $parts['user'] : '';
|
|
|
+ $pass = isset($parts['pass']) ? (':' . $parts['pass']) : '';
|
|
|
+ $pass = ($user || $pass) ? ($pass . '@') : '';
|
|
|
+ $path = isset($parts['path']) ? $parts['path'] : '';
|
|
|
+ $query = isset($parts['query']) ? ('?' . $parts['query']) : '';
|
|
|
+ $fragment = isset($parts['fragment']) ? ('#' . $parts['fragment']) : '';
|
|
|
+
|
|
|
+ return implode('', [$scheme, $user, $pass, $host, $port, $path, $query, $fragment]);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|