code: def search(self, query, category=None, orientation=None, page=1, per_page=10):
          
          if orientation and orientation not in self.orientation_values:
              raise Exception()
          params = {
              "query": query,
              "category": category,
              "orientation": orientation,
              "page": page,
              "per_page": per_page
          }
          url = "/photos/search"
          result = self._get(url, params=params)
          return PhotoModel.parse_list(result)
docs: Get a single page from a photo search.
          Optionally limit your search to a set of categories by supplying the category ID’s.
  
          Note: If supplying multiple category ID’s,
          the resulting photos will be those that match all of the given categories,
          not ones that match any category.
  
          :param query [string]: Search terms.
          :param category [string]: Category ID(‘s) to filter search. If multiple, comma-separated. (deprecated)
          :param orientation [string]: Filter search results by photo orientation.
          Valid values are landscape, portrait, and squarish.
          :param page [integer]: Page number to retrieve. (Optional; default: 1)
          :param per_page [integer]: Number of items per page. (Optional; default: 10)
          :return: [Array]: A single page of the curated Photo list.
          :raise UnsplashError: If the given orientation is not in the default orientation values.