From 5c011c8d90a27b672352cb2b2dfba835468e5832 Mon Sep 17 00:00:00 2001 From: Joseph Date: Mon, 15 Mar 2021 16:20:02 +0000 Subject: [PATCH] [TwitScoopBridge] Add bridge (#2018) --- bridges/TwitScoopBridge.php | 149 ++++++++++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 bridges/TwitScoopBridge.php diff --git a/bridges/TwitScoopBridge.php b/bridges/TwitScoopBridge.php new file mode 100644 index 00000000..ad65b27e --- /dev/null +++ b/bridges/TwitScoopBridge.php @@ -0,0 +1,149 @@ + array( + 'name' => 'Country', + 'type' => 'list', + 'values' => array( + 'Worldwide' => 'worldwide', + 'Algeria' => 'algeria', + 'Argentina' => 'argentina', + 'Australia' => 'australia', + 'Austria' => 'austria', + 'Bahrain' => 'bahrain', + 'Belarus' => 'belarus', + 'Belgium' => 'belgium', + 'Brazil' => 'brazil', + 'Canada' => 'canada', + 'Chile' => 'chile', + 'Colombia' => 'colombia', + 'Denmark' => 'denmark', + 'Dominican Republic' => 'dominican-republic', + 'Ecuador' => 'ecuador', + 'Egypt' => 'egypt', + 'France' => 'france', + 'Germany' => 'germany', + 'Ghana' => 'ghana', + 'Greece' => 'greece', + 'Guatemala' => 'guatemala', + 'India' => 'india', + 'Indonesia' => 'indonesia', + 'Ireland' => 'ireland', + 'Israel' => 'israel', + 'Italy' => 'italy', + 'Japan' => 'japan', + 'Jordan' => 'jordan', + 'Kenya' => 'kenya', + 'Korea' => 'korea', + 'Kuwait' => 'kuwait', + 'Latvia' => 'latvia', + 'Lebanon' => 'lebanon', + 'Malaysia' => 'malaysia', + 'Mexico' => 'mexico', + 'Netherlands' => 'netherlands', + 'New Zealand' => 'new-zealand', + 'Nigeria' => 'nigeria', + 'Norway' => 'norway', + 'Oman' => 'oman', + 'Pakistan' => 'pakistan', + 'Panama' => 'panama', + 'Peru' => 'peru', + 'Philippines' => 'philippines', + 'Poland' => 'poland', + 'Portugal' => 'portugal', + 'Puerto Rico' => 'puerto-rico', + 'Qatar' => 'qatar', + 'Russia' => 'russia', + 'Saudi Arabia' => 'saudi-arabia', + 'Singapore' => 'singapore', + 'South Africa' => 'south-africa', + 'Spain' => 'spain', + 'Sweden' => 'sweden', + 'Switzerland' => 'switzerland', + 'Thailand' => 'thailand', + 'Turkey' => 'turkey', + 'Ukraine' => 'ukraine', + 'United Arab Emirates' => 'united-arab-emirates', + 'United Kingdom' => 'united-kingdom', + 'United States' => 'united-states', + 'Venezuela' => 'venezuela', + 'Vietnam' => 'vietnam', + ) + ), + 'limit' => array( + 'name' => 'Topics', + 'type' => 'number', + 'title' => 'Number of trending topics to return. Max 50', + 'defaultValue' => 20, + ) + ) + ); + + const CACHE_TIMEOUT = 900; // 15 mins + + public function collectData() { + $html = getSimpleHTMLDOM($this->getURI()) + or returnServerError('Could not request: ' . $this->getURI()); + + $updated = $html->find('time', 0)->datetime; + $trends = $html->find('div.trends', 0); + + $limit = $this->getInput('limit'); + + if ($limit > 50 || $limit < 1) { + $limit = 50; + } + + foreach($trends->find('ol.items > li') as $index => $li) { + $number = $index + 1; + + $item = array(); + + $name = rtrim($li->find('span.trend.name', 0)->plaintext, ' '); + $tweets = str_replace(' tweets', '', $li->find('span.tweets', 0)->plaintext); + + $item['title'] = '#' . $number . ' - ' . $name . ' - ' . htmlentities($tweets) . ' tweets'; + $item['uri'] = 'https://twitter.com/search?q=' . rawurlencode($name); + $item['content'] = <<Rank
+

{$number}

+Topic
+

{$name}

+Tweets
+

{$tweets}

+EOD; + $item['timestamp'] = $updated; + + $this->items[] = $item; + + if (count($this->items) >= $limit) { + break; + } + } + + } + + public function getURI() { + if (!is_null($this->getInput('country'))) { + return self::URI . '/' . $this->getInput('country'); + } + + return parent::getURI(); + } + + public function getName() { + if (!is_null($this->getInput('country'))) { + $parameters = $this->getParameters(); + $values = array_flip($parameters[0]['country']['values']); + + return $values[$this->getInput('country')] . ' - TwitScoop'; + } + + return parent::getName(); + } +}