private function filter($videos)
 {
     $videos = $this->manager->filterList($videos);
     $fields_map = $this->fields_map;
     $favorites = $this->favorites;
     $not_ended = $this->not_ended;
     $genre = new \VideoGenre();
     $genres_map = $genre->getIdMap();
     $videos = array_map(function ($video) use($fields_map, $favorites, $not_ended, $genres_map) {
         $new_video = array_intersect_key($video, $fields_map);
         $genre_ids = $new_video['genres_ids'];
         $new_video['genres_ids'] = array();
         foreach ($genre_ids as $genre_id) {
             if (!empty($genres_map[$genre_id])) {
                 $new_video['genres_ids'][] = $genres_map[$genre_id];
             }
         }
         $new_video['added'] = intval(strtotime($video['added']));
         $new_video['original_name'] = $video['o_name'];
         $new_video['hd'] = (int) $video['hd'];
         $new_video['rating_kinopoisk'] = (double) $video['rating_kinopoisk'];
         $new_video['rating_imdb'] = (double) $video['rating_imdb'];
         $series = unserialize($video['series']);
         $new_video['series'] = $series !== false ? $series : array();
         $new_video['favorite'] = in_array($video['id'], $favorites) ? 1 : 0;
         $new_video['not_ended'] = !empty($not_ended[$video['id']]) ? 1 : 0;
         if ($new_video['not_ended']) {
             if (!empty($new_video['series'])) {
                 $new_video['not_ended_episode'] = $not_ended[$video['id']]['series'];
             }
             $new_video['end_time'] = $not_ended[$video['id']]['end_time'];
         }
         $new_video['url'] = empty($video['rtsp_url']) ? '' : $video['rtsp_url'];
         if (preg_match("/(\\S+:\\/\\/\\S+)/", $new_video['url'], $match)) {
             $new_video['url'] = $match[1];
         }
         return $new_video;
     }, $videos);
     return $videos;
 }