diff --git a/bridges/TraktBridge.php b/bridges/TraktBridge.php new file mode 100644 index 00000000..7aa90dfd --- /dev/null +++ b/bridges/TraktBridge.php @@ -0,0 +1,70 @@ + [ + 'name' => 'username', + 'required' => true + ], + 'hide_shows' => [ + 'name' => 'Hide shows', + 'type' => 'checkbox', + 'title' => 'Hide shows', + ], + + ], + ]; + + public function detectParameters($url) + { + if (preg_match('/trakt\.tv\/users\/(.*?)\//', $url, $matches) > 0) { + return [ + 'username' => $matches[1] + ]; + } + return null; + } + + public function collectData() + { + $username = $this->getInput('username'); + $dom = getSimpleHTMLDOMCached(self::URI . '/users/' . $username . '/history'); + $this->feedName = $dom->find('#avatar-wrapper h1 a', 0)->plaintext; + $this->iconURL = $dom->find('img.avatar', 0)->{'src'}; + + foreach ($dom->find('#history-items .posters', 0)->find('div.grid-item') as $div) { + if ($this->getInput('hide_shows') && $div->{'data-type'} != 'movie') { + continue; + } + $item = []; + $item['author'] = $this->feedName; + $item['title'] = $div->find('img.real', 0)->{'title'}; + $item['timestamp'] = $div->find('.format-date', 0)->plaintext; + $item['content'] = ''; + $item['uri'] = self::URI . $div->{'data-url'}; + $this->items[] = $item; + } + } + public function getName() + { + if (empty($this->feedName)) { + return parent::getName(); + } else { + return $this->feedName; + } + } + public function getIcon() + { + if (empty($this->iconURL)) { + return parent::getIcon(); + } else { + return $this->iconURL; + } + } +}