mirror of
https://github.com/NanmiCoder/MediaCrawler.git
synced 2025-11-26 03:45:00 +08:00
feat: 微博二维码登录done
This commit is contained in:
@@ -9,9 +9,12 @@ import re
|
||||
from io import BytesIO
|
||||
from typing import Dict, List, Optional, Tuple
|
||||
|
||||
import httpx
|
||||
from PIL import Image, ImageDraw
|
||||
from playwright.async_api import Cookie, Page
|
||||
|
||||
from . import utils
|
||||
|
||||
|
||||
async def find_login_qrcode(page: Page, selector: str) -> str:
|
||||
"""find login qrcode image from target selector"""
|
||||
@@ -19,8 +22,17 @@ async def find_login_qrcode(page: Page, selector: str) -> str:
|
||||
elements = await page.wait_for_selector(
|
||||
selector=selector,
|
||||
)
|
||||
login_qrcode_img = await elements.get_property("src") # type: ignore
|
||||
return str(login_qrcode_img)
|
||||
login_qrcode_img = str(await elements.get_property("src")) # type: ignore
|
||||
if "http://" in login_qrcode_img or "https://" in login_qrcode_img:
|
||||
async with httpx.AsyncClient(follow_redirects=True) as client:
|
||||
utils.logger.info(f"[find_login_qrcode] get qrcode by url:{login_qrcode_img}")
|
||||
resp = await client.get(login_qrcode_img, headers={"User-Agent": get_user_agent()})
|
||||
if resp.status_code == 200:
|
||||
image_data = resp.content
|
||||
base64_image = base64.b64encode(image_data).decode('utf-8')
|
||||
return base64_image
|
||||
raise Exception(f"fetch login image url failed, response message:{resp.text}")
|
||||
return login_qrcode_img
|
||||
|
||||
except Exception as e:
|
||||
print(e)
|
||||
@@ -29,7 +41,8 @@ async def find_login_qrcode(page: Page, selector: str) -> str:
|
||||
|
||||
def show_qrcode(qr_code) -> None: # type: ignore
|
||||
"""parse base64 encode qrcode image and show it"""
|
||||
qr_code = qr_code.split(",")[1]
|
||||
if "," in qr_code:
|
||||
qr_code = qr_code.split(",")[1]
|
||||
qr_code = base64.b64decode(qr_code)
|
||||
image = Image.open(BytesIO(qr_code))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user