def METHOD_NAME(self, pyfile):
    jsvars = dict(re.findall(self.JSVARS_PATTERN, self.data))
    self.log_debug(jsvars)
    url = "https://rapidgator.net{}?fid={}".format(
        jsvars.get("startTimerUrl", "/download/AjaxStartTimer"), jsvars["fid"]
    )
    jsvars.update(self.get_json_response(url))
    self.wait(jsvars.get("secs", 180), False)
    url = "https://rapidgator.net{}?sid={}".format(
        jsvars.get("getDownloadUrl", "/download/AjaxGetDownloadLink"), jsvars["sid"]
    )
    jsvars.update(self.get_json_response(url))
    url = "https://rapidgator.net{}".format(
        jsvars.get("captchaUrl", "/download/captcha")
    )
    self.data = self.load(url, ref=pyfile.url)
    m = re.search(self.LINK_FREE_PATTERN, self.data)
    if m is not None:
        # self.link = m.group(1)
        self.download(m.group(1), ref=url)
    else:
        captcha = self.handle_captcha()
        if not captcha:
            self.error(self._("Captcha pattern not found"))
        if isinstance(captcha, ReCaptcha):
            response = captcha.challenge()
            post_params = {"g-recaptcha-response": response}
        elif isinstance(captcha, SolveMedia):
            response, challenge = captcha.challenge()
            post_params = {
                "adcopy_challenge": challenge,
                "adcopy_response": response,
            }
        post_params["DownloadCaptchaForm[verifyCode]"] = response
        self.data = self.load(url, post=post_params, ref=url)
        if "The verification code is incorrect" in self.data:
            self.retry_captcha()
        else:
            m = re.search(self.LINK_FREE_PATTERN, self.data)
            if m is not None:
                # self.link = m.group(1)
                self.download(m.group(1), ref=url)