Conditions | 20 |
Total Lines | 117 |
Code Lines | 89 |
Lines | 0 |
Ratio | 0 % |
Changes | 0 |
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
Complex classes like ck_bilibili.BiliBili.main() often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes.
Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.
1 | # -*- coding: utf-8 -*- |
||
271 | def main(self): |
||
272 | msg_all = "" |
||
273 | for check_item in self.check_items: |
||
274 | cookie = { |
||
275 | item.split("=")[0]: item.split("=")[1] |
||
276 | for item in check_item.get("cookie").split("; ") |
||
277 | } |
||
278 | bili_jct = cookie.get("bili_jct") |
||
279 | coin_num = check_item.get("coin_num", 0) |
||
280 | coin_type = check_item.get("coin_type", 1) |
||
281 | silver2coin = check_item.get("silver2coin", True) |
||
282 | session = requests.session() |
||
283 | requests.utils.add_dict_to_cookiejar(session.cookies, cookie) |
||
284 | session.headers.update( |
||
285 | { |
||
286 | "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \ |
||
287 | Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.64", |
||
288 | "Referer": "https://www.bilibili.com/", |
||
289 | "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", |
||
290 | "Connection": "keep-alive", |
||
291 | } |
||
292 | ) |
||
293 | success_count = 0 |
||
294 | uname, uid, is_login, coin, vip_type, current_exp = self.get_nav( |
||
295 | session=session |
||
296 | ) |
||
297 | if is_login: |
||
298 | manhua_msg = self.manga_sign(session=session) |
||
299 | live_msg = self.live_sign(session=session) |
||
300 | aid_list = self.get_region(session=session) |
||
301 | coins_av_count = len(list(filter(lambda x: x['reason'] == "视频投币奖励", self.reward(session=session)))) |
||
302 | coin_num = coin_num - coins_av_count |
||
303 | coin_num = coin_num if coin_num < coin else coin |
||
304 | if coin_type == 1 and coin_num: |
||
305 | following_list = self.get_followings(session=session, uid=uid) |
||
306 | for following in following_list.get("data", {}).get("list"): |
||
307 | mid = following.get("mid") |
||
308 | if mid: |
||
309 | aid_list += self.space_arc_search(session=session, uid=mid) |
||
310 | if coin_num > 0: |
||
311 | for aid in aid_list[::-1]: |
||
312 | res = self.coin_add( |
||
313 | session=session, aid=aid.get("aid"), bili_jct=bili_jct |
||
314 | ) |
||
315 | if res["code"] == 0: |
||
316 | coin_num -= 1 |
||
317 | print(f'成功给{aid.get("title")}投一个币') |
||
318 | success_count += 1 |
||
319 | elif res["code"] == 34005: |
||
320 | print(f'投币{aid.get("title")}失败,原因为{res["message"]}') |
||
321 | continue |
||
322 | # -104 硬币不够了 -111 csrf 失败 34005 投币达到上限 |
||
323 | else: |
||
324 | print(f'投币{aid.get("title")}失败,原因为{res["message"]},跳过投币') |
||
325 | break |
||
326 | if coin_num <= 0: |
||
327 | break |
||
328 | coin_msg = f"今日成功投币{success_count + coins_av_count}/{check_item.get('coin_num', 5)}个" |
||
329 | else: |
||
330 | coin_msg = ( |
||
331 | f"今日成功投币{coins_av_count}/{check_item.get('coin_num', 5)}个" |
||
332 | ) |
||
333 | aid = aid_list[0].get("aid") |
||
334 | cid = aid_list[0].get("cid") |
||
335 | title = aid_list[0].get("title") |
||
336 | report_res = self.report_task( |
||
337 | session=session, bili_jct=bili_jct, aid=aid, cid=cid |
||
338 | ) |
||
339 | if report_res.get("code") == 0: |
||
340 | report_msg = f"观看《{title}》300秒" |
||
341 | else: |
||
342 | report_msg = "任务失败" |
||
343 | print(report_msg) |
||
344 | share_res = self.share_task(session=session, bili_jct=bili_jct, aid=aid) |
||
345 | if share_res.get("code") == 0: |
||
346 | share_msg = f"分享《{title}》成功" |
||
347 | else: |
||
348 | share_msg = "分享失败" |
||
349 | print(share_msg) |
||
350 | if silver2coin: |
||
351 | silver2coin_res = self.silver2coin( |
||
352 | session=session, bili_jct=bili_jct |
||
353 | ) |
||
354 | if silver2coin_res["code"] == 0: |
||
355 | silver2coin_msg = "成功将银瓜子兑换为1个硬币" |
||
356 | else: |
||
357 | silver2coin_msg = silver2coin_res["message"] |
||
358 | else: |
||
359 | silver2coin_msg = "未开启银瓜子兑换硬币功能" |
||
360 | live_stats = self.live_status(session=session) |
||
361 | ( |
||
362 | uname, |
||
363 | uid, |
||
364 | is_login, |
||
365 | new_coin, |
||
366 | vip_type, |
||
367 | new_current_exp, |
||
368 | ) = self.get_nav(session=session) |
||
369 | # reward_res = self.reward(session=session) |
||
370 | # login = reward_res.get("data", {}).get("login") |
||
371 | # watch_av = reward_res.get("data", {}).get("watch_av") |
||
372 | # coins_av = reward_res.get("data", {}).get("coins_av", 0) |
||
373 | # share_av = reward_res.get("data", {}).get("share_av") |
||
374 | # today_exp = 5 * len([one for one in [login, watch_av, share_av] if one]) |
||
375 | # today_exp += coins_av |
||
376 | today_exp = sum(map(lambda x: x['delta'], self.reward(session=session))) |
||
377 | update_data = (28800 - new_current_exp) // ( |
||
378 | today_exp if today_exp else 1 |
||
379 | ) |
||
380 | msg = ( |
||
381 | f"帐号信息: {uname}\n漫画签到: {manhua_msg}\n直播签到: {live_msg}\n" |
||
382 | f"登陆任务: 今日已登陆\n观看视频: {report_msg}\n分享任务: {share_msg}\n投币任务: {coin_msg}\n" |
||
383 | f"银瓜子兑换硬币: {silver2coin_msg}\n今日获得经验: {today_exp}\n当前经验: {new_current_exp}\n" |
||
384 | f"按当前速度升级还需: {update_data}天\n{live_stats}" |
||
385 | ) |
||
386 | msg_all += msg + "\n\n" |
||
387 | return msg_all |
||
388 | |||
395 |