Ailitonia / omega-miya

基于 nonebot2 的多平台机器人
MIT License
272 stars 50 forks source link

Future: 更多的图库作品收集渠道 #155

Open wse320 opened 2 months ago

wse320 commented 2 months ago

src/plugins/omega_sign_in/helpers.py文件中

async def get_signin_top_image() -> "CollectedArtwork":
    """从数据库获取一张生成签到卡片用的头图"""
    random_artworks = await get_artwork_collection_type().query_any_origin_by_condition(
        keywords=None, origin=sign_in_config.signin_plugin_top_image_origin, num=5,
        allow_classification_range=(2, 3), allow_rating_range=(0, 0), ratio=1
    )

    # 因为图库中部分图片可能因为作者删稿失效, 所以要多随机几个备选
    for artwork in random_artworks:
        try:
            logger.debug(artwork)
            collected_artwork = get_artwork_collection(artwork=artwork)
            await collected_artwork.artwork_proxy.get_page_file()
            return collected_artwork
        except Exception as e:
            logger.warning(f'getting artwork(origin={artwork.origin}, aid={artwork.aid}) page file failed, {e}')
            continue

    raise RuntimeError('all attempts to fetch artwork resources have failed')

allow_rating_range=(0, 0)参数设置为只有0,但是目前从pixiv获取到的图片存在数据库中是-1 1 3三种数值,导致sql查询结果为空,签到失败。改为allow_rating_range=(-1,3)之后可以正常签到了(只是有R18风险)

Ailitonia commented 2 months ago

仓库提供了一份图库数据, 你可以下载后使用 Navicat、DataGrip 等数据库工具导入使用

自动获取的图片数据我还在没想好要怎么自动分级, 目前还是以手动导入为主

wse320 commented 2 months ago

仓库提供了一份图库数据, 你可以下载后使用 Navicat、DataGrip 等数据库工具导入使用

~自动获取的图片数据我还在没想好要怎么自动分级, 目前还是以手动导入为主~

~我筛选了一下数据发现带R-18tag的rating基本都是3,设置范围-1,2可以获得一堆不露点的涩图~

Ailitonia commented 2 months ago

我筛选了一下数据发现带R-18tag的rating基本都是3,设置范围-1,2可以获得一堆不露点的涩图

因为图片分级分类字段就是这样定义的呀

https://github.com/Ailitonia/omega-miya/blob/9b66fa8d203609e5971c2740d178c0105153bc01/README.md?plain=1#L97-L115

Ailitonia commented 2 months ago

目前图库仍然以人工筛选和录入为主,网上能找到的图片 API 也大多直接提供图片而不会提供图片作品来源,自动化收集目前仍存在局限

目前主要有以下几个改进方向:

  1. 优化导入机制,新增一套可视化的图片人工筛选和导入工具(已经做了一半了)
  2. 找找还有没有其他能提供来源的第三方图片 API
  3. 优化一下 Pivix 自带的探索和首页推荐,设计一套指标自动分类图片(不太靠谱)

总之,图库内容还有分类本来就是受个人主观影响很大的东西,图库扩充也是一项长期的用爱发电的工作,自动收集和分类的怎么都比不过自己 xp 的直觉