Skip to main content

使用skia-python将BiliBili动态渲染为图片

Project description

DynRender-skia

使用skia渲染BiliBili动态 更新页面效果的优先级会很低

注意

Linux用户在导入skia-python包时可能会遇到以下报错

libGL.so.1: cannot open shared object file: No such file or directory

解决方法

ubuntu用户

apt install libgl1-mesa-glx

ArchLinux用户

pacman -S libgl

centos用户

yum install mesa-libGL -y

使用方法

安装必要依赖

pip install dynamicadaptor dynrender-skia

测试

import httpx
import asyncio
import skia
from dynrender.Core import DynRender
from dynamicadaptor.DynamicConversion import formate_message


# 定义异步函数,用于执行Web测试
async def web_test():
    dyn_id = "440646043801479846"
    url = f"https://api.bilibili.com/x/polymer/web-dynamic/v1/detail?timezone_offset=-480&id={dyn_id}&features=itemOpusStyle"
    headers = {
        "referer": f"https://t.bilibili.com/{dyn_id}",
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36"
    }

    # 发起HTTP请求并解析JSON响应
    message_json = httpx.get(url, headers=headers).json()

    # 格式化消息数据
    message_formate = await formate_message("web", message_json["data"]["item"])

    # 使用DynRender执行动态渲染
    img = await DynRender().run(message_formate)

    # 将渲染后的图像转换为Skia Image对象
    img = skia.Image.fromarray(img, colorType=skia.ColorType.kRGBA_8888_ColorType)

    # 保存图像为PNG文件
    img.save("1.png")


# 当文件作为主程序执行时
if __name__ == "__main__":
    asyncio.run(web_test())

效果展示

示例图片

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dynrender_skia_opt-0.3.8.tar.gz (366.9 kB view details)

Uploaded Source

Built Distribution

dynrender_skia_opt-0.3.8-py3-none-any.whl (371.0 kB view details)

Uploaded Python 3

File details

Details for the file dynrender_skia_opt-0.3.8.tar.gz.

File metadata

  • Download URL: dynrender_skia_opt-0.3.8.tar.gz
  • Upload date:
  • Size: 366.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: pdm/2.8.2 CPython/3.10.12

File hashes

Hashes for dynrender_skia_opt-0.3.8.tar.gz
Algorithm Hash digest
SHA256 bf403100175ba2347d185e1ecb5c4a216cfcc27d4b291e01026851e45535470e
MD5 c24f36a4656e1ad04c8f12c8da2454e8
BLAKE2b-256 fc16204a44b27b293ae6524898ded0500e18df2eee208ea3f956be22bff4d5e6

See more details on using hashes here.

File details

Details for the file dynrender_skia_opt-0.3.8-py3-none-any.whl.

File metadata

File hashes

Hashes for dynrender_skia_opt-0.3.8-py3-none-any.whl
Algorithm Hash digest
SHA256 6bb3417b0a504642e36e130fb0e0ed9fc4da6e13ab54adba0da0f46d19422bbf
MD5 6b0d4a7794ebfdbc98af55e3b48cc6ad
BLAKE2b-256 c621d532f470accb898bbd7bc817fd1eec0c057420dae1ca0c0a5cd3bb71c911

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page