Contents

用 Flexget 抓取蜜柑計畫新番動畫的簡單方法

最近發現了一個比動漫花園更好用的網站 mikanani.me,這裡分享一個方便設定 Flexget 的腳本,讓你可以自動下載新番。

Flexget 安裝

可參考我過去這篇文章,安裝好 Flexget;或者直接參考官方文件

UserScript 腳本

安裝暴力猴或 Tampermonkey,然後新增以下腳本:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
// ==UserScript==
// @name        mikanani.me 新番組出 flexget 設定
// @namespace   Violentmonkey Scripts
// @match       https://mikanani.me/Home/Bangumi/*
// @grant       none
// @version     1.0
// @author      -
// @grant    GM_xmlhttpRequest
// @grant    GM_setClipboard
// @description 2024/1/16 下午11:50:50
// ==/UserScript==
// Processed by 繁化姬

// 這邊可以依序喜歡字幕組排順序
let url = `https://${location.host}${$('.mikan-rss[href*=583]').attr('href') ??  $('.mikan-rss[href*=382]').attr('href')  ?? $('.mikan-rss:nth(1)').attr('href')}`
// 選擇元素並獲取日期
let date = $(`.bangumi-info:contains('放送开始')`).text().split(':')[1];

// 將字串轉換成 Date 物件
let dateObj = new Date(date);

// 獲取年份和月份
let year = dateObj.getFullYear();
let month = dateObj.getMonth() + 1;  // getMonth() 從 0 開始計數,所以需要加 1

// 根據月份決定季度
let quarter;
if (month >= 1 && month <= 3) {
    quarter = '01';
} else if (month >= 4 && month <= 6) {
    quarter = '04';
} else if (month >= 7 && month <= 9) {
    quarter = '07';
} else {
    quarter = '10';
}

// 組合成 "YYYYMM" 格式的字串
let formattedDate = year + quarter;

// 你的原始標題
let title = $('.bangumi-title').text().trim();

// 在線的繁簡轉換 API
let api = 'https://api.zhconvert.org/convert?converter=Traditional&text=' + encodeURIComponent(title);

// 使用 GM_xmlhttpRequest 來請求 API
GM_xmlhttpRequest({
    method: "GET",
    url: api,
    onload: function(response) {
        // 解析回應並獲取轉換後的文字
        let convertedText = JSON.parse(response.responseText).data.text;

        // 使用轉換後的文字
        title = convertedText;

        let result = `  "TV-${title}":
    rss:
      url: ${url}
      other_fields: [category]
    accept_all: yes
    template: default
    transmission:
      path: /media/extHDD/Download/TV/${formattedDate}/{{task[3:]}}
    regexp:
      reject:
        - 720p
        - 简(?!繁)
        - \[01-1

        console.log(result);
        GM_setClipboard (result);

    }
});

進去 https://mikanani.me/Home/Bangumi/3354 這個頁面,你的剪貼簿就會有一段 flexget 設定,你可以直接貼到你的 config.yml 裡面。

最後組出來的設定檔大概長這樣:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
  "TV-多數欠":
    rss:
      url: https://mikanani.me/RSS/Bangumi?bangumiId=3361&subgroupid=639
      other_fields: [category]
    accept_all: yes
    template: default
    transmission:
      path: /media/extHDD/Download/TV/202407/{{task[3:]}}
    regexp:
      reject:
        - 720p
        - 简(?!繁)
        - \[01-1

這邊腳本也有做抓取字幕組的優先順序,可以自己調整。

1
2
3
# 這邊可以依序喜歡字幕組排順序
$('.mikan-rss[href*=583]').attr('href') ??  $('.mikan-rss[href*=382]').attr('href')  ?? $('.mikan-rss:nth(1)').attr('href')
# href*=583 是字幕組的編號可以自己調整

RSS 組出 flexget 設定

有時候只想設定某一個字幕組的 RSS,可以用這個腳本:

新進去 RSS 網址,開啟 Console 可複製出 flexget 設定

腳本如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
// ==UserScript==
// @name        New script mikanani.me RSS
// @namespace   Violentmonkey Scripts
// @match       https://mikanani.me/RS/Bangumi?bangumiId=*&subgroupid=*
// @grant       none
// @version     1.0
// @author      -
// @grant    GM_xmlhttpRequest
// @grant    GM_setClipboard
// @description 2024/1/16 下午11:50:50
// ==/UserScript==
// Processed by 繁化姬
let url = location.href;

let dateObj = new Date();
let year = dateObj.getFullYear();
let month = dateObj.getMonth() + 1;
let quarter;
if (month >= 1 && month <= 3) {
    quarter = '01';
} else if (month >= 4 && month <= 6) {
    quarter = '04';
} else if (month >= 7 && month <= 9) {
    quarter = '07';
} else {
    quarter = '10';
}
let formattedDate = year + quarter;
let title = document.querySelector('rss channel title').textContent;
let api = 'https://api.zhconvert.org/convert?converter=Traditional&text=' + encodeURIComponent(title);
GM_xmlhttpRequest({
    method: "GET",
    url: api,
    onload: function(response) {
        let convertedText = JSON.parse(response.responseText).data.text;
        title = convertedText;
        let result = `  "TV-${title}":
    rss:
      url: ${url}
      other_fields: [category]
    accept_all: yes
    template: default
    transmission:
      path: /media/extHDD/Download/TV/${formattedDate}/{{task[3:]}}
    regexp:
      reject:
        - 720p
        - 简(?!繁)
        - \[01-1
        console.log(result);
        GM_setClipboard (result);
    }
});
Tip
這個因為是用 RSS(XML) 無法呼叫GM_setClipboard,但可以去打開開發者工具去 console 複製資料。

其他可用的 AutoBangumi 工具介紹

如果你還沒有使用過 flexget,可以考慮試試看這個 AutoBangumi 工具。不過,由於我已經架設好了其他工具,所以不打算折騰自己了,這裡提供一些參考連結。

相關連結: