From 3b04e318ae2e4e1e9df3315fe0e74ba425ac9b5a Mon Sep 17 00:00:00 2001 From: quickwick <2566133+quickwick@users.noreply.github.com> Date: Sat, 4 Jun 2022 11:10:07 -0700 Subject: [PATCH] [SlusheBridge] New bridge (#2700) --- bridges/SlusheBridge.php | 176 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 176 insertions(+) create mode 100644 bridges/SlusheBridge.php diff --git a/bridges/SlusheBridge.php b/bridges/SlusheBridge.php new file mode 100644 index 00000000000..b05acec5276 --- /dev/null +++ b/bridges/SlusheBridge.php @@ -0,0 +1,176 @@ + array( + 'artist_name' => array( + 'name' => 'Artist name', + 'required' => true, + 'exampleValue' => 'lexx228', + 'title' => 'Enter an artist name' + ) + ), + 'Category' => array( + 'category' => array( + 'name' => 'Category', + 'type' => 'list', + 'defaultValue' => 'Safe for Work', + 'title' => 'Choose a category', + 'values' => array( + '2D' => '29', + '3DX' => '58', + 'Animation' => '60', + 'Anime Fan Art' => '46', + 'BDSM' => '47', + 'Big Butt' => '73', + 'Big Dick' => '52', + 'Bit Tits' => '49', + 'Bisexual' => '69', + 'Comic' => '51', + 'Couple' => '3', + 'Dickgirl/Futanari' => '56', + 'Feet' => '75', + 'Game Fan Art' => '63', + 'Gay' => '36', + 'GIF' => '42', + 'Group Sex/ Orgy' => '62', + 'Lesbian' => '67', + 'Mature' => '72', + 'Misc. Fan Art' => '68', + 'Monster' => '64', + 'Pin-Up' => '28', + 'Safe for Work' => '71', + 'SFM' => '70', + 'Solo' => '66', + 'Threesome' => '38', + 'TV & Film Fan Art' => '34', + 'Western Fan Art' => '33' + ) + ) + ), + 'Search' => array( + 'search_term' => array( + 'name' => 'Search term(s)', + 'required' => true, + 'exampleValue' => 'pole dance', + 'title' => 'Enter one or more search terms, separated by spaces' + ) + ) + ); + + public function getName(){ + switch($this->queriedContext) { + case 'Artist': + return 'Slushe Artist: ' . $this->getInput('artist_name'); + break; + case 'Category': + return 'Slushe Category: ' . $this->getInput('category'); + break; + case 'Search': + return 'Slushe Search: ' . $this->getInput('search_term'); + break; + default: + return self::NAME; + } + } + + public function collectData(){ + switch($this->queriedContext) { + case 'Artist': + $uri = self::URI . '/' . $this->getInput('artist_name'); + break; + case 'Category': + $uri = self::URI . '/search/posts/channels?niche=' . + $this->getInput('category'); + break; + case 'Search': + $uri = self::URI . '/search/posts/' . $this->getInput('search_term') . + '?s=1'; + break; + } + + $headers = array( + 'Authority : slushe.com', + 'Cookie: age-verify=1;', + 'sec-ch-ua: "Chromium";v="100", " Not A;Brand";v="99"', + 'sec-ch-ua-mobile: ?0', + 'sec-ch-ua-platform: "Windows"', + 'sec-fetch-dest: document', + 'sec-fetch-mode: navigate', + 'sec-fetch-site: same-origin', + 'sec-fetch-user: ?1', + 'upgrade-insecure-requests: 1' + ); + // Add user-agent string to headers with implode, due to line length limit + $user_agent_string = [ + 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/', + '537.36(KHTML, like Gecko) Chrome/100.0.4896.147 Safari/537.36' + ]; + $headers[] = implode('', $user_agent_string); + + $html = getSimpleHTMLDOM($uri, $headers); + + //Debug::log($html); + //Debug::log($html->find('div.blog-item')[0]); + + //Loop on each entry + foreach($html->find('div.blog-item') as $element) { + //Debug::log($element); + + $title = $element->find('h3.title', 0)->first_child()->innertext; + $article_uri = $element->find('h3.title', 0)->first_child()->href; + $timestamp = $element->find('div.publication-date', 0)->innertext; + $author = $element->find('div.artist', 0)-> + first_child()->first_child()->innertext; + + // Create & populate item + $item = array(); + $item['uri'] = $article_uri; + $item['id'] = $item['uri']; + $item['timestamp'] = $timestamp; + $item['title'] = $title; + $item['author'] = $author; + + $media_html = ''; + + // Look for image thumbnails + $media_uris = $element->find('div.thumb', 0); + if (isset($media_uris)) { + // Add gallery image count, if it exists + $gallery_count = $media_uris->find('span.count', 0); + if (isset($gallery_count)) { + $media_html .= '
Gallery count: ' . + $gallery_count->first_child()->innertext . '
'; + } + // Add image thumbnail(s) + foreach($media_uris->find('img') as $media_uri) { + $media_html .= '' . $media_uri . ''; + //Debug::log('Adding to enclosures: ' . str_replace(' ', '%20', $media_uri->src)); + $item['enclosures'][] = str_replace(' ', '%20', $media_uri->src); + } + } + + // Look for video thumbnails + $media_uris = $element->find('div.thumb-holder', 0); + // Add video thumbnail(s) + if (isset($media_uris)) { + foreach($media_uris->find('img') as $media_uri) { + $media_html .= 'Video:
' . $media_uri . ''; + //Debug::log('Adding to enclosures: ' . $media_uri->src); + $item['enclosures'][] = $media_uri->src; + } + } + $item['content'] = $media_html; + + if(isset($item['title'])) { + $this->items[] = $item; + } + } + } +}