'use strict'; const simptrad = require('simptrad'); const zod = require('zod'); const version = "0.3.0"; function normalizeTitle(title) { return simptrad.fullToHalf(simptrad.tradToSimple(title)); } async function retryFn(fn, count) { if (count < 0) { count = Number.MAX_SAFE_INTEGER; } let e; for (let i = 0; i < count; i++) { try { return await fn(); } catch (err) { e = err; } } throw e; } const QueryType = { \u52A8\u753B: "\u52D5\u756B", \u5B63\u5EA6\u5168\u96C6: "\u5B63\u5EA6\u5168\u96C6", \u97F3\u4E50: "\u97F3\u6A02", \u52A8\u6F2B\u97F3\u4E50: "\u52D5\u6F2B\u97F3\u6A02", \u540C\u4EBA\u97F3\u4E50: "\u540C\u4EBA\u97F3\u6A02", \u6D41\u884C\u97F3\u4E50: "\u6D41\u884C\u97F3\u6A02", \u65E5\u5267: "\u65E5\u5287", RAW: "\uFF32\uFF21\uFF37", \u5176\u4ED6: "\u5176\u4ED6", \u6F2B\u753B: "\u6F2B\u756B", \u6E2F\u53F0\u539F\u7248: "\u6E2F\u53F0\u539F\u7248", \u65E5\u6587\u539F\u7248: "\u65E5\u6587\u539F\u7248", \u6E38\u620F: "\u904A\u6232", \u7535\u8111\u6E38\u620F: "\u96FB\u8166\u904A\u6232", \u4E3B\u673A\u6E38\u620F: "\u96FB\u8996\u904A\u6232", \u638C\u673A\u6E38\u620F: "\u638C\u6A5F\u904A\u6232", "\u7F51\u7EDC\u6E38\u620F ": "\u7DB2\u7D61\u904A\u6232", \u6E38\u620F\u5468\u8FB9: "\u904A\u6232\u5468\u908A", \u7279\u6444: "\u7279\u651D" }; const AllFansubs = [ { provider: "dmhy", providerId: "18", name: "\u52D5\u6F2B\u82B1\u5712\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "22", name: "\u97F3\u6A02@\u82B1\u5712" }, { provider: "dmhy", providerId: "24", name: "ReSeeD@\u82B1\u5712" }, { provider: "dmhy", providerId: "27", name: "\u661F\u7EC4@\u82B1\u5712" }, { provider: "dmhy", providerId: "28", name: "\u6953\u7D44@\u82B1\u5712" }, { provider: "dmhy", providerId: "29", name: "T3@\u82B1\u5712" }, { provider: "dmhy", providerId: "30", name: "\u5149\u4E4B\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "31", name: "\u5361\u901A\u7A7A\u9593" }, { provider: "dmhy", providerId: "32", name: "SOSG\u5B57\u5E55\u56E2" }, { provider: "dmhy", providerId: "34", name: "\u6953\u96EA\u9023\u8F09\u88FD\u4F5C" }, { provider: "dmhy", providerId: "36", name: "\u6D41\u9CF4\u806F\u5408\u672C\u5C45" }, { provider: "dmhy", providerId: "37", name: "\u96EA\u98C4\u5DE5\u4F5C\u5BA4(FLsnow)" }, { provider: "dmhy", providerId: "40", name: "\u4F0A\u59B9\u5152\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "41", name: "HKG\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "44", name: "08MV\u5C0F\u968A" }, { provider: "dmhy", providerId: "45", name: "\u9748\u98A8FOSKY\u5DE5\u4F5C\u5BA4" }, { provider: "dmhy", providerId: "47", name: "\u7231\u604B\u5B57\u5E55\u793E" }, { provider: "dmhy", providerId: "49", name: "\u534E\u76DF\u5B57\u5E55\u793E" }, { provider: "dmhy", providerId: "51", name: "I've\u5DE5\u4F5C\u5BA4" }, { provider: "dmhy", providerId: "52", name: "\u4E2D\u570B\u52D5\u7269\u5712" }, { provider: "dmhy", providerId: "53", name: "KFC\u7279\u5275\u7D44" }, { provider: "dmhy", providerId: "54", name: "MC\u65E5\u5287\u5B57\u5E55\u7D44(MCS)" }, { provider: "dmhy", providerId: "57", name: "\u6708\u5149\u604B\u66F2\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "58", name: "\u6F84\u7A7A\u5B66\u56ED" }, { provider: "dmhy", providerId: "59", name: "X2\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "60", name: "W-zone\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "63", name: "\u7435\u7436\u884C\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "66", name: "GZone Anime" }, { provider: "dmhy", providerId: "70", name: "JPOPPV\u8054\u76DF" }, { provider: "dmhy", providerId: "71", name: "OUR\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "72", name: "\u72FC\u96C6\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "75", name: "\u67EF\u5357\u4E8B\u52A1\u6240" }, { provider: "dmhy", providerId: "76", name: "#CHAT RUMBLE#" }, { provider: "dmhy", providerId: "77", name: "H&C\u63A8\u5E7F\u7AD9" }, { provider: "dmhy", providerId: "78", name: "\u5B89\u9054\u5145\u4E3B\u984C\u8AD6\u58C7" }, { provider: "dmhy", providerId: "79", name: "NGMFans" }, { provider: "dmhy", providerId: "81", name: "\u6C38\u6052\u52A8\u6F2B" }, { provider: "dmhy", providerId: "82", name: "3DH\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "83", name: "\u96EA\u6708\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "86", name: "\u6F2B\u5A31\u8BBA\u575B" }, { provider: "dmhy", providerId: "88", name: "\u52A8\u97F3\u6F2B\u5F71" }, { provider: "dmhy", providerId: "89", name: "\u6F2B\u7FD4\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "90", name: "\u6076\u9B54\u5C9B\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "92", name: "VGMU" }, { provider: "dmhy", providerId: "94", name: "C2Club" }, { provider: "dmhy", providerId: "95", name: "JPSEEK" }, { provider: "dmhy", providerId: "96", name: "\u6E05\u98A8\u6714\u9234" }, { provider: "dmhy", providerId: "99", name: "DMS\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "103", name: "\u7AF9\u96F6\u5B57\u5E55" }, { provider: "dmhy", providerId: "104", name: "\u52A8\u6F2B\u5148\u950B" }, { provider: "dmhy", providerId: "105", name: "\u5929\u306E\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "106", name: "\u552F\u6613\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "110", name: "\u5929\u9999\u5B57\u5E55\u793E" }, { provider: "dmhy", providerId: "113", name: "Lost Summer\u5DE5\u4F5C\u5BA4" }, { provider: "dmhy", providerId: "117", name: "\u52D5\u6F2B\u82B1\u5712" }, { provider: "dmhy", providerId: "119", name: "\u6708\u821E\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "122", name: "\u6A31\u306E\u840C\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "124", name: "\u6D41\u4E91\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "128", name: "\u7267\u4E91\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "129", name: "\u52A8\u6F2B\u4E4B\u5BB6" }, { provider: "dmhy", providerId: "131", name: "Tsubasa\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "133", name: "\u5929\u5E7B\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "134", name: "\u6F2B\u6E38\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "137", name: "SOSROOM\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "138", name: "\u52A8\u6F2B\u6028\u5FF5\u5C4B" }, { provider: "dmhy", providerId: "140", name: "\u4E2D\u56FD\u5E9F\u67F4\u534F\u4F1A" }, { provider: "dmhy", providerId: "141", name: "WOLF\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "142", name: "\u7A7A\u5883\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "145", name: "\u72D7\u72D7\u5236\u4F5C\u7EC4" }, { provider: "dmhy", providerId: "146", name: "\u5E7B\u5883\u5B57\u5E55\u793E" }, { provider: "dmhy", providerId: "147", name: "\u5965\u76DF\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "148", name: "S.T.R.SubFans" }, { provider: "dmhy", providerId: "151", name: "\u60A0\u54C8C9\u5B57\u5E55\u793E" }, { provider: "dmhy", providerId: "152", name: "\u96EA\u94C3\u52A8\u6F2B\u7EC4" }, { provider: "dmhy", providerId: "153", name: "\u7A7A\u5C9B\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "154", name: "KPDM\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "157", name: "\u66D9\u5149\u793E\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "161", name: "\u60A0\u4E45\u306E\u98A8" }, { provider: "dmhy", providerId: "162", name: "\u6C34\u6676\u6D77\u6C49\u5316\u7EC4" }, { provider: "dmhy", providerId: "163", name: "\u56DB\u53F6\u661F\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "165", name: "\u5FA1\u5B85\u68A6\u57DF" }, { provider: "dmhy", providerId: "167", name: "\u56DE\u98CE\u6C49\u5316\u7EC4" }, { provider: "dmhy", providerId: "168", name: "\u6728\u6728\u5DE5\u4F5C\u5BA4" }, { provider: "dmhy", providerId: "178", name: "\u6563\u6F2B\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "179", name: "\u5915\u552F\u5DE5\u4F5C\u5BA4" }, { provider: "dmhy", providerId: "185", name: "\u6781\u5F71\u5B57\u5E55\u793E" }, { provider: "dmhy", providerId: "191", name: "\u708E\u9E1F\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "193", name: "TAMASHII\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "195", name: "\u5E7B\u6A31\u7802\u4E4B\u56E2(SCST)" }, { provider: "dmhy", providerId: "196", name: "\u7A7A\u7FFC\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "197", name: "\u25C6\u6F2B\u6E38FREEWIND\u5DE5\u4F5C\u5BA4" }, { provider: "dmhy", providerId: "198", name: "\u68A6\u5E7B\u65CB\u5F8B\u266A\u53D1\u5E03\u7EC4" }, { provider: "dmhy", providerId: "199", name: "\u5B66\u9662\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "200", name: "\u72EE\u738B\u6C49\u5316\u7EC4" }, { provider: "dmhy", providerId: "202", name: "\u91CF\u5B50\u52D5\u6F2B\u7EC4" }, { provider: "dmhy", providerId: "206", name: "\u9162\u6D46\u8349\u534F\u4F1A" }, { provider: "dmhy", providerId: "207", name: "BDC\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "209", name: "\u5FD8\u5FE7\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "210", name: "\u52A8\u840C\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "211", name: "\u8537\u8587\u56ED\u52A8\u6F2B" }, { provider: "dmhy", providerId: "214", name: "\u591C\u9732\u601D\u82E6\u6F22\u5316\u7D44" }, { provider: "dmhy", providerId: "215", name: "ACT-SUB" }, { provider: "dmhy", providerId: "216", name: "\u62BD\u98CE\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "217", name: "AQUA\u5DE5\u4F5C\u5BA4" }, { provider: "dmhy", providerId: "218", name: "RP\u5DE5\u4F5C\u5BA4" }, { provider: "dmhy", providerId: "221", name: "\u65E0\u635F\u75AF\u4EBA\u7EC4" }, { provider: "dmhy", providerId: "222", name: "A.I.R.nesSub" }, { provider: "dmhy", providerId: "223", name: "DA\u540C\u97F3\u7231\u6F2B" }, { provider: "dmhy", providerId: "224", name: "\u7EEF\u7A7A\u5B57\u5E55\u793E" }, { provider: "dmhy", providerId: "225", name: "\u9234\u98A8\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "226", name: "\u9ED1\u535A\u7269\u9928" }, { provider: "dmhy", providerId: "227", name: "\u5361\u840C\u52A8\u6F2B" }, { provider: "dmhy", providerId: "228", name: "KRL\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "230", name: "\u7FFC\u306E\u5802\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "231", name: "\u51B0\u5C01\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "234", name: "\u52A8\u6F2BFANS\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "237", name: "\u6A31\u82B1\u98DE\u821E\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "238", name: "\u97F3\u306E\u8C1C\u68EE" }, { provider: "dmhy", providerId: "240", name: "VAXVA" }, { provider: "dmhy", providerId: "241", name: "\u5E7B\u6A31\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "244", name: "\u6307\u5C16\u5976\u8336\u5E94\u63F4\u4F1A" }, { provider: "dmhy", providerId: "245", name: "\u661F\u671F\u4E94\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "248", name: "GCF\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "249", name: "YYeTs\u65E5\u7FFB\u7EC4" }, { provider: "dmhy", providerId: "250", name: "\u5929\u7C41\u5B57\u5E55\u793E" }, { provider: "dmhy", providerId: "251", name: "\u8179\u9ED1\u8054\u76DF" }, { provider: "dmhy", providerId: "252", name: "\u840C\u697C\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "253", name: "\u6B65\u59D0\u52D5\u6F2B" }, { provider: "dmhy", providerId: "254", name: "\u795E\u521B\u8D44\u6E90\u7EC4" }, { provider: "dmhy", providerId: "256", name: "\u9732\u897F\u5F17\u5DE5\u4F5C\u5BA4" }, { provider: "dmhy", providerId: "257", name: "6d\u5B57\u5E55\u793E" }, { provider: "dmhy", providerId: "260", name: "\u9B54\u5F71\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "261", name: "\u672A\u6765\u98CEACG" }, { provider: "dmhy", providerId: "263", name: "\u5149\u8363\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "264", name: "\u840C\u4E4B\u97F3\u4EA4\u6D41\u8AD6\u58C7" }, { provider: "dmhy", providerId: "265", name: "\u7EDD\u671B\u5FA1\u5B85\u53D1\u5E03\u7EC4" }, { provider: "dmhy", providerId: "267", name: "\u4F0A\u604B\u5B57\u5E55\u793E" }, { provider: "dmhy", providerId: "268", name: "2KF\u8CC7\u6E90\u767C\u4F48\u7D44" }, { provider: "dmhy", providerId: "269", name: "\u590D\u6D3B\u57CE&\u732B\u54AA" }, { provider: "dmhy", providerId: "270", name: "\u4EA4\u54CD\u68A6\u5DE5\u574A" }, { provider: "dmhy", providerId: "271", name: "\u5F02\u57DF\u52A8\u6F2B" }, { provider: "dmhy", providerId: "273", name: "\u6F2B\u53CB\u4E4B\u5BB6\u538B\u5236\u7EC4" }, { provider: "dmhy", providerId: "274", name: "\u4E09\u5143\u8272\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "275", name: "\u6F2B\u6E38\u8FDE\u8F7D\u7EC4PSS" }, { provider: "dmhy", providerId: "276", name: "\u840C\u4E4B\u841D\u8389" }, { provider: "dmhy", providerId: "277", name: "\u840C\u97F3\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "279", name: "\u971C\u6708\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "281", name: "\u4F2A\u4E16\u754C\u6C49\u5316\u7EC4" }, { provider: "dmhy", providerId: "282", name: "HKACG\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "283", name: "\u5343\u590F\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "284", name: "\u5FA1\u5B85\u9886\u57DF" }, { provider: "dmhy", providerId: "285", name: "\u53F6\u9690\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "286", name: "\u6A31\u96E8\u5B66\u56ED" }, { provider: "dmhy", providerId: "288", name: "\u8BF8\u795Ekamigami\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "289", name: "\u611B\u73ED\u6F2B\u756B\u793E" }, { provider: "dmhy", providerId: "290", name: "\u4EBA\u4EBA\u5F71\u89C6\u53D1\u5E03\u7EC4" }, { provider: "dmhy", providerId: "293", name: "\u5929\u4F7F\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "294", name: "BTC-Distro" }, { provider: "dmhy", providerId: "295", name: "\u661F\u7A7A\u7F51" }, { provider: "dmhy", providerId: "297", name: "\u7231\u604B\u7814\u4FEE\u793E" }, { provider: "dmhy", providerId: "298", name: "YYK\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "299", name: "\u661F\u5149\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "300", name: "\u5496\u5561\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "301", name: "\u5FCD\u672F\u5B66\u56ED" }, { provider: "dmhy", providerId: "302", name: "\u4F9D\u7F18\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "303", name: "\u52A8\u6F2B\u56FD\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "305", name: "\u591C\u660E\u7409\u7483\u5B57\u5E55\u793E" }, { provider: "dmhy", providerId: "306", name: "\u4E2D\u56FD\u9F99\u73E0\u8BBA\u575B" }, { provider: "dmhy", providerId: "307", name: "masora\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "308", name: "\u6F2B\u53CB\u4E4B\u5BB6\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "309", name: "\u8349\u8393\u5DE5\u4F5C\u7D44" }, { provider: "dmhy", providerId: "310", name: "\u8D85\u76DF\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "311", name: "\u66AE\u79CB\u590F\u591C\u306E\u90E8\u5C4B" }, { provider: "dmhy", providerId: "312", name: "\u52A8\u6F2B\u82B1\u56ED\u52A8\u97F3\u7EC4" }, { provider: "dmhy", providerId: "313", name: "\u56DB\u9B42\u5236\u4F5C\u7EC4" }, { provider: "dmhy", providerId: "314", name: "S\u7FA4\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "315", name: "\u52A8\u6F2B\u5FA1\u5B85" }, { provider: "dmhy", providerId: "316", name: "3DM\u52A8\u6F2B\u7EC4" }, { provider: "dmhy", providerId: "317", name: "\u8B0E\u4E4B\u8072\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "319", name: "OTL\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "320", name: "Sakura Cafe" }, { provider: "dmhy", providerId: "321", name: "\u8F7B\u4E4B\u56FD\u5EA6" }, { provider: "dmhy", providerId: "322", name: "TPTimE\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "324", name: "\u5E0C\u671B\u4E4B\u4E18" }, { provider: "dmhy", providerId: "325", name: "\u4E0D\u9760\u8C31\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "326", name: "Vongola\u5B57\u5E55" }, { provider: "dmhy", providerId: "328", name: "\u661F\u5C18\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "329", name: "\u3086\u304B\u308A\u738B\u56FD\u5BA3\u4F20\u90E8" }, { provider: "dmhy", providerId: "330", name: "v-bird&Eros" }, { provider: "dmhy", providerId: "331", name: "\u96F6\u7FFC\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "332", name: "CureSub" }, { provider: "dmhy", providerId: "333", name: "\u98CE\u5F71\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "334", name: "\u5922\u57DF\u7406\u60F3\u9109" }, { provider: "dmhy", providerId: "335", name: "178\u5728\u7EBF\u52A8\u6F2B" }, { provider: "dmhy", providerId: "336", name: "\u5E7D\u9748\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "337", name: "\u9E92\u9E9FKIRIN\u5DE5\u4F5C\u5BA4" }, { provider: "dmhy", providerId: "338", name: "\u7121\u6839\u4E4B\u6A39\u5206\u4EAB\u7D44" }, { provider: "dmhy", providerId: "339", name: "\u7AE0\u9B5A\u52A8\u6F2B" }, { provider: "dmhy", providerId: "340", name: "R8-Project" }, { provider: "dmhy", providerId: "341", name: "\u4EAC\u9ED1\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "343", name: "\u6606\u4F96\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "344", name: "\u98DE\u6A59\u5B66\u9662" }, { provider: "dmhy", providerId: "345", name: "\u4E0B\u5348\u8336\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "346", name: "\u60C5\u612B\u5F71\u97F3" }, { provider: "dmhy", providerId: "348", name: "ACG" }, { provider: "dmhy", providerId: "349", name: "THK\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "350", name: "HOBBY\u52D5\u6F2B\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "351", name: "PHDOGS!" }, { provider: "dmhy", providerId: "352", name: "\u7334\u56E3\u6C49\u5316\u7EC4" }, { provider: "dmhy", providerId: "353", name: "\u8054\u5408\u52A8\u6F2B" }, { provider: "dmhy", providerId: "354", name: "\u7279\u5225\u653E\u9001" }, { provider: "dmhy", providerId: "355", name: "\u4EE3\u7406\u767C\u5E03\u7D44" }, { provider: "dmhy", providerId: "356", name: "\u50B2\u5B0C\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "357", name: "\u6771\u653B\u9738\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "358", name: "F-Sky\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "359", name: "\u6781\u901F\u5B57\u5E55\u5DE5\u4F5C\u5BA4" }, { provider: "dmhy", providerId: "360", name: "\u5B57\u5E55\u5343\u672C\u685C" }, { provider: "dmhy", providerId: "361", name: "ACG\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "362", name: "\u840C\u6708\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "363", name: "\u685C\u821E\u5B57\u5E55\u793E" }, { provider: "dmhy", providerId: "364", name: "K2\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "365", name: "\u5929\u874E\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "366", name: "\u5F02\u57DF-11\u756A\u5C0F\u961F" }, { provider: "dmhy", providerId: "367", name: "\u590F\u30CE\u7A7A\u6C49\u5316\u534F\u4F1A" }, { provider: "dmhy", providerId: "368", name: "\u767D\u9009\u9986\u6C49\u5316\u7EC4" }, { provider: "dmhy", providerId: "369", name: "\u96EA\u9177\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "370", name: "\u65CB\u98CE\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "371", name: "\u840C\u5E7B\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "372", name: "\u5E7B\u517D\u4E4B\u9A91\u58EB\u56E2" }, { provider: "dmhy", providerId: "373", name: "ANK-Project" }, { provider: "dmhy", providerId: "374", name: "\u7F8E\u6218\u4E4B\u661F\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "375", name: "ANK-Raws" }, { provider: "dmhy", providerId: "376", name: "ACB\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "379", name: "\u52A8\u6F2B\u5DF4\u58EB" }, { provider: "dmhy", providerId: "380", name: "\u732A\u732A\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "381", name: "\u52D5\u97F3\u5F8B" }, { provider: "dmhy", providerId: "383", name: "G-hm" }, { provider: "dmhy", providerId: "384", name: "\u6F2B\u72E9\u6C49\u5316\u7EC4" }, { provider: "dmhy", providerId: "385", name: "\u6F2B\u5F71\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "386", name: "AoiNeko\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "387", name: "CLA\u767C\u4F48\u7D44" }, { provider: "dmhy", providerId: "388", name: "\u7FFC\u4E4B\u68A6\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "389", name: "\u9EA6\u9601\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "390", name: "\u5929\u4F7F\u52A8\u6F2B\u8BBA\u575B" }, { provider: "dmhy", providerId: "391", name: "ZERO\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "392", name: "\u70CF\u8CCA\u767C\u4F48" }, { provider: "dmhy", providerId: "393", name: "\u7D2B\u6708\u767C\u4F48\u7D44" }, { provider: "dmhy", providerId: "394", name: "\u591C\u83BA\u5DE5\u4F5C\u5BA4" }, { provider: "dmhy", providerId: "395", name: "restart\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "396", name: "\u6416\u7C43\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "397", name: "\u5149\u89C1\u5B88ACG\u5BB6\u65CF" }, { provider: "dmhy", providerId: "398", name: "\u5B85\u7ED3\u754C\u6C49\u5316\u7EC4" }, { provider: "dmhy", providerId: "399", name: "\u5E7B\u9F99\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "400", name: "\u5FAE\u7B11\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "401", name: "Astral Union" }, { provider: "dmhy", providerId: "402", name: "\u7C73\u82B1\u5B66\u56ED\u6C49\u5316\u7EC4" }, { provider: "dmhy", providerId: "403", name: "\u8056\u57DF\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "404", name: "\u78A7\u967D\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "405", name: "ACE\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "406", name: "\u540C\u840C\u5DE5\u4F5C\u5BA4" }, { provider: "dmhy", providerId: "407", name: "DHR\u52D5\u7814\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "408", name: "Miga\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "409", name: "\u9ED1\u54AA\u6F2B\u756B\u7D44" }, { provider: "dmhy", providerId: "410", name: "\u52A8\u6F2B\u57CE\u5821\u8BBA\u575B" }, { provider: "dmhy", providerId: "411", name: "\u592A\u53E4\u907A\u7522" }, { provider: "dmhy", providerId: "412", name: "ByConan\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "414", name: "\u56DB\u5B63\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "415", name: "Sphere-HoLic" }, { provider: "dmhy", providerId: "417", name: "\u6AB8\u6AAC\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "418", name: "C.C\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "419", name: "\u4F60\u59B9\u767C\u4F48" }, { provider: "dmhy", providerId: "420", name: "\u6E38\u98CE\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "421", name: "\u590F\u7802\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "422", name: "\u9ED1\u767D\u6620\u753B\u5B57\u5E55\u793E" }, { provider: "dmhy", providerId: "423", name: "\u6F2B\u8C93\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "424", name: "TSDM\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "425", name: "RH\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "426", name: "CureFans\u5C0F\u968A" }, { provider: "dmhy", providerId: "427", name: "FirstLove\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "428", name: "PS900W" }, { provider: "dmhy", providerId: "429", name: "\u542F\u840C\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "430", name: "\u5E7B\u4E4B\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "431", name: "\u52C7\u6C23\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "432", name: "\u81EA\u7531\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "433", name: "\u82B1\u5712\u5967\u7FA9\u793E\u5718" }, { provider: "dmhy", providerId: "434", name: "\u98CE\u4E4B\u5723\u6BBF" }, { provider: "dmhy", providerId: "435", name: "2\u6B21\u5143\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "436", name: "BBA\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "437", name: "\u840C\u7F51" }, { provider: "dmhy", providerId: "438", name: "\u767D\u604B\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "439", name: "\u7E41\u9AD4\u52D5\u756B\u5B57\u5E55\u806F\u76DF" }, { provider: "dmhy", providerId: "440", name: "\u82B1\u898B\u793E" }, { provider: "dmhy", providerId: "441", name: "2DLand\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "443", name: "\u5E7B\u60F3\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "444", name: "\u5149\u4E4B\u56ED\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "446", name: "HSQ-rip\u7D44" }, { provider: "dmhy", providerId: "447", name: "\u5922\u5E7B\u6200\u6AFB" }, { provider: "dmhy", providerId: "448", name: "\u6F2B\u76DF\u4E4B\u5F71\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "449", name: "\u751F\u5F92\u4F1A\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "451", name: "\u542C\u6F7A\u793E" }, { provider: "dmhy", providerId: "452", name: "\u6C50\u67D3\u5B57\u5E55\u793E" }, { provider: "dmhy", providerId: "453", name: "\u5929\u7A7A\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "454", name: "\u98CE\u8F66\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "455", name: "\u5416\u5416\u65E5\u5267\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "457", name: "\u591C\u6708\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "458", name: "WHITE MOON" }, { provider: "dmhy", providerId: "459", name: "\u7D2B\u97F3\u52D5\u6F2B&\u767C\u4F48\u7D44" }, { provider: "dmhy", providerId: "461", name: "\u840C\u8C93\u540C\u597D\u6703" }, { provider: "dmhy", providerId: "463", name: "\u6AFB\u6200\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "464", name: "NTR\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "466", name: "\u590F\u96EA\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "468", name: "\u55B5\u840C\u8336\u4F1A\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "470", name: "GAL-Sora\u8BBA\u575B" }, { provider: "dmhy", providerId: "471", name: "\u9752\u7FFC\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "472", name: "KIDFansClub" }, { provider: "dmhy", providerId: "473", name: "ZaZa-Raws" }, { provider: "dmhy", providerId: "474", name: "Astro\u5DE5\u4F5C\u5BA4" }, { provider: "dmhy", providerId: "475", name: "\u6C50\u7A7A\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "476", name: "\u8B0E\u4E4B\u81EA\u58D3\u7D44" }, { provider: "dmhy", providerId: "477", name: "HGD" }, { provider: "dmhy", providerId: "478", name: "\u8B0E\u840C\u793E" }, { provider: "dmhy", providerId: "479", name: "Little Subbers!" }, { provider: "dmhy", providerId: "480", name: "Ylbud\u6A31\u5F8B\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "481", name: "\u7EA2\u83B2\u6C49\u5316\u7EC4" }, { provider: "dmhy", providerId: "482", name: "TC\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "483", name: "\u8282\u64CD\u5B57\u5E55\u793E" }, { provider: "dmhy", providerId: "484", name: "\u555F\u840C\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "485", name: "\u5929\u7A7A\u6811\u53CC\u8BED\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "486", name: "\u6BCF\u65E5\u5B66\u56ED" }, { provider: "dmhy", providerId: "487", name: "\u840C\u4E50\u52A8\u6F2B" }, { provider: "dmhy", providerId: "488", name: "\u4E38\u5B50\u5BB6\u65CF" }, { provider: "dmhy", providerId: "489", name: "\u98CE\u65C5\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "490", name: "\u5C0F\u884C\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "491", name: "\u9ED9\u793A\u8336\u793E" }, { provider: "dmhy", providerId: "492", name: "TUcaptions" }, { provider: "dmhy", providerId: "494", name: "\u55B5\u55B5\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "495", name: "76\u65B0\u756A\u5C0F\u7EC4" }, { provider: "dmhy", providerId: "496", name: "HTP\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "497", name: "\u840C\u5E7B\u8336\u793E" }, { provider: "dmhy", providerId: "498", name: "KNA" }, { provider: "dmhy", providerId: "499", name: "\u5929\u4F7F\u7FBD\u97F3" }, { provider: "dmhy", providerId: "500", name: "\u767D\u96EA\u5B57\u5E55\u793E" }, { provider: "dmhy", providerId: "501", name: "\u5929\u9E45\u4E4B\u604B" }, { provider: "dmhy", providerId: "502", name: "F\u5B85\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "503", name: "TD\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "504", name: "LoveEcho!" }, { provider: "dmhy", providerId: "506", name: "\u94F6\u5149\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "507", name: "\u56E7\u590F\u53D1\u5E03\u7EC4" }, { provider: "dmhy", providerId: "508", name: "DHK\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "509", name: "Non-Limit FanSubs" }, { provider: "dmhy", providerId: "512", name: "BYSub" }, { provider: "dmhy", providerId: "513", name: "\u6F2B\u4E4B\u5B66\u56ED" }, { provider: "dmhy", providerId: "515", name: "U2\u5A18@Share" }, { provider: "dmhy", providerId: "516", name: "TFO\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "517", name: "\u6A31\u7FFC\u6C49\u5316\u7EC4" }, { provider: "dmhy", providerId: "518", name: "asdfe0" }, { provider: "dmhy", providerId: "519", name: "\u8309\u8BED\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "520", name: "\u8C4C\u8C46\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "522", name: "\u68A6\u7269\u8BED\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "525", name: "\u897F\u519CYUI\u6C49\u5316\u7EC4" }, { provider: "dmhy", providerId: "526", name: "\u4E1C\u4EAC\u4E0D\u591F\u70ED" }, { provider: "dmhy", providerId: "527", name: "\u840C\u7269\u767E\u79D1\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "529", name: "\u52D5\u6F2B\u840C\u7CFB\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "530", name: "\u840C\u7269\u767E\u79D1" }, { provider: "dmhy", providerId: "531", name: "\u6E05\u84DD\u52A8\u6F2B" }, { provider: "dmhy", providerId: "532", name: "\u50B2\u5A07\u96F6\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "533", name: "\u82B1\u8BED\u53D1\u5E03" }, { provider: "dmhy", providerId: "534", name: "THE\u4E00\u6EC5\u5BC2" }, { provider: "dmhy", providerId: "535", name: "\u6953\u6F2B\u6F22\u5316\u7D44" }, { provider: "dmhy", providerId: "536", name: "Vmoe\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "537", name: "NEO\xB7QSW" }, { provider: "dmhy", providerId: "538", name: "\u6478\u6B7B\u5718\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "539", name: "BRB" }, { provider: "dmhy", providerId: "540", name: "\u5410\u69FD\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "541", name: "EggPainRaws" }, { provider: "dmhy", providerId: "542", name: "\u9ED2\u5DDD\u5B9F\u696D\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "543", name: "Nyamazing\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "544", name: "\u52D5\u6F2B\u6D41\u884C\u9928\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "545", name: "\u5929\u4F7F\u7FBD\u7FFC\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "547", name: "\u83B3\u4E43\u5B57\u5E55\u5C4B" }, { provider: "dmhy", providerId: "550", name: "\u841D\u8389\u793E\u6D3B\u52A8\u5BA4" }, { provider: "dmhy", providerId: "551", name: "\u5B85\u5B85\u5408\u96C6" }, { provider: "dmhy", providerId: "552", name: "\u68A6\u661F\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "553", name: "\u5FA1\u5B85\u540C\u840C" }, { provider: "dmhy", providerId: "554", name: "ErS\u8D30\u77F3\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "555", name: "AOK\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "556", name: "\u8513\u8D8A\u8393\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "557", name: "\u8046\u98CE\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "558", name: "\u661F\u706B\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "559", name: "\u6F2B\u85E4\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "560", name: "\u7EEF\u84DD\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "561", name: "\u9489\u94DB\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "562", name: "129.3\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "563", name: "\u82B1\u5712\u58D3\u5236\u7D44" }, { provider: "dmhy", providerId: "564", name: "\u98CE\u7FFC\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "565", name: "\u8336\u4F1A\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "566", name: "\u8046\u98CE\u6C49\u5316\u7EC4" }, { provider: "dmhy", providerId: "567", name: "\u96EA\u68A6\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "568", name: "\u8138\u80BF\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "569", name: "\u76F2\u70B9\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "570", name: "\u6642\u96E8\u521D\u7A7A" }, { provider: "dmhy", providerId: "574", name: "\u68A6\u84DD\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "576", name: "\u94F6\u8272\u5B50\u5F39\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "581", name: "VCB-Studio" }, { provider: "dmhy", providerId: "582", name: "\u661F\u5188\u6C49\u5316\u8054\u5408\u4F1A" }, { provider: "dmhy", providerId: "583", name: "\u3042\u3055\u3044\u306E\u304A\u83D3\u5B50\u5C4B" }, { provider: "dmhy", providerId: "584", name: "\u4F73\u82B8\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "585", name: "\u96FE\u96E8\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "587", name: "PokerFans\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "588", name: "\u68A6\u5947\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "589", name: "\u8111\xB7\u6D1E\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "592", name: "\u672A\u592E\u9601\u8054\u76DF" }, { provider: "dmhy", providerId: "593", name: "\u5FA1\u5B85\u7231\u840C\u5BB6\u65CF" }, { provider: "dmhy", providerId: "596", name: "\u9B42\u7EC4" }, { provider: "dmhy", providerId: "597", name: "DM1080P\u51B7\u756A\u7EC4" }, { provider: "dmhy", providerId: "598", name: "SNOW\u653E\u6620\u793E(SnowSub)" }, { provider: "dmhy", providerId: "599", name: "\u6696\u840C\u7684\u7EA2\u70E7\u9C7C" }, { provider: "dmhy", providerId: "601", name: "\u7E41\u661F\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "603", name: "\u98CE\u82B1\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "604", name: "c.c\u52A8\u6F2B" }, { provider: "dmhy", providerId: "605", name: "\u6F2B\u4E4B\u5C9B\u52A8\u6F2B" }, { provider: "dmhy", providerId: "606", name: "\u5929\u306E\u7FFC\u5B57\u5E55\u6C49\u5316\u793E" }, { provider: "dmhy", providerId: "607", name: "\u840C\u65CF" }, { provider: "dmhy", providerId: "609", name: "\u65AD\u624E\u795E\u6559\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "613", name: "AI-Raws" }, { provider: "dmhy", providerId: "614", name: "\u795E\u5947\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "615", name: "AVCHD" }, { provider: "dmhy", providerId: "616", name: "\u8FFD\u653E\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "619", name: "\u685C\u90FD\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "620", name: "ay\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "624", name: "FIX\u5B57\u5E55\u4FA0" }, { provider: "dmhy", providerId: "626", name: "\u9A6F\u517D\u5E08\u8054\u76DF" }, { provider: "dmhy", providerId: "627", name: "\u6CE2\u6D1B\u5496\u5561\u5385" }, { provider: "dmhy", providerId: "628", name: "CE\u5BB6\u65CF\u793E\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "629", name: "Yw7" }, { provider: "dmhy", providerId: "630", name: "\u67AB\u53F6\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "631", name: "\u7701\u7535Raws" }, { provider: "dmhy", providerId: "632", name: "\u6B50\u514B\u52D2\u4E9E" }, { provider: "dmhy", providerId: "636", name: "ARIA\u5427\u6C49\u5316\u7EC4" }, { provider: "dmhy", providerId: "637", name: "\u91CE\u732B\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "638", name: "LittleBakas!" }, { provider: "dmhy", providerId: "639", name: "\u4EF2\u590F\u52A8\u6F2B\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "641", name: "\u51B7\u756A\u8865\u5B8C\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "642", name: "CYsub.\u87FE\u870D\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "644", name: "DIGI-STUDIO" }, { provider: "dmhy", providerId: "645", name: "\u4F17\u795E\u4E4B\u738B\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "646", name: "\u591C\u6953\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "647", name: "\u4E1A\u754C\u6BD2\u7624" }, { provider: "dmhy", providerId: "648", name: "\u9B54\u661F\u5B57\u5E55\u56E2" }, { provider: "dmhy", providerId: "649", name: "\u4E91\u5149\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "650", name: "SweetSub" }, { provider: "dmhy", providerId: "651", name: "\u8FFD\u65B0\u756A\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "652", name: "SFEO-Raws" }, { provider: "dmhy", providerId: "653", name: "The ARC-V Project" }, { provider: "dmhy", providerId: "654", name: "\u85CD\u767D\u689D\u8AD6\u58C7\xB7\u7396\u7D44" }, { provider: "dmhy", providerId: "655", name: "\u6F2B\u5143\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "656", name: "\u4E22\u4E22\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "657", name: "LoliHouse" }, { provider: "dmhy", providerId: "658", name: "ACG\u8C03\u67E5\u5C0F\u961F" }, { provider: "dmhy", providerId: "659", name: "\u541B\u306E\u540D\u306F\u3002FANS\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "660", name: "2p3" }, { provider: "dmhy", providerId: "661", name: "\u92FC244" }, { provider: "dmhy", providerId: "663", name: "\u516B\u91CD\u6A31\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "664", name: "\u865A\u6570\u5B66\u533A\u7814\u7A76\u534F\u4F1A" }, { provider: "dmhy", providerId: "665", name: "YWCN\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "666", name: "\u4E2D\u80AF\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "667", name: "\u6D77\u8D3C\u738B\u5FAE\u5708" }, { provider: "dmhy", providerId: "669", name: "\u55B5\u840C\u5976\u8336\u5C4B" }, { provider: "dmhy", providerId: "670", name: "MechaAnime_Fan_Sub" }, { provider: "dmhy", providerId: "672", name: "\u65B0\u756A\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "673", name: "VRAINSTORM" }, { provider: "dmhy", providerId: "674", name: "KaS\u88FD\u4F5C\u7D44" }, { provider: "dmhy", providerId: "675", name: "AikatsuFans" }, { provider: "dmhy", providerId: "676", name: "\u795E\u5E06\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "677", name: "\u5496\u5561\u767C\u4F48" }, { provider: "dmhy", providerId: "678", name: "\u94DC\u9523\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "679", name: "\u5495\u5495\u8336\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "680", name: "Little\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "682", name: "\u552F\u68A6\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "683", name: "\u54C6\u5566\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "684", name: "MT\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "686", name: "HoneyGod" }, { provider: "dmhy", providerId: "687", name: "BlueRabbit" }, { provider: "dmhy", providerId: "688", name: "\u7269\u8BED\u7CFB\u5217\u5708" }, { provider: "dmhy", providerId: "689", name: "\u653E\u5B66\u540E\u7684\u6B7B\u795E" }, { provider: "dmhy", providerId: "690", name: "\u8650\u5FC3\u53D1\u5E03\u7EC4" }, { provider: "dmhy", providerId: "691", name: "\u6A59\u767D\u5B57\u5E55\u793E" }, { provider: "dmhy", providerId: "693", name: "\u603B\u6709\u4E00\u5929\u6C49\u5316\u7EC4" }, { provider: "dmhy", providerId: "694", name: "\u54AA\u8DEFfans\u5236\u4F5C\u7EC4" }, { provider: "dmhy", providerId: "695", name: "c-a Raws" }, { provider: "dmhy", providerId: "697", name: "NAZOrip" }, { provider: "dmhy", providerId: "700", name: "Producer\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "701", name: "\u72D0\u72F8\u5C0F\u5BAE" }, { provider: "dmhy", providerId: "702", name: "TenYun" }, { provider: "dmhy", providerId: "703", name: "\u5C4A\u604B\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "705", name: "\u5C0F\u613F8\u538B\u5236\u7EC4" }, { provider: "dmhy", providerId: "706", name: "K&W-RAWS" }, { provider: "dmhy", providerId: "708", name: "\u9752\u68EE\u5C0F\u9547" }, { provider: "dmhy", providerId: "709", name: "\u98DE\u9F99\u9A91\u8138\u5B57\u5E55\u7EC4(G.I.A.N.T)" }, { provider: "dmhy", providerId: "710", name: "\u54AA\u68A6\u52A8\u6F2B\u7EC4" }, { provider: "dmhy", providerId: "711", name: "\u95FA\u623F\u8C03\u67E5\u56E2" }, { provider: "dmhy", providerId: "712", name: "\u95F2\u4EBA\u5B57\u5E55\u8054\u840C" }, { provider: "dmhy", providerId: "713", name: "\u840CFUN\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "716", name: "Astral Union\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "717", name: "AZT\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "719", name: "80v08" }, { provider: "dmhy", providerId: "720", name: "YMDR\u53D1\u5E03\u7EC4" }, { provider: "dmhy", providerId: "721", name: "\u9B6F\u90A6\u806F\u6703" }, { provider: "dmhy", providerId: "723", name: "\u4E50\u56ED\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "724", name: "SKY\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "725", name: "NoBody" }, { provider: "dmhy", providerId: "726", name: "Mabors-Raws" }, { provider: "dmhy", providerId: "727", name: "2B4B" }, { provider: "dmhy", providerId: "728", name: "\u6307\u539Fx\u6AFB\u82B1\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "729", name: "YG\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "730", name: "\u8D44\u6E90\u840C\u8336\u4F1A" }, { provider: "dmhy", providerId: "731", name: "\u661F\u7A7A\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "732", name: "\u80A5\u732B\u538B\u5236" }, { provider: "dmhy", providerId: "734", name: "TD-RAWS" }, { provider: "dmhy", providerId: "735", name: "AcgN\u6DF1\u96EA" }, { provider: "dmhy", providerId: "736", name: "\u73DE\u6A31\u5B57\u5E55\u793E" }, { provider: "dmhy", providerId: "737", name: "Rakka-Aria" }, { provider: "dmhy", providerId: "739", name: "Clarita \u538B\u5236\u7EC4" }, { provider: "dmhy", providerId: "741", name: "\u9280\u6708\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "742", name: "QS-Raws" }, { provider: "dmhy", providerId: "743", name: "\u795E\u5E06\u52A8\u6F2B" }, { provider: "dmhy", providerId: "749", name: "\u5E7B\u6708\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "752", name: "404GROUP" }, { provider: "dmhy", providerId: "753", name: "\u67E0\u6AAC\u6C34\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "754", name: "BYYM\u53D1\u5E03\u7EC4" }, { provider: "dmhy", providerId: "755", name: "GMTeam" }, { provider: "dmhy", providerId: "757", name: "RvE\u53D1\u5E03\u7EC4" }, { provider: "dmhy", providerId: "759", name: "\u7EA2\u9E1F\u7A9D\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "763", name: "\u5149\u4E4B\u5BB6\u65CF\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "764", name: "MCE\u6C49\u5316\u7EC4" }, { provider: "dmhy", providerId: "765", name: "\u7231\u5495\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "767", name: "\u5929\u6708\u52D5\u6F2B&\u767C\u4F48\u7D44" }, { provider: "dmhy", providerId: "768", name: "\u5343\u6B72\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "769", name: "\u52A8\u6F2B\u840C" }, { provider: "dmhy", providerId: "770", name: "\u6AB8\u6AAC\u597D\u9178\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "772", name: "IET\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "779", name: "\u94F6\u5203\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "781", name: "SW\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "784", name: "Voice Memories" }, { provider: "dmhy", providerId: "785", name: "\u91CE\u6BD4\u5BB6\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "786", name: "\u68D2\u806F\u8CBC\u5427\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "787", name: "STL\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "788", name: "ebbSub" }, { provider: "dmhy", providerId: "790", name: "WBX-SUB" }, { provider: "dmhy", providerId: "792", name: "ANS-Union" }, { provider: "dmhy", providerId: "794", name: "Niconeiko Works" }, { provider: "dmhy", providerId: "795", name: "\u6E38\u96E2\u8C93\u5B57\u5E55\u7D44" }, { provider: "dmhy", providerId: "796", name: "\u81ED\u81ED\u52A8\u6F2B\u6574\u5408" }, { provider: "dmhy", providerId: "797", name: "\u68EE\u4E4B\u5C4B\u52A8\u753B\u7EC4" }, { provider: "dmhy", providerId: "799", name: "\u767D\u864E\u91CE" }, { provider: "dmhy", providerId: "800", name: "TK-Raws" }, { provider: "dmhy", providerId: "801", name: "NC-Raws" }, { provider: "dmhy", providerId: "802", name: "\u9177\u6F2B404" }, { provider: "dmhy", providerId: "803", name: "Lilith-Raws" }, { provider: "dmhy", providerId: "804", name: "\u971C\u5EAD\u4E91\u82B1Sub" }, { provider: "dmhy", providerId: "805", name: "DBD\u5236\u4F5C\u7EC4" }, { provider: "dmhy", providerId: "806", name: "\u79BB\u8C31Sub" }, { provider: "dmhy", providerId: "807", name: "Liella!\u306E\u70E7\u70E4\u644A" }, { provider: "dmhy", providerId: "808", name: "\u591C\u83BA\u5BB6\u65CF" }, { provider: "dmhy", providerId: "812", name: "\u8679\u54B2\u5B66\u56ED\u70E4\u8089\u540C\u597D\u4F1A" }, { provider: "dmhy", providerId: "813", name: "MingYSub" }, { provider: "dmhy", providerId: "814", name: "Amor\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "816", name: "ANi" }, { provider: "dmhy", providerId: "817", name: "EMe" }, { provider: "dmhy", providerId: "818", name: "Alchemist" }, { provider: "dmhy", providerId: "819", name: "\u9ED1\u5CA9\u5C04\u624B\u5427\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "821", name: "\u767E\u51AC\u7DF4\u7FD2\u7D44" }, { provider: "dmhy", providerId: "822", name: "\u6975\u5F69\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "823", name: "\u62E8\u96EA\u5BFB\u6625" }, { provider: "dmhy", providerId: "824", name: "\u7EC7\u68A6\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "825", name: "\u730E\u6237\u53D1\u5E03\u7EC4" }, { provider: "dmhy", providerId: "826", name: "\u79CB\u4EBA\u5B57\u5E55" }, { provider: "dmhy", providerId: "827", name: "\u4EBF\u6B21\u7814\u540C\u597D\u4F1A" }, { provider: "dmhy", providerId: "828", name: "\u771F\u9F99\u4F1A\u661F\u9645\u6587\u4EF6\u7EC4" }, { provider: "dmhy", providerId: "829", name: "\u722A\u722A\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "830", name: "PorterRAWS" }, { provider: "dmhy", providerId: "831", name: "lu-ul" }, { provider: "dmhy", providerId: "832", name: "Sakura" }, { provider: "dmhy", providerId: "833", name: "\u5317\u5B87\u6CBB\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "834", name: "\u6C22\u6C14\u70E4\u8089\u67B6" }, { provider: "dmhy", providerId: "837", name: "\u516D\u9053\u6211\u5927\u9E3D\u6C49\u5316\u7EC4" }, { provider: "dmhy", providerId: "838", name: "\u4E91\u6B4C\u5B57\u5E55\u7EC4" }, { provider: "dmhy", providerId: "840", name: "\u6210\u5B50\u5742\u5730\u4E0B\u5BA4" }, { provider: "dmhy", providerId: "841", name: "\u5931\u7720\u642C\u8FD0\u7EC4" }, { provider: "dmhy", providerId: "842", name: "SRVFI-Raws" }, { provider: "dmhy", providerId: "843", name: "Pharos of MyGO" } ]; const fansubIdCache = /* @__PURE__ */ new Map(); const fansubNameCache = /* @__PURE__ */ new Map(); function findFansub(provider, text, options = { fuzzy: false }) { if (typeof text === "number" || /^\d+$/.test(text)) { if (fansubIdCache.size === 0) { AllFansubs.forEach((f) => fansubIdCache.set(`${f.provider}:${f.providerId}`, f)); } return fansubIdCache.get(`${provider}:${text}`); } else if (typeof text === "string") { if (options.fuzzy) { const word = simptrad.tradToSimple(text); const found = AllFansubs.find((f) => simptrad.tradToSimple(f.name).includes(word)); if (found) { return found; } else if (word.includes("\u6A31")) { const word2 = word.replace("\u6A31", "\u685C"); return AllFansubs.find((f) => simptrad.tradToSimple(f.name).includes(word2)); } } else { if (fansubNameCache.size === 0) { AllFansubs.forEach((f) => fansubNameCache.set(`${f.provider}:${f.name}`, f)); } return fansubNameCache.get(`${provider}:${text}`); } } return void 0; } const dateLike = zod.z.union([zod.z.coerce.number().transform((n) => new Date(n)), zod.z.coerce.date()]).optional(); const stringArray = zod.z.union([zod.z.string().transform((s) => [s]), zod.z.array(zod.z.string())]); const stringArrayLike = zod.z.coerce.string().transform((t) => { try { return JSON.parse(t); } catch { return [t]; } }).pipe(stringArray).optional(); const numberArray = zod.z.union([zod.z.array(zod.z.coerce.number()), zod.z.coerce.number().transform((n) => [n])]); const numberArrayLike = zod.z.coerce.string().transform((t) => JSON.parse(t)).catch(void 0).pipe(zod.z.union([numberArray, stringArray])).optional(); const providerEnum = zod.z.enum(["dmhy", "moe"]); const providerLike = zod.z.union([ providerEnum.transform((t) => [t]), zod.z.coerce.string().transform((t) => { try { return JSON.parse(t); } catch { return [t]; } }).pipe(zod.z.array(providerEnum)), zod.z.array(providerEnum) ]).transform((t) => [...new Set(t)]); const FilterSchema = zod.z.object({ provider: providerLike.optional(), duplicate: zod.z.coerce.boolean().optional(), page: zod.z.number().default(1).refine((p) => p >= 1), pageSize: zod.z.number().default(100).refine((ps) => 1 <= ps && ps <= 1e3), fansubId: zod.z.array(zod.z.union([zod.z.coerce.number().transform((n) => "" + n), zod.z.string()])).optional(), fansubName: zod.z.string().array().optional(), publisherId: zod.z.string().array().optional(), type: zod.z.string().optional(), before: dateLike, after: dateLike, search: stringArray.optional(), include: stringArray.optional(), keywords: stringArray.optional(), exclude: stringArray.optional() }); const parser = { provider: providerLike.default(["dmhy", "moe"]), duplicate: zod.z.coerce.boolean().default(false), page: zod.z.coerce.number().default(1).transform((p) => Math.round(Math.max(1, p))), pageSize: zod.z.coerce.number().default(100).transform((ps) => Math.round(Math.max(1, Math.min(1e3, ps)))), fansubId: numberArrayLike.transform((t) => t?.map((n) => "" + n)), fansubName: stringArrayLike, publisherId: stringArrayLike, type: zod.z.coerce.string().optional(), before: dateLike, after: dateLike, search: stringArrayLike, include: stringArrayLike, keywords: stringArrayLike, exclude: stringArrayLike }; function parseSearchURL(params, body) { const entries = [...Object.entries(parser)].map(([key, parser2]) => { if (body && typeof body === "object") { const content = body[key]; if (content !== null && content !== void 0) { const parser22 = FilterSchema.shape[key]; const parsed = parser22.safeParse(content); if (parsed.success) { return [key, parsed.data]; } } } { const content = params.get(key); if (content !== null && content !== "") { const parsed = parser2.safeParse(content); if (parsed.success) { return [key, parsed.data]; } } } return [key, void 0]; }); const filtered = Object.fromEntries(entries); const isNaN = (d) => d === void 0 || d === null || Number.isNaN(d); if (isNaN(filtered.page)) { filtered.page = 1; } if (isNaN(filtered.pageSize)) { filtered.pageSize = 100; } if (filtered.duplicate === void 0 || filtered.duplicate === null) { if (filtered.provider && filtered.provider.length === 1) { filtered.duplicate = true; } else { filtered.duplicate = false; } } return filtered; } function stringifySearchURL(baseURL, options) { const url = new URL("resources", baseURL); if (options.provider && options.provider.length > 0) { url.searchParams.set("provider", JSON.stringify(options.provider)); } if (options.page) { url.searchParams.set("page", "" + options.page); } if (options.pageSize) { url.searchParams.set("pageSize", "" + options.pageSize); } if (options.fansubId) { const fansubId = options.fansubId; const parsed = stringArray.safeParse(fansubId); if (parsed.success) { const data = parsed.data; if (data.length > 0) { if (data.length === 1) { url.searchParams.set("fansubId", "" + data[0]); } else { url.searchParams.set("fansubId", JSON.stringify(data)); } } } } if (options.fansubName && options.fansubName.length > 0) { url.searchParams.set("fansubName", JSON.stringify(options.fansubName)); } if (options.publisherId) { const publisherId = options.publisherId; const parsed = stringArray.safeParse(publisherId); if (parsed.success) { const data = parsed.data; if (data.length > 0) { if (data.length === 1) { url.searchParams.set("publisherId", "" + data[0]); } else { url.searchParams.set("publisherId", JSON.stringify(data)); } } } } if (options.type) { const type = options.type; url.searchParams.set("type", type in QueryType ? QueryType[type] : type); } if (options.before) { try { const date = typeof options.before === "string" || typeof options.before === "number" ? new Date(options.before) : options.before; url.searchParams.set("before", "" + date.getTime()); } catch (error) { console.error(error); } } if (options.after) { try { const date = typeof options.after === "string" || typeof options.after === "number" ? new Date(options.after) : options.after; url.searchParams.set("after", "" + date.getTime()); } catch (error) { console.error(error); } } if (options.search && options.search.length > 0) { url.searchParams.set("search", JSON.stringify(options.search)); } if (options.include && options.include.length > 0) { url.searchParams.set("include", JSON.stringify(options.include)); } if (options.keywords && options.keywords.length > 0) { url.searchParams.set("keywords", JSON.stringify(options.keywords)); } if (options.exclude && options.exclude.length > 0) { url.searchParams.set("exclude", JSON.stringify(options.exclude)); } return url; } function makeResourcesFilter(options) { const resolved = parseSearchURL(new URLSearchParams(), options); const chains = []; if (resolved.provider) { const providers = resolved.provider; chains.push((r) => providers.includes(r.provider)); } if (resolved.fansubId) { const fansubId = resolved.fansubId; chains.push((r) => r.fansub ? fansubId.includes(r.fansub.id) : false); } if (resolved.fansubName) { const fansubName = resolved.fansubName; chains.push((r) => r.fansub ? fansubName.includes(r.fansub.name) : false); } if (resolved.publisherId) { const publisherId = resolved.publisherId; chains.push((r) => publisherId.includes(r.publisher.id)); } if (resolved.type) { const type = resolved.type; chains.push((r) => r.type === type); } if (resolved.before) { const before = resolved.before.getTime(); chains.push((r) => new Date(r.createdAt).getTime() <= before); } if (resolved.after) { const after = resolved.after.getTime(); chains.push((r) => new Date(r.createdAt).getTime() >= after); } if (resolved.search) { const search = resolved.search.map((k) => normalizeTitle(k).toLowerCase()); chains.push((r) => { const titleAlt = normalizeTitle(r.title).toLowerCase(); return search.some((key) => titleAlt.indexOf(key) !== -1); }); } else if (resolved.include) { const include = resolved.include.map((k) => normalizeTitle(k).toLowerCase()); const keywords = (resolved.keywords ?? []).map((k) => normalizeTitle(k).toLowerCase()); const exclude = (resolved.exclude ?? []).map((k) => normalizeTitle(k).toLowerCase()); chains.push((r) => { const titleAlt = normalizeTitle(r.title).toLowerCase(); const matched = include.some((key) => titleAlt.indexOf(key) !== -1); if (matched) { return keywords.every((key) => titleAlt.indexOf(key) !== -1) || exclude.every((key) => titleAlt.indexOf(key) === -1); } else { return false; } }); } return (res) => chains.every((fn) => fn(res)); } const DefaultBaseURL = "https://garden.breadio.wiki/api/"; async function fetchResources(fetch, options = {}) { const { baseURL = DefaultBaseURL, retry = 1 } = options; const url = stringifySearchURL(baseURL, options); if (options.tracker) { url.searchParams.set("tracker", "true"); } if (options.count !== void 0 && options.count !== null) { const count = options.count < 0 ? Number.MAX_SAFE_INTEGER : options.count; const map = /* @__PURE__ */ new Map(); let aborted = false; let timestamp = /* @__PURE__ */ new Date(0); let complete = false; let filter = void 0; for (let page = 1; map.size < count; page++) { try { if (options.signal?.aborted) { aborted = true; break; } const resp = await fetchPage(page); if (!resp) { aborted = true; break; } timestamp = resp.timestamp; complete = resp.complete; if (resp.filter) { filter = resp.filter; } if (resp.resources.length === 0) { break; } const newRes = []; for (const r of resp.resources) { if (!map.has(r.href)) { map.set(r.href, r); newRes.push(r); } } await options.progress?.(newRes, { url: url.toString(), page, timestamp }); } catch (error) { if (error instanceof Error && error.name === "AbortError") { aborted = true; break; } else { throw error; } } } if (filter && "page" in filter) { delete filter["page"]; } return { ok: !aborted, resources: uniq([...map.values()]), complete: aborted ? false : complete, filter, timestamp }; } else { const resp = await fetchPage(options.page ?? 1); if (!resp || !resp.resources) { return { ok: false, resources: [], complete: false, filter: void 0, timestamp: void 0 }; } const resources = uniq(resp.resources); await options.progress?.(resources, { url: url.toString(), page: 1, timestamp: resp.timestamp }); return { ok: true, resources, complete: resp.complete ?? false, filter: resp.filter, timestamp: resp.timestamp }; } async function fetchPage(page) { url.searchParams.set("page", "" + page); return await retryFn(async () => { const headers = new Headers(options.headers); if (!headers.get("user-agent")) { headers.set(`user-agent`, `animegarden@${version}`); } const resp = await fetch(url.toString(), { headers, signal: options.signal }); if (resp.ok) { const r = await resp.json(); const timestamp = new Date(r.timestamp); if (!isNaN(timestamp.getTime())) { return { resources: r.resources, complete: r.complete, filter: r.filter, timestamp }; } } return void 0; }, retry); } function uniq(resources) { const map = /* @__PURE__ */ new Map(); for (const r of resources) { if (!map.has(r.href)) { map.set(r.href, r); } } return [...map.values()].sort((lhs, rhs) => rhs.createdAt.localeCompare(lhs.createdAt)); } } async function fetchResourceDetail(fetch, provider, href, options = {}) { const { baseURL = DefaultBaseURL, retry = 1 } = options; const url = new URL(`${provider}/detail/${href}`, baseURL); const resp = await retryFn(async () => { const headers = new Headers(options.headers); if (!headers.get("user-agent")) { headers.set(`user-agent`, `animegarden@${version}`); } const resp2 = await fetch(url.toString(), { signal: options.signal }); if (resp2.ok) { return await resp2.json(); } else { throw new Error(`Fetch failed`, { cause: resp2 }); } }, retry); if (resp.id !== void 0 && resp.detail !== void 0) { return { id: resp.id, ...resp.detail }; } else { return void 0; } } exports.AllFansubs = AllFansubs; exports.DefaultBaseURL = DefaultBaseURL; exports.FilterSchema = FilterSchema; exports.fetchResourceDetail = fetchResourceDetail; exports.fetchResources = fetchResources; exports.findFansub = findFansub; exports.makeResourcesFilter = makeResourcesFilter; exports.normalizeTitle = normalizeTitle; exports.parseSearchURL = parseSearchURL; exports.retryFn = retryFn; exports.stringifySearchURL = stringifySearchURL;