diff --git a/bridges/Releases3DSBridge.php b/bridges/Releases3DSBridge.php
new file mode 100644
index 00000000..465bdfa3
--- /dev/null
+++ b/bridges/Releases3DSBridge.php
@@ -0,0 +1,134 @@
+returnError('Could not request 3dsdb: '.$dataUrl, 404);
+ $limit = 0;
+
+ foreach (array_reverse(explode('', $xml)) as $element) {
+ if ($limit < 5) {
+ if (strpos($element, '') !== false) {
+
+ $id = ExtractFromDelimiters($element, '', '');
+ $name = ExtractFromDelimiters($element, '', '');
+ $publisher = ExtractFromDelimiters($element, '', '');
+ $region = ExtractFromDelimiters($element, '', '');
+ $group = ExtractFromDelimiters($element, '', '');
+ $imagesize = ExtractFromDelimiters($element, '', '');
+ $serial = ExtractFromDelimiters($element, '', '');
+ $titleid = ExtractFromDelimiters($element, '', '');
+ $imgcrc = ExtractFromDelimiters($element, '', '');
+ $filename = ExtractFromDelimiters($element, '', '');
+ $releasename = ExtractFromDelimiters($element, '', '');
+ $trimmedsize = ExtractFromDelimiters($element, '', '');
+ $firmware = ExtractFromDelimiters($element, '', '');
+ $type = ExtractFromDelimiters($element, '', '');
+ $card = ExtractFromDelimiters($element, '', '');
+
+ if (!empty($releasename)) {
+
+ //Retrieve cover art and short desc from IGN?
+ $ignResult = false; $ignDescription = ''; $ignLink = ''; $ignDate = time(); $ignCoverArt = '';
+ $ignSearchUrl = 'http://www.ign.com/search?q='.urlencode($name);
+ if ($ignResult = file_get_html($ignSearchUrl)) {
+ $ignCoverArt = $ignResult->find('div.search-item-media', 0)->find('img', 0)->src;
+ $ignDesc = $ignResult->find('div.search-item-description', 0)->plaintext;
+ $ignLink = $ignResult->find('div.search-item-sub-title', 0)->find('a', 1)->href;
+ $ignDate = strtotime(trim($ignResult->find('span.publish-date', 0)->plaintext));
+ $ignDescription = '
';
+ }
+
+ //Main section : Release description from 3DS database
+ $releaseDescription = 'Release Details
'
+ .'Release ID: '.$id.'
'
+ .'Game Name: '.$name.'
'
+ .'Publisher: '.$publisher.'
'
+ .'Region: '.$region.'
'
+ .'Group: '.$group.'
'
+ .'Image size: '.(intval($imagesize)/8).'MB
'
+ .'Serial: '.$serial.'
'
+ .'Title ID: '.$titleid.'
'
+ .'Image CRC: '.$imgcrc.'
'
+ .'File Name: '.$filename.'
'
+ .'Release Name: '.$releasename.'
'
+ .'Trimmed size: '.intval(intval($trimmedsize)/1048576).'MB
'
+ .'Firmware: '.$firmware.'
'
+ .'Type: '.TypeToString($type).'
'
+ .'Card: '.CardToString($card).'
';
+
+ //Build search links section to facilitate release search using search engines
+ $releaseNameEncoded = urlencode(str_replace(' ', '+', $releasename));
+ $searchLinkGoogle = 'https://google.com/?q='.$releaseNameEncoded;
+ $searchLinkDuckDuckGo = 'https://duckduckgo.com/?q='.$releaseNameEncoded;
+ $searchLinkQwant = 'https://lite.qwant.com/?q='.$releaseNameEncoded.'&t=web';
+ $releaseSearchLinks = 'Search this release
';
+
+ //Build and add final item with the above three sections
+ $item = new \Item();
+ $item->title = $name;
+ $item->author = $publisher;
+ $item->timestamp = $ignDate;
+ $item->thumbnailUri = $ignCoverArt;
+ $item->uri = empty($ignLink) ? $searchLinkDuckDuckGo : $ignLink;
+ $item->content = $ignDescription.$releaseDescription.$releaseSearchLinks;
+ $this->items[] = $item;
+ $limit++;
+ }
+ }
+ }
+ }
+ }
+
+ public function getName() {
+ return '3DS Scene Releases';
+ }
+
+ public function getURI() {
+ return 'http://www.3dsdb.com/';
+ }
+
+ public function getCacheDuration() {
+ return 10800; //3 hours
+ }
+}