<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def fetchItem(self, ekey, cls=None, **kwargs):
 """ Load the specified key to find and build the first item with the specified tag and attrs. If no tag or attrs are specified then the first item in the result set is returned. Parameters: ekey (str or int):
 Path in Plex to fetch items from. If an int is passed in, the key will be translated to /library/metadata/<key>. This allows fetching an item only knowing its key-id. cls (:class:`~plexapi.base.PlexObject`):
 If you know the class of the items to be fetched, passing this in will help the parser ensure it only returns those items. By default we convert the xml elements with the best guess PlexObjects based on tag and type attrs. etag (str):
 Only fetch items with the specified tag. **kwargs (dict):
 Optionally add attribute filters on the items to fetch. For example, passing in viewCount=0 will only return matching items. Filtering is done before the Python objects are built to help keep things speedy. Note: Because some attribute names are already used as arguments to this function, such as 'tag', you may still reference the attr tag byappending an underscore. For example, passing in _tag='foobar' will return all items where tag='foobar'. Also Note: Case very much matters when specifying kwargs -- Optionally, operators can be specified by append it to the end of the attribute name for more complex lookups. For example, passing in viewCount__gte=0 will return all items where viewCount >= 0. Available operations include: * __contains: Value contains specified arg. * __endswith: Value ends with specified arg. * __exact: Value matches specified arg. * __exists (bool):
 Value is or is not present in the attrs. * __gt: Value is greater than specified arg. * __gte: Value is greater than or equal to specified arg. * __icontains: Case insensative value contains specified arg. * __iendswith: Case insensative value ends with specified arg. * __iexact: Case insensative value matches specified arg. * __in: Value is in a specified list or tuple. * __iregex: Case insensative value matches the specified regular expression. * __istartswith: Case insensative value starts with specified arg. * __lt: Value is less than specified arg. * __lte: Value is less than or equal to specified arg. * __regex: Value matches the specified regular expression. * __startswith: Value starts with specified arg. """

        if isinstance(ekey, int):
            ekey = '/library/metadata/%s' % ekey
        for elem in self._server.query(ekey):
            if self._checkAttrs(elem, **kwargs):
                return self._buildItem(elem, cls, ekey)
        clsname = cls.__name__ if cls else 'None'
        raise NotFound('Unable to find elem: cls=%s, attrs=%s' % (clsname, kwargs))