[PornhubBridge] Add bridge
This commit is contained in:
parent
8697e1e1a2
commit
480694e819
1 changed files with 99 additions and 0 deletions
99
bridges/PornhubBridge.php
Normal file
99
bridges/PornhubBridge.php
Normal file
|
@ -0,0 +1,99 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
class PornhubBridge extends BridgeAbstract {
|
||||||
|
|
||||||
|
const MAINTAINER = 'Mitsukarenai';
|
||||||
|
const NAME = 'Pornhub';
|
||||||
|
const URI = 'https://www.pornhub.com/';
|
||||||
|
const CACHE_TIMEOUT = 3600; // 1h
|
||||||
|
const DESCRIPTION = 'Returns videos from specified user,model,pornstar';
|
||||||
|
|
||||||
|
const PARAMETERS = array(array(
|
||||||
|
'q' => array(
|
||||||
|
'name' => 'User name',
|
||||||
|
'required' => true,
|
||||||
|
),
|
||||||
|
'type' => array(
|
||||||
|
'name' => 'User type',
|
||||||
|
'type' => 'list',
|
||||||
|
'values' => array(
|
||||||
|
'user' => 'users',
|
||||||
|
'model' => 'model',
|
||||||
|
'pornstar' => 'pornstar',
|
||||||
|
),
|
||||||
|
'defaultValue' => 'users',
|
||||||
|
),
|
||||||
|
'sort' => array(
|
||||||
|
'name' => 'Sort by',
|
||||||
|
'type' => 'list',
|
||||||
|
'values' => array(
|
||||||
|
'Most recent' => '',
|
||||||
|
'Most views' => '?o=mv',
|
||||||
|
'Top rated' => '?o=tr',
|
||||||
|
'Longest' => '?o=lg',
|
||||||
|
),
|
||||||
|
'defaultValue' => '',
|
||||||
|
),
|
||||||
|
'show_images' => array(
|
||||||
|
'name' => 'Show thumbnails',
|
||||||
|
'type' => 'checkbox',
|
||||||
|
),
|
||||||
|
));
|
||||||
|
|
||||||
|
public function getName(){
|
||||||
|
if(!is_null($this->getInput('type')) && !is_null($this->getInput('q'))) {
|
||||||
|
return 'PornHub ' . $this->getInput('type') . ':' . $this->getInput('q');
|
||||||
|
}
|
||||||
|
|
||||||
|
return parent::getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function collectData() {
|
||||||
|
|
||||||
|
$uri = 'https://www.pornhub.com/' . $this->getInput('type') . '/';
|
||||||
|
switch($this->getInput('type')) { // select proper permalink format per user type...
|
||||||
|
case 'model':
|
||||||
|
$uri .= urlencode($this->getInput('q')) . '/videos' . $this->getInput('sort'); break;
|
||||||
|
case 'users':
|
||||||
|
$uri .= urlencode($this->getInput('q')) . '/videos/public' . $this->getInput('sort'); break;
|
||||||
|
case 'pornstar':
|
||||||
|
$uri .= urlencode($this->getInput('q')) . '/videos/upload' . $this->getInput('sort'); break;
|
||||||
|
}
|
||||||
|
|
||||||
|
$show_images = $this->getInput('show_images');
|
||||||
|
|
||||||
|
$html = getSimpleHTMLDOM($uri)
|
||||||
|
or returnServerError('Could not request PornHub.');
|
||||||
|
|
||||||
|
foreach($html->find('div.videoUList ul.videos li.videoblock') as $element) {
|
||||||
|
|
||||||
|
$item = array();
|
||||||
|
|
||||||
|
$item['author'] = $this->getInput('q');
|
||||||
|
|
||||||
|
// Title
|
||||||
|
$title = $element->find('a', 0)->getAttribute('title');
|
||||||
|
if (is_null($title)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$item['title'] = $title;
|
||||||
|
|
||||||
|
// Url
|
||||||
|
$url = $element->find('a', 0)->href;
|
||||||
|
$item['uri'] = 'https://www.pornhub.com' . $url;
|
||||||
|
|
||||||
|
// Content
|
||||||
|
$image = $element->find('img', 0)->getAttribute('data-src');
|
||||||
|
if($show_images == TRUE) {
|
||||||
|
$item['content'] = '<a href="'.$item['uri'].'"><img src="' . $image . '"></a>';
|
||||||
|
}
|
||||||
|
|
||||||
|
// date hack, guess upload YYYYMMDD from thumbnail URL (format: https://ci.phncdn.com/videos/201907/25/--- )
|
||||||
|
$uploaded = explode('/', $image);
|
||||||
|
$uploaded = strtotime($uploaded[4].$uploaded[5]);
|
||||||
|
$item['timestamp'] = $uploaded;
|
||||||
|
|
||||||
|
$this->items[] = $item;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue