收起左侧

飞牛影视TV剧集[TMDB]主动刮削

25
回复
2657
查看
[ 复制链接 ]

3

主题

21

回帖

0

牛值

江湖小虾

2025-8-11 15:41:41 显示全部楼层 阅读模式

飞牛影视主动刮削

飞牛影视的刮削资源库应该使用的是自建的,有延迟热播剧刮削有等好几天,影响了追剧体验,为此写了此刮削脚本

脚本下载地址 https://pan.quark.cn/s/474729ed9577

使用方式 直接放到服务器上sudo fnos_v执行即可

推荐安装1panel 使用其计划任务 定时执行

3b1503db-136d-4355-b492-a2ec8bc390f4.png

收藏
送赞 2
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

7

主题

101

回帖

0

牛值

fnOS系统内测组

2025-8-12 09:56:05 显示全部楼层

试一试

7

主题

101

回帖

0

牛值

fnOS系统内测组

2025-8-12 10:00:04 显示全部楼层

这个文件用什么软件可以编辑啊

这个是执行文件 不是源代码  详情 回复
2025-8-12 11:57

3

主题

21

回帖

0

牛值

江湖小虾

2025-8-12 11:57:31 楼主 显示全部楼层
Jimboo7339 发表于 2025-8-12 10:00
这个文件用什么软件可以编辑啊

这个是执行文件 不是源代码

7

主题

101

回帖

0

牛值

fnOS系统内测组

2025-8-12 16:55:04 显示全部楼层

image.png

image.png

这种tmdb还没更新的,但是把默认标题给刮过来了,等tmdb更新标题后,这个标题还会替换吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
会,因为还没有描述  详情 回复
2025-8-12 17:26

3

主题

21

回帖

0

牛值

江湖小虾

2025-8-12 17:26:36 楼主 显示全部楼层
Jimboo7339 发表于 2025-8-12 16:55
这种tmdb还没更新的,但是把默认标题给刮过来了,等tmdb更新标题后,这个标题还会替换吗?
...

会,因为还没有描述

0

主题

1

回帖

0

牛值

江湖小虾

2025-8-14 15:59:07 显示全部楼层
你们的影视剧都是从哪里弄得啊
https://tools.voidke.com/zhuiju这个网站有很多影视下载网址 www.gying.net这个是我自用的,免费注册一下就可以在线看或者下载  详情 回复
2025-8-22 14:55

1

主题

4

回帖

0

牛值

江湖小虾

2025-8-17 14:41:03 显示全部楼层

能不能说的详细一点。下载下来不会用谢谢了

7

主题

101

回帖

0

牛值

fnOS系统内测组

2025-8-22 14:36:59 显示全部楼层

是不是没法使用了

1

主题

3

回帖

0

牛值

江湖小虾

2025-8-22 14:55:48 显示全部楼层
yang_Pu0nr 发表于 2025-8-14 15:59
你们的影视剧都是从哪里弄得啊

https://tools.voidke.com/zhuiju这个网站有很多影视下载网址
www.gying.net这个是我自用的,免费注册一下就可以在线看或者下载

3

主题

13

回帖

0

牛值

江湖小虾

2025-8-26 13:28:00 显示全部楼层

image.png哪里出问题了。是要放在 影视文件 目录吗

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这个是正常的 这个的意思是没有需要更新的资源  详情 回复
2025-8-28 10:03

3

主题

21

回帖

0

牛值

江湖小虾

2025-8-28 10:03:25 楼主 显示全部楼层
clion 发表于 2025-8-26 13:28
哪里出问题了。是要放在 影视文件 目录吗

这个是正常的 这个的意思是没有需要更新的资源

1

主题

3

回帖

0

牛值

江湖小虾

2025-9-4 15:11:13 显示全部楼层

链接失效了 可以求再发一次吗

https://pan.quark.cn/s/580d1105cb39  详情 回复
2025-9-5 15:48

0

主题

7

回帖

0

牛值

江湖小虾

2025-9-5 08:50:53 显示全部楼层

多发些资源连接,装备有了,愁资源了

3

主题

21

回帖

0

牛值

江湖小虾

2025-9-5 15:48:10 楼主 显示全部楼层
非常感谢!  详情 回复
2025-9-7 13:25

0

主题

2

回帖

0

牛值

江湖小虾

2025-9-5 23:19:57 显示全部楼层
请问脚本内容里的命令怎么写

1

主题

3

回帖

0

牛值

江湖小虾

2025-9-7 13:25:31 显示全部楼层
Abetsy 发表于 2025-9-5 15:48
https://pan.quark.cn/s/580d1105cb39

非常感谢!

1

主题

31

回帖

0

牛值

江湖小虾

2025-9-18 10:25:29 显示全部楼层

有成人刮削嘛?

0

主题

1

回帖

0

牛值

江湖小虾

2025-9-19 12:36:41 显示全部楼层

你好,请问这个怎么解决image.png

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

4

主题

10

回帖

0

牛值

江湖小虾

2025-9-23 22:15:39 显示全部楼层

屏幕截图2025-09-23221358.png大佬,如何能刮削剧集封面图片,只有描述,没有封面图片

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我只处理了标题和描述 图片比较麻烦没搞  详情 回复
2025-9-24 11:16

3

主题

21

回帖

0

牛值

江湖小虾

2025-9-24 11:16:14 楼主 显示全部楼层
浮生若梦SS 发表于 2025-9-23 22:15
大佬,如何能刮削剧集封面图片,只有描述,没有封面图片

我只处理了标题和描述 图片比较麻烦没搞

4

主题

10

回帖

0

牛值

江湖小虾

2025-10-28 11:55:14 显示全部楼层

大佬能否更新一下,飞牛影视挂载网盘中无法补全,只能弄本地的,如何对网盘主动刮削,比如115,夸克

代码就是只处理本地文件的  详情 回复
2025-10-28 16:53

3

主题

21

回帖

0

牛值

江湖小虾

2025-10-28 16:53:24 楼主 显示全部楼层
浮生若梦SS 发表于 2025-10-28 11:55
大佬能否更新一下,飞牛影视挂载网盘中无法补全,只能弄本地的,如何对网盘主动刮削,比如115,夸克
...

代码就是只处理本地文件的

3

主题

21

回帖

0

牛值

江湖小虾

2025-10-28 17:03:01 楼主 显示全部楼层
import sqlite3, re, requests, sys
from pypinyin import lazy_pinyin, Style
from bs4 import BeautifulSoup

API_KEY = "去TMDB获取API"

DB_PATH = "/usr/local/apps/@appdata/trim.media/database/trimmedia.db"

def convert_to_pinyin(text):
    parts = re.findall(r'[\u4e00-\u9fff]+|[^\u4e00-\u9fff]+', text)
    result = []
    for part in parts:
        if re.fullmatch(r'[\u4e00-\u9fff]+', part):
            pinyin = ' '.join(lazy_pinyin(part, style=Style.NORMAL))
            result.append(pinyin)
        else:
            result.append(part)
    return ''.join(result)


def truncate_string(s):
    return s[:10] + '...' if len(s) > 10 else s + '...'


def doScrape():
    conn = sqlite3.connect(DB_PATH)
    conn.isolation_level = None
    cursor = conn.cursor()
    cursor.execute("""
                   SELECT a.guid,
                          a.tmdb_id,
                          a.season_number,
                          a.episode_number,
                          a.title,
                          a.overview,
                          (SELECT b.title FROM item b WHERE a.tmdb_id = b.tmdb_id AND b.TYPE = 'TV')
                   FROM item a
                   WHERE tmdb_id IN (SELECT DISTINCT tmdb_id
                                     FROM item
                                     WHERE tmdb_id IS NOT NULL
                                       AND TYPE = 'Episode'
                                       AND ((title = '第 ' || episode_number || ' 集') OR (overview = ''))
                                       AND tmdb_id != 0
                   ORDER BY
                       tmdb_id,
                       episode_number
                       )
                       AND TYPE = 'Episode'
                       AND guid IN (
                   SELECT item_guid
                   FROM item_media
                   WHERE file_birth_time > 0)
                   ORDER BY
                       tmdb_id,
                       episode_number
                   """)
    data_map = []
    info_map = {}
    for row in cursor.fetchall():
        key = f"{row[1]}~{row[2]}"
        info_map[f"{key}~{row[3]}"] = row
        if key not in data_map:
            data_map.append(key)
    mark = True
    for k in data_map:
        d = str(k).split("~")
        url = f"https://www.themoviedb.org/tv/{d[0]}/season/{d[1]}"
        for episode in getInfoByHtml(url):
            try:
                if f"{k}~{episode.get('episode_number')}" in info_map:
                    real_data = info_map[f"{k}~{episode.get('episode_number')}"]
                    name = episode.get('name')
                    name_pinyin = convert_to_pinyin(name)
                    update_sql = f"UPDATE item SET title = '{name}',sort_title = '{name_pinyin}',overview = '{episode.get('overview')}' WHERE guid = '{real_data[0]}'"
                    mk = 0
                    if episode.get('name') != real_data[4] and episode.get('overview') != real_data[5]:
                        mk = 3
                    elif episode.get('name') != real_data[4]:
                        mk = 1
                    elif episode.get('overview') != real_data[5]:
                        mk = 2
                    if mk != 0:
                        mark = False
                    if mk == 3:
                        print(
                            f"✅ {real_data[6]}第{real_data[2]}季第{real_data[3]}集的标题及描述更新成功! 🏅标题: {real_data[4]} ==> {episode.get('name')}, 🏆描述: {truncate_string(episode.get('overview'))}")
                    elif mk == 1:
                        print(
                            f"✅ {real_data[6]}第{real_data[2]}季第{real_data[3]}集的标题更新成功! 🏅标题: {real_data[4]} ==> {episode.get('name')}")
                    elif mk == 2:
                        print(
                            f"✅ {real_data[6]}第{real_data[2]}季第{real_data[3]}集的描述更新成功! 🏅描述: {truncate_string(episode.get('overview'))}")
                    cursor.execute(update_sql)
                    conn.commit()
            except Exception:
                print(f"❌ 处理单集信息失败,剧集信息: {str(episode)}")
    conn.close()
    if mark:
        print(f"❌ 资源刮削失败,未更新任何资源!")
        sys.exit(1)


def getInfoByHtml(url):
    all_data = []
    try:
        response = requests.get(url, headers={'Accept-Language': 'zh-CN'})
        if "text/html" in response.headers["Content-Type"]:
            html_text = response.text.encode("utf-8")
            soup = BeautifulSoup(html_text, 'lxml')
            episode_list = soup.find("div", class_="episode_list").find_all("div", class_="card")
            for episode in episode_list:
                title = episode.find("div", class_="title")
                episode_number = title.find("span", class_="episode_number").text
                episode_title = title.find("div", class_="episode_title").find("h3").find("a").text
                overview = episode.find("div", class_="overview").find("p").text
                if overview == '暂无英文版的简介,请添加内容帮助我们完善数据库。':
                    overview = ''
                mydata = {}
                mydata["episode_number"] = episode_number
                mydata["name"] = episode_title
                mydata["overview"] = overview
                all_data.append(mydata)
    except Exception:
        print(f"❌ 获取剧季信息失败,请求地址: {url}")
        sys.exit(1)
    return all_data


# sudo pyinstaller --onefile --clean fnos_v.py
if __name__ == "__main__":
    doScrape()

7

主题

101

回帖

0

牛值

fnOS系统内测组

我试着没法用了呢

7

主题

101

回帖

0

牛值

fnOS系统内测组

image.png

image.png
image.png

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则