'));
+ $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 . '
';
+
+ $img->src = $this->build_url($urlparts);
+
+ echo $img->src . '
';
+
+ 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]);
+
+ }
+
}