async def METHOD_NAME(self):
    """Login to Apple TV using specified login id."""
    # Do not use session.get_data(...) in login as that would end up in
    # an infinite loop.
    def _login_request():
        url = self._mkurl("login?[AUTH]&hasFP=1", session=False, login_id=True)
        _login_request.log_text = "Login request: " + url
        return self.http.get_data(
            url,
            headers=_DMAP_HEADERS,
        )
    resp = await self._do(_login_request, is_login=True)
    self._session_id = parser.first(resp, "mlog", "mlid")
    _LOGGER.info("Logged in and got session id %s", self._session_id)
    return self._session_id