/** * no guessing - if value seems reasonable or not - required */ public function migrateNonGuessableData($rawArray) { $t = new \Slimpd\Track(); $t->setId($rawArray['id']); $t->setRelativePath($rawArray['relativePath']); $t->setRelativePathHash($rawArray['relativePathHash']); $t->setDirectoryPathHash($rawArray['relativeDirectoryPathHash']); $t->setFingerprint($rawArray['fingerprint']); $t->setMimeType($rawArray['mimeType']); $t->setFilesize($rawArray['filesize']); $t->setFilemtime($rawArray['filemtime']); $t->setMiliseconds(round($rawArray['miliseconds'] * 1000)); $t->setAudioDataformat($rawArray['audioDataformat']); $t->setAudioCompressionRatio($rawArray['audioCompressionRatio']); $t->setAudioEncoder($rawArray['audioEncoder'] ? $rawArray['audioEncoder'] : 'Unknown encoder'); if ($rawArray['audioLossless']) { $t->setAudioLossless($rawArray['audioLossless']); if ($rawArray['audioCompressionRatio'] == 1) { $t->setAudioProfile('Losless'); } else { $t->setAudioProfile('Losless compression'); } } $t->setAudioBitrate(round($rawArray['audioBitrate'])); // integer in database if (!$t->getAudioProfile()) { $t->setAudioProfile($rawArray['audioBitrateMode'] . " " . round($t->getAudioBitrate() / 1000, 1) . " kbps"); } $t->setAudioBitsPerSample($rawArray['audioBitsPerSample'] ? $rawArray['audioBitsPerSample'] : 16); $t->setAudioSampleRate($rawArray['audioSampleRate'] ? $rawArray['audioSampleRate'] : 44100); $t->setAudioChannels($rawArray['audioChannels'] ? $rawArray['audioChannels'] : 2); $t->setVideoDataformat($rawArray['videoDataformat']); $t->setVideoCodec($rawArray['videoCodec']); $t->setVideoResolutionX($rawArray['videoResolutionX']); $t->setVideoResolutionY($rawArray['videoResolutionY']); $t->setVideoFramerate($rawArray['videoFramerate']); $t->setImportStatus($rawArray['importStatus']); $t->setLastScan($rawArray['lastScan']); $t->setError($rawArray['error']); $t->setDr($rawArray['dynamicRange']); return $t; }
if (is_numeric($app->request->get('item')) === TRUE) { $search = array('id' => (int) $app->request->get('item')); } else { $search = array('relativePathHash' => getFilePathHash($app->request->get('item'))); $itemRelativePath = $app->request->get('item'); } $config['item'] = \Slimpd\Track::getInstanceByAttributes($search); } if (is_null($config['item']) === FALSE && $config['item']->getId() > 0) { $config['renderitems'] = array('genres' => \Slimpd\Genre::getInstancesForRendering($config['item']), 'labels' => \Slimpd\Label::getInstancesForRendering($config['item']), 'artists' => \Slimpd\Artist::getInstancesForRendering($config['item']), 'albums' => \Slimpd\Album::getInstancesForRendering($config['item'])); $itemRelativePath = $config['item']->getRelativePath(); } else { // playing track has not been imported in slimpd database yet... // so we are not able to get any renderitems $item = new \Slimpd\Track(); $item->setRelativePath($itemRelativePath); $config['item'] = $item; } // TODO: remove external liking as soon we have implemented a proper functionality $config['temp_likerurl'] = 'http://ixwax/filesystem/plusone?f=' . urlencode($config['mpd']['alternative_musicdir'] . $itemRelativePath); $app->render('modules/' . $markupSnippet . '.twig', $config); $app->stop(); }); } // predefined album-image sizes foreach (array(50, 100, 300, 1000) as $imagesize) { $app->get('/image-' . $imagesize . '/album/:itemId', function ($itemId) use($app, $config, $imagesize) { $image = \Slimpd\Bitmap::getInstanceByAttributes(array('albumId' => $itemId), 'filesize DESC'); $image = $image === NULL ? \Slimpd\Bitmap::getFallbackImage() : $image; $image->dump($imagesize); exit;