V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
Natsumoku
V2EX  ›  分享创造

将 Steam 愿望单物品的发售日期导入/同步至各大日历应用

  •  2
     
  •   Natsumoku · 2021-12-12 16:45:32 +08:00 · 1392 次点击
    这是一个创建于 1076 天前的主题,其中的信息可能已经有所发展或是发生改变。

    简介

    Python 脚本配合 GitHub Actions 实现定时把 Steam 账号愿望单上的发售日做成公开的 ICS 文件,然后就可以被各个日历 App 通过 URL 订阅了(也可以一次性地导入)。据我所知 Google Calendar ,Apple Calendar ,Outlook ,滴答清单等都支持 URL 订阅,只是同步速度有快有慢。

    这是 Google Calendar 的效果图,每个事件内会有游戏的商店链接: Calendar Preview

    使用

    GitHub: https://github.com/icue/SteamWishlistCalendar

    使用说明(不在此赘述): https://github.com/icue/SteamWishlistCalendar/wiki/%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E

    唯一需要注意的地方是 yml 文件里存的是我自己的 Steam ID ,拿来用的话需要改一下。

    写这个脚本的时候还顺带用 matplotlib 根据历史数据画了统计图(当然,只有用这个脚本跑过的那些天会有数据,所以第一次跑的话 x 轴上只会有一个日期,不过也可以手动捏造之前的数据):

    Wishlist History

    Wishlist History Stack Plot

    几个有意思的地方

    脚本会遇到各种格式、各种书写习惯的发售日,我选用的一个叫 dateparser 的包挺强大的,中文也好英文也好,许多日期都能被正确地识别;而对于一些模糊的发售日,我制定了一些规则,试着把它们转为某一个确定的、相对合理的日期。比如 Early 2022 会被替换成 2022 年 3 月; Summer 会被替换成 6 月; Q4 会被替换成 11 月,等等。然后将 dateparser 设置为“偏向未来”,就能把只说明月份未说明哪天的日期一律视为月底。

    也有一些“黑名单”字段,一旦遇到就跳过,比如“TBD”,“When it's done”等。

    另外,在这里使用版本管理的另一个好处是,可以通过 GitHub action 的 commit 记录来观察哪些游戏(悄悄地)更改了发售日期。

    4 条回复    2021-12-14 22:47:26 +08:00
    LuciusChen
        1
    LuciusChen  
       2021-12-12 17:04:29 +08:00
    不能用,用了钱包守不住。
    MonkeyJon
        2
    MonkeyJon  
       2021-12-13 09:54:28 +08:00
    不能够,发售就买,除非是真粉
    lylsh1993
        3
    lylsh1993  
       2021-12-14 21:40:28 +08:00 via iPhone
    更简单的是楼主做个日历我们直接订阅😅😅😅
    Natsumoku
        4
    Natsumoku  
    OP
       2021-12-14 22:47:26 +08:00
    @lylsh1993 我的这个 repo 里已经有存着我自己愿望单的日历了,是公开的,所以谁都可以订阅。不过我猜你的意思是人们提供自己的 steam ID ,然后去某个网站或者 app 里一键生成可订阅日历的 URL ?是个可拓展的方向,虽然实现起来会麻烦好多
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2453 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 01:07 · PVG 09:07 · LAX 17:07 · JFK 20:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.