[{"data":1,"prerenderedAt":68},["ShallowReactive",2],{"content:\u002Farticles:5888":3},{"item":4,"md":15,"html":16,"menu":17,"excerpt":38,"related":39},{"title":5,"len":6,"tags":7,"id":9,"time":10,"modifyTime":11,"showComments":12,"encrypt":13,"customSlug":14},"自动推送epic免费游戏到邮箱\u002FGotify",2054,[8],"python",5888,1680683109285,1745297217637,true,false,"",null,"\u003Cdiv data-marked-line=\"1\" class=\"container-block tip\">\n                    \u003Cp class=\"container-title\">众所周知\u003C\u002Fp>\n                    \u003Cp>&emsp;&emsp;epic常年有免费游戏赠送，其中不乏一些大作，我可以不玩，但是必须喜加一！之前我通过RSS订阅，发现RSS作者偶尔也断更，我便做了一个python小脚本自动爬取epic的数据，推送到自己的邮箱\u002FGotify。\u003C\u002Fp>\n\n                  \u003C\u002Fdiv>\u003Ch1 data-marked-line=\"4\">\u003Csup class=\"fake-head\" id=\"%E5%AE%9E%E9%99%85%E6%95%88%E6%9E%9C\">\u003C\u002Fsup>\u003Ca class=\"header-link\" href=\"#%E5%AE%9E%E9%99%85%E6%95%88%E6%9E%9C\">实际效果\u003C\u002Fa>\u003C\u002Fh1>\u003Cp data-marked-line=\"5\">\u003Cspan class=\"image-container\">\u003Cimg data-viewer alt=\"邮件\" title=\"邮件\" src=\"https:\u002F\u002Fr2-blog.yunyuyuan.net\u002FZnMqTJDFLpdV5ey.png\"\u002F>\u003Csmall class=\"desc\">邮件\u003C\u002Fsmall>\u003C\u002Fspan>\n\u003Cspan class=\"image-container just-height\">\u003Cimg data-viewer alt=\"Gotify\" title=\"Gotify\" style=\"height: 50vh !important;\" src=\"https:\u002F\u002Fr2-blog.yunyuyuan.net\u002FqyFb2fEpow1TcYh.jpg\"\u002F>\u003Csmall class=\"desc\">Gotify\u003C\u002Fsmall>\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch1 data-marked-line=\"8\">\u003Csup class=\"fake-head\" id=\"%E5%8A%9F%E8%83%BD\">\u003C\u002Fsup>\u003Ca class=\"header-link\" href=\"#%E5%8A%9F%E8%83%BD\">功能\u003C\u002Fa>\u003C\u002Fh1>\u003Cul data-marked-line=\"9\">\n\u003Cli>调用epic官方接口，获取免费游戏列表。目前是\u003Cspan style=\"text-decoration: underline\">https:\u002F\u002Fstore-site-backend-static-ipv4.ak.epicgames.com\u002FfreeGamesPromotions?locale=zh-CN&amp;country=CN&amp;allowCountries=CN\u003C\u002Fspan>。\u003C\u002Fli>\n\u003Cli>自动剔除已推送过的游戏，不会重复推送。\u003C\u002Fli>\n\u003Cli>若之前推送的游戏是\u003Ccode>未开始\u003C\u002Fcode>状态，那么游戏在开始免费时，会再推送一次\u003Ccode>进行中\u003C\u002Fcode>。\u003Ccode>进行中\u003C\u002Fcode>的游戏可以领取。\u003C\u002Fli>\n\u003Cli>点击游戏标题，直接跳转到游戏详情。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch1 data-marked-line=\"14\">\u003Csup class=\"fake-head\" id=\"%E4%BD%BF%E7%94%A8%E6%96%B9%E5%BC%8F\">\u003C\u002Fsup>\u003Ca class=\"header-link\" href=\"#%E4%BD%BF%E7%94%A8%E6%96%B9%E5%BC%8F\">使用方式\u003C\u002Fa>\u003C\u002Fh1>\u003Cp data-marked-line=\"15\">&emsp;&emsp;代码地址: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fyunyuyuan\u002Fepic-free-push#quick-start\" target=\"_blank\">https:\u002F\u002Fgithub.com\u002Fyunyuyuan\u002Fepic-free-push\u003C\u002Fa>。\u003C\u002Fp>\n\u003Ch3 data-marked-line=\"17\">\u003Csup class=\"fake-head\" id=\"%E6%96%B9%E6%B3%95%E4%B8%80:%20Github%20Actions%EF%BC%88%E6%8E%A8%E8%8D%90%EF%BC%89\">\u003C\u002Fsup>\u003Ca class=\"header-link\" href=\"#%E6%96%B9%E6%B3%95%E4%B8%80:%20Github%20Actions%EF%BC%88%E6%8E%A8%E8%8D%90%EF%BC%89\">方法一: Github Actions（推荐）\u003C\u002Fa>\u003C\u002Fh3>\u003Cp data-marked-line=\"18\">&emsp;&emsp;Github Actions提供代码执行功能（每月免费使用2000分钟），我写了一个action，只需配置好自己的推送方式，它就能自动每天执行一次。具体步骤如下。\u003C\u002Fp>\n\u003Col data-marked-line=\"19\">\n\u003Cli>fork上面的epic-free-push项目。\u003C\u002Fli>\n\u003Cli>新建三个Action secrets：\u003Cul data-marked-line=\"21\">\n\u003Cli>\u003Cspan style=\"text-decoration: underline\">ENV_VARS\u003C\u002Fspan>: 环境变量，用来推送消息，目前有两种方式（可以只用一种，也可以都用）:\u003Cul data-marked-line=\"22\">\n\u003Cli>\u003Cspan style=\"color: red\">(新)\u003C\u002Fspan> \u003Ca href=\"https:\u002F\u002Fgotify.net\u002Fdocs\u002F\" target=\"_blank\">Gotify\u003C\u002Fa>方式\u003Cul data-marked-line=\"23\">\n\u003Cli>\u003Cstrong>GOTIFY_URL\u003C\u002Fstrong>: Gotify的服务地址\u003C\u002Fli>\n\u003Cli>\u003Cstrong>GOTIFY_TOKEN\u003C\u002Fstrong>: Gotify app的token\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>邮件方式\u003Cul data-marked-line=\"26\">\n\u003Cli>\u003Cstrong>ADDRESS\u003C\u002Fstrong>: 邮箱\u003C\u002Fli>\n\u003Cli>\u003Cstrong>CODE\u003C\u002Fstrong>: SMTP授权码（SMTP授权码需要自己获取，qq邮箱请参考\u003Ca href=\"https:\u002F\u002Fservice.mail.qq.com\u002Fdetail\u002F0\u002F75\" target=\"_blank\">这里\u003C\u002Fa>）\u003Cspan class=\"image-container\">\u003Cimg data-viewer alt=\"ENV_VARS\" title=\"ENV_VARS\" src=\"https:\u002F\u002Fr2-blog.yunyuyuan.net\u002FvQmoZLqKzCBdksD.png\"\u002F>\u003Csmall class=\"desc\">ENV_VARS\u003C\u002Fsmall>\u003C\u002Fspan>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\u003Cspan style=\"text-decoration: underline\">GH_TOKEN\u003C\u002Fspan>: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsettings\u002Ftokens\u002Fnew\" target=\"_blank\">新建一个github token\u003C\u002Fa>，权限范围选择repo和gist。\u003C\u002Fli>\n\u003Cli>\u003Cspan style=\"text-decoration: underline\">GIST_ID\u003C\u002Fspan>: \u003Ca href=\"https:\u002F\u002Fgist.github.com\u002F\" target=\"_blank\">新建一个gist\u003C\u002Fa>，文件名输入\u003Ccode>passed.json\u003C\u002Fcode>，内容填入一个空数组\u003Ccode>[]\u003C\u002Fcode>。新建完成后复制url里的32位id。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp data-marked-line=\"31\">&emsp;&emsp;GH_TOKEN和GIST_ID用来操作gist存储已经推送过的游戏。GH_TOKEN另外用来给action保活。\u003C\u002Fp>\n\u003Ch3 data-marked-line=\"32\">\u003Csup class=\"fake-head\" id=\"%E6%96%B9%E6%B3%95%E4%BA%8C:%20%E8%87%AA%E5%B7%B1%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8\">\u003C\u002Fsup>\u003Ca class=\"header-link\" href=\"#%E6%96%B9%E6%B3%95%E4%BA%8C:%20%E8%87%AA%E5%B7%B1%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8\">方法二: 自己的服务器\u003C\u002Fa>\u003C\u002Fh3>\u003Cp data-marked-line=\"33\">&emsp;&emsp;如果你要在自己的服务器上使用，方法如下。\u003C\u002Fp>\n\u003Col data-marked-line=\"34\">\n\u003Cli>确保服务器已经安装\u003Ccode>Python 3.x\u003C\u002Fcode>。\u003C\u002Fli>\n\u003Cli>拉取代码：\u003Cpre data-marked-line=\"36\" data-lang=\"sh\" data-shiki>\u003Ccode class=\"language-sh\">\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#61AFEF\">git\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> clone\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> git@github.com:yunyuyuan\u002Fepic-free-push.git\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;--shiki-dark:#56B6C2\">cd\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> epic-free-push\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#61AFEF\">pip\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> install\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5;--shiki-dark:#D19A66\"> -r\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> requirement.txt\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#61AFEF\">cp\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> .env.sample\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> .env\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fli>\n\u003Cli>使用crontab配置每天执行一次：\u003Cpre data-marked-line=\"43\" data-lang=\"sh\" data-shiki>\u003Ccode class=\"language-sh\">\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#61AFEF\">crontab\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5;--shiki-dark:#D19A66\"> -e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre> 增加下面的内容\u003Cpre data-marked-line=\"47\" data-lang=\"sh\" data-shiki>\u003Ccode class=\"language-sh\">\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#61AFEF\">0\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5;--shiki-dark:#D19A66\"> 0\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5;--shiki-dark:#E5C07B\"> *\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5;--shiki-dark:#E5C07B\"> *\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5;--shiki-dark:#E5C07B\"> *\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> \u002Fpath\u002Fto\u002Fpython\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> \u002Fpath\u002Fto\u002Fepic-free-push\u002Fmain.py\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp data-marked-line=\"51\">以上两种方法二选一，完成后，如果有新上架的免费游戏，则会收到一条通知（邮件的发件人也是该邮箱，相当于自己发邮件给自己）。\u003C\u002Fp>\n\u003Ch3 data-marked-line=\"53\">\u003Csup class=\"fake-head\" id=\"%E6%AD%A4%E5%A4%96\">\u003C\u002Fsup>\u003Ca class=\"header-link\" href=\"#%E6%AD%A4%E5%A4%96\">此外\u003C\u002Fa>\u003C\u002Fh3>\u003Cp data-marked-line=\"54\">&emsp;&emsp;有这种\u003Ca href=\"https:\u002F\u002Fhub.docker.com\u002Fr\u002Fcharlocharlie\u002Fepicgames-freegames\" target=\"_blank\">docker\u003C\u002Fa>，可以自动下单免费游戏，我试过体验不好，授权登录epic后，第二天要再次授权，比较麻烦，估计是触发了epic的风控。\u003C\u002Fp>\n",[18,22,25,28,32,35],{"size":19,"text":20,"url":21},"big","实际效果","%E5%AE%9E%E9%99%85%E6%95%88%E6%9E%9C",{"size":19,"text":23,"url":24},"功能","%E5%8A%9F%E8%83%BD",{"size":19,"text":26,"url":27},"使用方式","%E4%BD%BF%E7%94%A8%E6%96%B9%E5%BC%8F",{"size":29,"text":30,"url":31},"small","方法一: Github Actions（推荐）","%E6%96%B9%E6%B3%95%E4%B8%80:%20Github%20Actions%EF%BC%88%E6%8E%A8%E8%8D%90%EF%BC%89",{"size":29,"text":33,"url":34},"方法二: 自己的服务器","%E6%96%B9%E6%B3%95%E4%BA%8C:%20%E8%87%AA%E5%B7%B1%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8",{"size":29,"text":36,"url":37},"此外","%E6%AD%A4%E5%A4%96","众所周知 epic常年有免费游戏赠送，其中不乏一些大作，我可以不玩，但是必须喜加一！之前我通过RSS订阅，发现RSS作者偶尔也断更，我便做了一个python小脚本自动爬取epic的数据，推送到自己的邮箱\u002FGotify。 实际效果 ![Gotify[ x 50vh]](https:\u002F\u002Fr2-blog.…",[40,51,60],{"item":41,"count":50},{"title":42,"len":43,"tags":44,"id":47,"time":48,"modifyTime":49,"encrypt":13,"showComments":12,"customSlug":14},"树莓派监控摄像头制作",1673,[45,8,46],"树莓派","前端",1010,1669896775319,1679559691141,1,{"item":52,"count":50},{"title":53,"len":54,"tags":55,"id":57,"time":58,"modifyTime":59,"encrypt":13,"showComments":12,"customSlug":14},"树莓派桌面小屏",1678,[45,56,8],"vue",8442,1645457432535,1685333435027,{"item":61,"count":50},{"title":62,"len":63,"tags":64,"id":65,"time":66,"modifyTime":67,"encrypt":13,"showComments":12,"customSlug":14},"批量重命名工具",1094,[8],9732,1611155951873,1679560088704,1793351207895]