用Go语言写了个追剧助手,结果它天天催我看365dni第二季多多视频

我这个人,追剧全靠缘分说实话,我这个人追剧没什么章法,前阵子朋友圈都在刷《365dni第二季》,多多视频上好像有资源,但我那会儿...

用Go语言写了个追剧助手,结果它天天催我看365dni第二季多多视频

我这个人,追剧全靠缘分

说实话,我这个人追剧没什么章法,前阵子朋友圈都在刷《365dni第二季》,多多视频上好像有资源,但我那会儿正忙着写代码,根本没空理会,直到有一天,我发现自己写的那个Go语言爬虫脚本——本来是用来抓天气数据的——不小心被我改成了抓取视频更新提醒的小工具。

有意思的事情发生了。

它开始每天早上八点准时提醒我:“《365dni第二季》在多多视频更新了第X集,你还没看。”开头几天我直接无视,但到了第五天,我实在扛不住了,正好手上项目告一段落,就点开了多多视频,结果……好家伙,一口气看到凌晨两点。 用Go写个“追剧提醒器”能有多丝滑?

先说一下这个脚本的思路

我用的就是最基础的Go标准库,加一个简单的HTTP请求去抓多多视频的页面状态,逻辑很简单:

  1. 定时任务:用time.Ticker,每隔6小时跑一次。
  2. 请求页面:用net/httpclient.Get,模拟浏览器请求。
  3. 关键词匹配:用strings.Contains检查页面HTML里是否出现了“365dni第二季”和“更新”字样。
  4. 推送提醒:发现更新就调用Linux的notify-send弹窗,顺便把标题写进一个log文件。

代码如下(简化版,别喷我变量名随便起):

package main
import (
    "fmt"
    "net/http"
    "strings"
    "time"
)
func checkUpdate() {
    url := "https://DuoDuoVideo.example.com/search?q=365dni第二季"
    client := &http.Client{Timeout: 10 * time.Second}
    resp, err := client.Get(url)
    if err != nil {
        fmt.Println("请求失败:", err)
        return
    }
    defer resp.Body.Close()
    body := make([]byte, resp.ContentLength)
    resp.Body.Read(body)
    content := string(body)
    if strings.Contains(content, "更新") && strings.Contains(content, "365dni") {
        fmt.Println("🎉 发现更新!快去多多视频看《365dni第二季》")
    } else {
        fmt.Println("😴 暂时没有更新,继续等。")
    }
}
func main() {
    ticker := time.NewTicker(6 * time.Hour)
    defer ticker.Stop()
    for range ticker.C {
        checkUpdate()
    }
}

这段代码跑起来,我在终端里就能看到它每天跟我汇报“没更新”或者“更新了”,虽然丑,但胜在实用。

Go语言给我上了一课

你以为事情就这么顺利?天真

第二周,我发现脚本开始疯狂报错,打开log一看,全是“403 Forbidden”——多多视频页面做了反爬,把我这憨憨的默认User-Agent给挡了。

我只好加了正常的浏览器头:

req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36")

这下能抓了,但问题又来了——页面渲染是JavaScript动态加载的,我抓到的HTML里压根没有“更新”这俩字,全在JS脚本里。

换个思路:直接抓视频接口

一怒之下,我决定换个策略,不抓页面了,而是直接看多多视频的前端接口,按F12打开开发者工具,看它网络请求里哪个接口返回了剧集列表,找到之后,用Go的encoding/json解析返回数据,直接判断是否有新的分集。

这下稳了。

接口返回的JSON结构大概长这样:

{
  "code": 0,
  "data": {
    "series": "365dni第二季",
    "episodes": [
      {"num": 1, "title": "重逢之吻"},
      {"num": 2, "title": "禁忌之约"}
    ]
  }
}

我只需要解析出episodes的长度,如果比昨天记录的长度大,就说明更新了,逻辑清晰,代码也不复杂。

表格时间:我踩过的坑 vs 解决办法

表现 解决办法
默认User-Agent被拦 返回403 伪造浏览器UA
接口偶尔超时 请求卡死 设置Timeout,加重试机制
剧集更新不规律 提醒时机不对 改成每3小时检查一次,且只提示一次

顺便聊聊这部剧本身

既然提到《365dni第二季》,多说一嘴,第一季那剧情大家都懂,就是那种“霸道总裁爱上我”的意大利风味,第二季说实话,节奏更疯了,多了不少新角色,而且Laura和Massimo的矛盾升级,看得我血压忽高忽低。

多多视频上清晰度还不错,弹幕也热闹,弹幕里都在刷“这男主也太会了”或者“编剧别虐了”,我写着代码的时候偶尔瞄一眼,差点笑出声。

Go语言这个“工具”到底好不好用?

回到正题,用Go写这种小工具,我的真实感受是:

  • 优点:部署简单,交叉编译方便(直接GOOS=linux go build扔服务器上跑);内存占用低(跑了一周,稳定在20MB以内);标准库够用,不需要引第三方包。
  • 缺点:写业务逻辑还好,但要是想搞复杂UI或者带界面,那得换别的语言,不过对后台脚本来说,Go确实舒服。

现在这个脚本已经陪我追完了第二季的前八集,目前正在等第九集,每天它弹窗提醒我“更新啦”的时候,我倒有点期待了——不是为了剧,其实是为了看它那行字“🎉 发现更新!快去多多视频看《365dni第二季》”,莫名有种仪式感。

生活不就是这样吗

你看,我用两天时间写了个追剧提醒器,结果它比我勤快,它提醒我看剧,我给它留了一堆TODO注释(增加多平台支持”“推送通知到手机”),照这个节奏,估计第三季开播的时候,这个Go脚本还能升级到能自动播放片头曲。

但你说值不值?我觉得值,毕竟你学会了Go的HTTP请求、JSON解析、定时任务,还顺便追完了剧,这不就是一石二鸟吗。

好了,赶紧去多多视频看看今天有没有更新吧,反正我的脚本跟你的期待一样——不知道啥时候会动一下,但总有惊喜。

本文来自作者[kyadmin]投稿,不代表be365立场,如若转载,请注明出处:http://hljbesthome.com/qiche/2375.html

(16)

文章推荐

发表回复

本站作者才能评论

评论列表(4条)

  • kyadmin
    kyadmin 2026-08-19

    我是be365的签约作者“kyadmin”!

  • kyadmin
    kyadmin 2026-08-19

    希望本篇文章《用Go语言写了个追剧助手,结果它天天催我看365dni第二季多多视频》能对你有所帮助!

  • kyadmin
    kyadmin 2026-08-19

    本站[be365]内容主要涵盖:be365,be365网站,be365网址,ball365体育,Be365排名

  • kyadmin
    kyadmin 2026-08-19

    本文概览:我这个人,追剧全靠缘分说实话,我这个人追剧没什么章法,前阵子朋友圈都在刷《365dni第二季》,多多视频上好像有资源,但我那会儿...

    联系我们

    工作时间:周一至周五,9:30-18:30,节假日休息

    关注我们