public static function fromEntries(array $entries = []) { $dist = new self(); Model_MixedUserMedia::attachGenres($entries); foreach ($entries as $entry) { $dist->addEntry($entry); } $dist->finalize(); return $dist; }
public function getNewRecommendations($goal) { $dontRecommend = []; foreach ($this->allFranchises as $franchise) { foreach ($franchise->allEntries as $entry) { $key = $entry->media . $entry->mal_id; $dontRecommend[$key] = true; } } $selectedEntries = []; $weights1 = self::addRecsFromRecommendations($this->list); $weights1 = self::filterKeys($weights1, $dontRecommend); $weights1 = self::trimByValue($weights1, $goal * 10); $weights2 = self::addRecsFromStaticRecommendations($this->media); $weights2 = self::filterKeys($weights2, $dontRecommend); $allWeights = array_merge($weights2, $weights1); $selectedEntries = self::getRecsFromWeights($allWeights); //echo json_encode($selectedEntries); $selectedEntries = self::trimByScore($selectedEntries, $goal * 10); $selectedEntries = self::filterBannedGenres($selectedEntries); $selectedEntries = self::trimByScore($selectedEntries, $goal * 3); $selectedEntries = self::filterFranchises($selectedEntries); $selectedEntries = self::trimByScore($selectedEntries, $goal); //reattach stuff that might have been lost due to whatever reason foreach ($selectedEntries as $entry) { $entry->media_id = $entry->id; } Model_MixedUserMedia::attachGenres($selectedEntries); return $selectedEntries; }