public function __construct($args)
 {
     $defaults = array('source' => 'vimeo', 'feed' => 'search', 'query' => false, 'results' => 20, 'page' => 0, 'response' => 'json', 'order' => 'new');
     $data = wp_parse_args($args, $defaults);
     // if no query is specified, bail out
     if (!$data['query']) {
         return false;
     }
     $request_args = array('feed' => $data['feed'], 'feed_id' => $data['query'], 'page' => $data['page'], 'response' => $data['response'], 'sort' => $data['order']);
     parent::__construct($request_args);
     $content = parent::request_feed();
     if (is_wp_error($content) || 200 != $content['response']['code']) {
         if (is_wp_error($content)) {
             $this->errors = new WP_Error();
             $this->errors->add('cvm_wp_error', $content->get_error_message(), $content->get_error_data());
         }
         return false;
     }
     $result = json_decode($content['body'], true);
     // set up Vimeo query errors if any
     if (isset($result['error'])) {
         $this->errors = new WP_Error();
         $this->errors->add('cvm_vimeo_query_error', __('Query to Vimeo failed.', 'cvm_video'), $result['error_description']);
     }
     /* single video entry */
     if ('video' == $request_args['feed']) {
         if (isset($result['uri'])) {
             $this->results = $this->format_video_entry($result);
         } else {
             $this->results = array();
         }
         return;
     }
     // processign multi videos playlists
     if (isset($result['data'])) {
         $raw_entries = $result['data'];
     } else {
         $raw_entries = array();
     }
     $entries = array();
     foreach ($raw_entries as $entry) {
         $entries[] = $this->format_video_entry($entry);
     }
     $this->results = $entries;
     $this->total_items = isset($result['total']) ? $result['total'] : 0;
     $this->page = isset($result['page']) ? $result['page'] : 0;
 }