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;
 }