Exemplo n.º 1
0
    def getRoomInfo(self):
        Log.info("正在生成直播间信息...")

        payload = {}
        data = Curl().get("https://account.bilibili.com/api/myinfo/v2",payload)
        data = json.loads(data)

        if "code" in data and data["code"] != 0:
            Log.warning("获取账号信息失败!"+data["message"])
            Log.warning("清空礼物功能禁用!")
            self.lock = int(time.time()) + 100000000
            return
        
        self.uid = data["mid"]

        payload = {
            "id":config["Live"]["ROOM_ID"]
        }
        data = Curl().get("https://api.live.bilibili.com/room/v1/Room/get_info",payload)
        data = json.loads(data)

        if data["code"] != 0:
            Log.warning("获取主播房间号失败!"+data["message"])
            Log.warning("清空礼物功能禁用!")
            self.lock = int(time.time()) + 100000000
            return

        Log.info("直播间信息生成完毕!")

        self.ruid = data["data"]["uid"]
        self.roomid = data["data"]["room_id"]
Exemplo n.º 2
0
def getAllJobs():
    #Get job ids and names from the server to repopulate the database.
    curl = Curl()
    curl.verbose=False
    headers = ['Content-Type: application/json','Accept: application/json']
    url = '\''+baseURLMonitor+"user=%s\'" % userName
    output = curl.get(url,{},headers=headers)
    return output
	def request(self,module,method,data=None):
		curl = Curl()

		if( method == 'post' ):
			res = curl.post(module,data)
		elif( method == 'put' ):
			res = curl.get(module,data)
		else:
			res = curl.get(module,data)

		return res
    def request(self, module, method, data=None):
        curl = Curl()

        if (method == 'post'):
            res = curl.post(module, data)
        elif (method == 'put'):
            res = curl.get(module, data)
        else:
            res = curl.get(module, data)

        return res
Exemplo n.º 5
0
    def getAccessToken(self):
        c = Curl()
        param = {
            'grant_type'    : self.config('granttype'),
            'client_id'     : self.config('clientid'),
            'client_secret' : self.config('secretkey'),
            'scope'         : self.config('scope')
        }

        res = json.loads(c.post('oauth/access_token',param))
        
        return self.create(res)
Exemplo n.º 6
0
 def get(self,
         url="127.0.0.1",
         path="./download",
         override=False,
         header=True):
     self.url = url
     self.path = path
     self.override = override
     self.filename = url.split("/")[-1]
     self.source = Curl(url=self.url)
     self.data = self.source.get()
     self.header = header
     return self
Exemplo n.º 7
0
def getJobStatus(ids):
    # serialize
    strIDs = pickle.dumps(ids)
    # instantiate curl
    curl = Curl()
    # execute
    url = baseURL + '/getJobStatus'
    data = {'ids':strIDs}
    status,output = curl.post(url,data)
    try:
        return status,pickle.loads(output)
    except Exception as e:
        logging.error(traceback.format_exc())
        return 1,[]
Exemplo n.º 8
0
    def getToken(self, username, password):
        url = "https://passport.bilibili.com/api/v3/oauth2/login"
        payload = {
            "seccode": "",
            "validate": "",
            "subid": 1,
            "permission": "ALL",
            "username": username,
            "password": password,
            "captcha": "",
            "challenge": "",
            "cookies": account["Token"]["COOKIE"]
        }

        data = Curl().request_json("POST",
                                   url,
                                   headers=config["pcheaders"],
                                   data=payload)

        if data["code"] == 0:
            Log.info("账号登陆成功")
        else:
            Log.error("账号登陆失败" + "-" + data["message"])
        if "Token" not in account:
            account["Token"] = {}
        account["Token"]["ACCESS_TOKEN"] = data["data"]["token_info"][
            "access_token"]
        account["Token"]["REFRESH_TOKEN"] = data["data"]["token_info"][
            "refresh_token"]

        csrf, uid, cookie = arrange_cookie(data)
        account["Token"]["CSRF"] = csrf
        account["Token"]["UID"] = uid

        set_cookie(cookie)
Exemplo n.º 9
0
    def send(self, value):
        url = "https://api.live.bilibili.com/gift/v2/live/bag_send"
        csrf = config["Token"]["CSRF"]

        payload = {
            "coin_type": "silver",
            "gift_id": value["gift_id"],
            "ruid": self.ruid,
            "uid": self.uid,
            "biz_id": self.roomid,
            "gift_num": value["gift_num"],
            "data_source_id": "",
            "data_behavior_id": "",
            "bag_id": value["bag_id"],
            "csrf_token": csrf,
            "csrf": csrf
        }
        data = Curl().request_json("POST",
                                   url,
                                   headers=config["pcheaders"],
                                   data=payload)

        if data["code"] != 0:
            Log.warning("送礼失败!" + data["message"])
        else:
            Log.info(
                "成功向 %s 投喂了 %s 个 %s" %
                (payload["biz_id"], value["gift_num"], value["gift_name"]))
Exemplo n.º 10
0
    def work(self):
        if config["Function"]["GIFTSEND"] == "False":
            return

        if self.lock > int(time.time()):
            return

        if self.ruid == 0:
            self.getRoomInfo()

        if self.lock > int(time.time()):
            return

        url = "https://api.live.bilibili.com/gift/v2/gift/bag_list"
        payload = {}
        data = Curl().request_json("GET",
                                   url,
                                   headers=config["pcheaders"],
                                   params=payload)

        if data["code"] != 0:
            Log.warning("背包查看失败!" + data["message"])

        if len(data["data"]["list"]) != 0:
            for each in data["data"]["list"]:
                if each["expire_at"] >= data["data"]["time"] and each[
                        "expire_at"] <= data["data"]["time"] + 3600:
                    self.send(each)
                    time.sleep(3)

        self.lock = int(time.time()) + 600
Exemplo n.º 11
0
    def getToken(self, username, password):
        payload = {
            "seccode": "",
            "validate": "",
            "subid": 1,
            "permission": "ALL",
            "username": username,
            "password": password,
            "captcha": "",
            "challenge": "",
            "cookies": config["Token"]["COOKIE"]
        }

        data = Curl().post("https://passport.bilibili.com/api/v3/oauth2/login",
                           payload)
        data = json.loads(data)

        if data["code"] == 0:
            Log.info("账号登陆成功")
        else:
            Log.error("账号登陆失败" + "-" + data["message"])

        config["Token"]["ACCESS_TOKEN"] = data["data"]["token_info"][
            "access_token"]
        config["Token"]["REFRESH_TOKEN"] = data["data"]["token_info"][
            "refresh_token"]

        csrf, uid, cookie = arrange_cookie(data)
        config["Token"]["CSRF"] = csrf
        config["Token"]["UID"] = uid

        set_cookie(cookie)

        config.write()
Exemplo n.º 12
0
    def sign_info(self, value):
        if len(value["data"]["sign_info"]) == 0:
            return
        if "sign_info" in self.done:
            return

        Log.info("检查任务「每日签到」")

        info = value["data"]["sign_info"]

        if info["status"] == 1:
            Log.info("「每日签到」奖励已经领取")
            self.done.append("sign_info")
            return

        payload = {}
        data = Curl().post("https://api.live.bilibili.com/appUser/getSignInfo",
                           payload)
        data = json.loads(data)

        if data["code"] != 0:
            Log.error("「每日签到」失败")
        else:
            Log.info("「每日签到」成功")
            self.done.append("sign_info")
Exemplo n.º 13
0
    def double_watch_info(self,value):
        if len(value["data"]["double_watch_info"]) == 0:
            return
        if "double_watch_info" in self.done:
            return
        
        Log.info("检查任务「双端观看直播」")

        info = value["data"]["double_watch_info"]

        if info["status"] == 2:
            Log.info("「双端观看直播」奖励已经领取")
            self.done.append("double_watch_info")
            return

        if info["mobile_watch"] != 1 or info["web_watch"] != 1:
            Log.warning("「双端观看直播」未完成,请等待")
            return
        
        url = "https://api.live.bilibili.com/activity/v1/task/receive_award"
        payload = {
            "task_id":"double_watch_task",
            "csrf_token":config["Token"]["CSRF"],
            "csrf":config["Token"]["CSRF"]
        }
        data = Curl().request_json("POST",url,headers=config["pcheaders"],data=payload)
        
        if data["code"] != 0:
            Log.error("「双端观看直播」奖励领取失败")
        else:
            Log.info("「双端观看直播」奖励领取成功")
            self.done.append("double_watch_info")
Exemplo n.º 14
0
    def double_watch_info(self, value):
        if len(value["data"]["double_watch_info"]) == 0:
            return
        if "double_watch_info" in self.done:
            return

        Log.info("检查任务「双端观看直播」")

        info = value["data"]["double_watch_info"]

        if info["status"] == 2:
            Log.info("「双端观看直播」奖励已经领取")
            self.done.append("double_watch_info")
            return

        if info["mobile_watch"] != 1 or info["web_watch"] != 1:
            Log.warning("「双端观看直播」未完成,请等待")
            return

        payload = {"task_id": "double_watch_task"}
        data = Curl().post(
            "https://api.live.bilibili.com/activity/v1/task/receive_award",
            payload)
        data = json.loads(data)
        if data["code"] != 0:
            Log.error("「双端观看直播」奖励领取失败")
        else:
            Log.info("「双端观看直播」奖励领取成功")
            self.done.append("double_watch_info")
Exemplo n.º 15
0
def submitJobs(jobs,verbose=False):
    # set hostname
    hostname = commands.getoutput('hostname')
    for job in jobs:
        job.creationHost = hostname
    # serialize
    strJobs = pickle.dumps(jobs)
    # instantiate curl
    curl = Curl()
    curl.sslCert = _x509()
    curl.sslKey  = _x509()
    curl.verbose = verbose
    # execute
    url = baseURLSSL + '/submitJobs'
    data = {'jobs':strJobs}
    curl.verifyHost = False
    status,output = curl.post(url,data)
    if status!=0:
        print(output)
        return status,None
    try:
        return status,pickle.loads(output)
    except Exception as e:
        logging.error(traceback.format_exc())
        return 1,[]
Exemplo n.º 16
0
class Download:
    # 初始化
    def __init__(self):
        self.url = ''
        self.path = ''
        self.filename = ''
        self.source = ''
        self.data = ''
        self.override = ''
        self.header = ''

    def get(self,
            url="127.0.0.1",
            path="./download",
            override=False,
            header=True):
        self.url = url
        self.path = path
        self.override = override
        self.filename = url.split("/")[-1]
        self.source = Curl(url=self.url)
        self.data = self.source.get()
        self.header = header
        return self

    def as_file(self):
        try:
            if not os.path.exists(self.path):
                os.makedirs(self.path)
        except IOError as e:
            print(e)

        files = os.listdir(self.path)
        if (self.filename in files) and (self.override == False):
            file__name = self.filename.split(".")
            filename = file__name[0] + "-" + str(random.randint(
                100000, 999999)) + "." + file__name[-1]
        else:
            filename = self.filename

        with open(self.path + "/" + filename, "wb") as f:
            f.write(self.data)
        f.close()
        return self.path + "/" + filename

    def as_base64(self):
        ext_name = self.filename.split(".")[-1]
        header = {
            "gif": "data: image/gif;base64,",
            "png": "data:image/png;base64,",
            "jpg": "data:image/jpeg;base64,",
            "ico": "data:image/x-icon;base64,"
        }
        base64_str = base64.b64encode(self.data).decode()
        if (self.header == True):
            base64_str = header[ext_name] + base64_str
        return base64_str
Exemplo n.º 17
0
    def check(self):
        url = "https://api.live.bilibili.com/i/api/taskInfo"
        payload = {}
        data = Curl().request_json("GET",url,headers=config["pcheaders"],params=payload)

        if data["code"] != 0:
            Log.error("每日任务检查失败")

        return data
Exemplo n.º 18
0
    def check(self):
        payload = {}
        data = Curl().get("https://api.live.bilibili.com/i/api/taskInfo",
                          payload)
        data = json.loads(data)

        if data["code"] != 0:
            Log.error("每日任务检查失败")

        return data
Exemplo n.º 19
0
 def app_get_info_by_room(roomid=164725):
     url = "http://api.live.bilibili.com/xlive/app-room/v1/index/getInfoByUser"
     params = {
         "room_id": roomid,
     }
     headers = {
         "User-Agent": "Mozilla/5.0 BiliDroid/5.51.1 ([email protected])"
     }
     response = Curl().request_json("GET", url, headers=headers, params=params)
     return response
Exemplo n.º 20
0
    def getPublicKey(self):
        url = "https://passport.bilibili.com/api/oauth2/getKey"
        payload = {}
        data = Curl().request_json("POST",url,headers=config["pcheaders"],data=payload)

        if data["code"] == 0:
            Log.info("公钥获取成功")
        else:
            Log.error("公钥获取失败"+"-"+data["message"])
        return data
Exemplo n.º 21
0
    def mobile(self, roomId):
        payload = {"room_id": roomId}
        data = Curl().post(
            "https://api.live.bilibili.com/mobile/userOnlineHeart", payload)
        data = json.loads(data)

        if data["code"] != 0:
            Log.warning("直播间 %s 心跳异常 (APP)" % roomId)
        else:
            Log.info("向直播间 %s 发送心跳包 (APP)" % roomId)
Exemplo n.º 22
0
    def checkCookie(self):
        payload = {"ts": int(time.time())}
        data = Curl().get("https://api.live.bilibili.com/User/getUserInfo",
                          payload)
        data = json.loads(data)

        if data["code"] != "REPONSE_OK":
            Log.error("检测到 Cookie 过期")
            Log.info("正在重新登陆")
            self.loginPassword()
Exemplo n.º 23
0
 def getPublicKey(self):
     payload = {}
     data = Curl().post("https://passport.bilibili.com/api/oauth2/getKey",
                        payload)
     data = json.loads(data)
     if data["code"] == 0:
         Log.info("公钥获取成功")
     else:
         Log.error("公钥获取失败" + "-" + data["message"])
     return data
Exemplo n.º 24
0
    def checkCookie(self):
        url = "https://api.live.bilibili.com/User/getUserInfo"
        payload ={
            "ts":int(time.time())
        }
        data = Curl().request_json("GET",url,headers=config["pcheaders"],params=payload)

        if data["code"] != "REPONSE_OK":
            Log.error("检测到 Cookie 过期")
            Log.info("正在重新登陆")
            self.loginPassword()
Exemplo n.º 25
0
    def info(self):
        url = "https://api.live.bilibili.com/xlive/web-ucenter/v1/capsule/get_detail"
        payload = {}
        data = Curl().request_json("GET",url,headers=config["pcheaders"],params=payload)

        if data["code"] != 0:
            Log.warning("扭蛋币余额查询异常")
            return 0

        Log.info("当前还有 %s 枚扭蛋币"%data["data"]["normal"]["coin"])
        
        return data["data"]["normal"]["coin"]
Exemplo n.º 26
0
 def openTask(self):
     payload = {}
     data = Curl().get("https://api.live.bilibili.com/mobile/freeSilverAward",payload)
     data = json.loads(data)
 
     if data["code"] != 0:
         Log.warning("开启宝箱失败")
         self.lock = int(time.time()) + random.randint(60,120)
         return
 
     Log.info("开始宝箱成功,获得 %s 个银瓜子,当前有 %s 个银瓜子"%(data["data"]["awardSilver"],int(data["data"]["silver"])))
     self.task = 0
     self.lock = int(time.time()) + random.randint(5,20)
Exemplo n.º 27
0
    def exchange(self, num):
        payload = {"num": num, "csrf_token": config["Token"]["CSRF"]}

        data = Curl().nspost(
            "https://api.live.bilibili.com/pay/v1/Exchange/coin2silver",
            payload)
        data = json.loads(data)
        if data["code"] != 0:
            Log.warning(data["message"])
            return

        Log.info(data["message"] + ", %s 枚硬币兑换了 %s 个银瓜子" %
                 (num, data["data"]["silver"]))
Exemplo n.º 28
0
    def getList(self):
        url = "https://api.vc.bilibili.com/link_group/v1/member/my_groups"
        payload = {}
        data = Curl().request_json("GET",url,headers=config["pcheaders"],params=payload)

        if data["code"] != 0:
            Log.warning("查询应援团名单异常")
            return []
        
        if len(data["data"]["list"]) == 0:
            Log.info("没有需要签到的应援团")
            return []
        
        return data["data"]["list"]
Exemplo n.º 29
0
    def getList(self):
        payload = {}
        data = Curl().get("https://api.vc.bilibili.com/link_group/v1/member/my_groups",payload)
        data = json.loads(data)

        if data["code"] != 0:
            Log.warning("查询应援团名单异常")
            return []
        
        if len(data["data"]["list"]) == 0:
            Log.info("没有需要签到的应援团")
            return []
        
        return data["data"]["list"]
Exemplo n.º 30
0
    async def mobile(self, roomId):
        url = "https://api.live.bilibili.com/heartbeat/v1/OnLine/mobileOnline"
        payload = {
            "room_id": self.roomId,
        }
        data = Curl().request_json("POST",
                                   url,
                                   headers=config["pcheaders"],
                                   data=payload)

        if data["code"] != 0:
            Log.warning("直播间 %s 心跳异常 (APP)" % roomId)
        else:
            Log.info("向直播间 %s 发送心跳包 (APP)" % roomId)
Exemplo n.º 31
0
    def checkToken(self):
        url = "https://passport.bilibili.com/api/v2/oauth2/info"
        payload = {
            "access_token":config["Token"]["ACCESS_TOKEN"]
        }
        data = Curl().request_json("GET",url,headers=config["pcheaders"],params=payload)

        if data["code"] == 0:
            Log.info("令牌验证成功,有效期:"+time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(data["ts"]+data["data"]["expires_in"])))
        else:
            Log.error("令牌验证失败")
            return False

        return data["data"]["expires_in"] > 14400