diff --git a/bridges/UnsplashBridge.php b/bridges/UnsplashBridge.php
index 3504140b..f6fed7c8 100644
--- a/bridges/UnsplashBridge.php
+++ b/bridges/UnsplashBridge.php
@@ -1,67 +1,113 @@
array(
+ 'name' => 'Filter by username (optional)',
+ 'type' => 'text',
+ 'defaultValue' => 'unsplash'
+ ),
'm' => array(
'name' => 'Max number of photos',
'type' => 'number',
- 'defaultValue' => 20
+ 'defaultValue' => 20,
+ 'required' => true
+ ),
+ 'prev_q' => array(
+ 'name' => 'Preview quality',
+ 'type' => 'list',
+ 'values' => array(
+ 'full' => 'full',
+ 'regular' => 'regular',
+ 'small' => 'small',
+ 'thumb' => 'thumb',
+ ),
+ 'defaultValue' => 'regular'
),
'w' => array(
- 'name' => 'Width',
- 'exampleValue' => '1920, 1680, …',
- 'defaultValue' => '1920'
- ),
- 'q' => array(
- 'name' => 'JPEG quality',
+ 'name' => 'Max download width (optional)',
+ 'exampleValue' => 1920,
'type' => 'number',
- 'defaultValue' => 75
+ 'defaultValue' => 1920,
+ ),
+ 'jpg_q' => array(
+ 'name' => 'Max JPEG quality (optional)',
+ 'exampleValue' => 75,
+ 'type' => 'number',
+ 'defaultValue' => 75,
)
));
- public function collectData(){
+ public function collectData()
+ {
+ $filteredUser = $this->getInput('u');
$width = $this->getInput('w');
$max = $this->getInput('m');
- $quality = $this->getInput('q');
+ $previewQuality = $this->getInput('prev_q');
+ $jpgQuality = $this->getInput('jpg_q');
+
+ $url = 'https://unsplash.com/napi';
+ if (strlen($filteredUser) > 0) $url .= '/users/' . $filteredUser;
+ $url .= '/photos?page=1&per_page=' . $max;
+ $api_response = getContents($url);
- $api_response = getContents('https://unsplash.com/napi/photos?page=1&per_page=' . $max);
$json = json_decode($api_response, true);
foreach ($json as $json_item) {
$item = array();
// Get image URI
- $uri = $json_item['urls']['regular'] . '.jpg'; // '.jpg' only for format hint
- $uri = str_replace('q=80', 'q=' . $quality, $uri);
- $uri = str_replace('w=1080', 'w=' . $width, $uri);
+ $uri = $json_item['urls']['raw'] . '&fm=jpg';
+ if ($jpgQuality > 0) $uri .= '&q=' . $jpgQuality;
+ if ($width > 0) $uri .= '&w=' . $width . '&fit=max';
+ $uri .= '.jpg'; // only for format hint
$item['uri'] = $uri;
// Get title from description
- if (is_null($json_item['alt_description'])) {
- if (is_null($json_item['description'])) {
- $item['title'] = 'Unsplash picture from ' . $json_item['user']['name'];
- } else {
- $item['title'] = $json_item['description'];
- }
+ if (is_null($json_item['description'])) {
+ $item['title'] = 'Unsplash picture from ' . $json_item['user']['name'];
} else {
- $item['title'] = $json_item['alt_description'];
+ $item['title'] = $json_item['description'];
}
- $item['timestamp'] = time();
- $item['content'] = $item['title']
- . '
@'
+ . $json_item['user']['username']
+ . '';
+ if (isset($json_item['location']['name'])) {
+ $content .= ' | Location: ' . $json_item['location']['name'];
+ }
+ $content .= ' | Image on Unsplash
';
+ $item['content'] = $content;
$this->items[] = $item;
}
}
+
+ public function getName()
+ {
+ $filteredUser = $this->getInput('u');
+ if (strlen($filteredUser) > 0) {
+ return $filteredUser . ' - ' . self::NAME;
+ } else {
+ return self::NAME;
+ }
+ }
}