欢迎光临
我们一直在努力

刮削JAV更好的选择:Jellyfin+MetaTube

前段时间我写了一篇文章:《用Stash管理A片,打造小姐姐媒体库》用了一段时间后发现stash插件刮削下来的数据不太行,就想着有没有更好的方案,然后就试了下MetaTube。

这不试不知道,试了才知道MetaTube真的太好用了!在刮削JAV方面,MetaTube真的可以说是吊打stash的一众插件,一点都不夸张!MetaTube支持更多的JAV数据源,其中“AVBASE”这个源站真的牛b,基本没有搜不到的片子,而且MetaTube能够自动识别出AV女优的真实姓名,并且不需要额外的配置,做到了开箱即用。

我当初用stash的原因是看在比较轻量,但后来发现stash对JAV的支持真的是一言难尽,如果你喜欢看欧美的片子那可能stash是更好的选择,JAV的话还是算了,最终我也是转到Jellyfin+MetaTube这一套方案上了。。。

以下记录在Debian12系统下的整个配置过程。首先使用Docker来安装Jellyfin:

apt -y update
apt -y install curl
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

新建compose文件:

mkdir -p /opt/jellyfin && cd /opt/jellyfin && nano docker-compose.yml

写入如下配置:

services:
  jellyfin:
    image: jellyfin/jellyfin
    container_name: jellyfin
    restart: unless-stopped
    network_mode: 'host'
    volumes:
      - ./config:/config
      - ./cache:/cache
      - nextcloud_aio_nextcloud_data:/media:ro

volumes:
  nextcloud_aio_nextcloud_data:
    external: true

我的片子都存在Nextcloud里面,由于我怕Jellyfin会改动媒体目录的数据,导致Nextcloud那边出问题,所以我把媒体目录配置成了只读。当然事后我也发现只要不启用Nfo文件支持的话,Jellyfin不会改动媒体目录内的数据。就是下面截图的这个设置,如果启用,Jellyfin会往媒体目录创建Nfo文件:

然后还有这个媒体图像的设置,不启用就没事:

另外如果你需要Jellyfin硬件加速(硬解)支持,可以参考这篇文章配置:https://lala.im/9233.html

还有就是如果不想要Jellyfin使用主机(host)网络,可以使用下面的这个配置:

services:
  jellyfin:
    image: jellyfin/jellyfin
    container_name: jellyfin
    restart: unless-stopped
    network_mode: 'host'
    ports:
      - "127.0.0.1:8096:8096"
      - "127.0.0.1:7359:7359"
    volumes:
      - ./config:/config
      - ./cache:/cache
      - nextcloud_aio_nextcloud_data:/media:ro

volumes:
  nextcloud_aio_nextcloud_data:
    external: true

启动Jellyfin:

docker compose up -d

配置反向代理,安装NGINX和Certbot:

apt -y update
apt -y install nginx python3-certbot-nginx

新建NGINX站点配置文件:

nano /etc/nginx/sites-available/jellyfin

写入如下配置:

server {
    listen 80;
    listen [::]:80;
    server_name jellyfin.example.com;
    client_max_body_size 0;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "0";
    add_header X-Content-Type-Options "nosniff";
    add_header Permissions-Policy "accelerometer=(), ambient-light-sensor=(), battery=(), bluetooth=(), camera=(), clipboard-read=(), display-capture=(), document-domain=(), encrypted-media=(), gamepad=(), geolocation=(), gyroscope=(), hid=(), idle-detection=(), interest-cohort=(), keyboard-map=(), local-fonts=(), magnetometer=(), microphone=(), payment=(), publickey-credentials-get=(), serial=(), sync-xhr=(), usb=(), xr-spatial-tracking=()" always;
    add_header Content-Security-Policy "default-src https: data: blob: ; img-src 'self' https://* ; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' https://www.gstatic.com https://www.youtube.com blob:; worker-src 'self' blob:; connect-src 'self'; object-src 'none'; frame-ancestors 'self'";

    location / {
        proxy_pass http://127.0.0.1:8096;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Protocol $scheme;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_buffering off;
    }

    location /socket {
        proxy_pass http://127.0.0.1:8096;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Protocol $scheme;
        proxy_set_header X-Forwarded-Host $http_host;
    }
}

启用站点:

ln -s /etc/nginx/sites-available/jellyfin /etc/nginx/sites-enabled/jellyfin

签发TLS证书:

certbot --nginx --email [email protected] --agree-tos --no-eff-email

现在就可以通过jellyfin.example.com这个域名来访问Jellyfin了,至此Jellyfin就安装完成了。

进入Jellyfin控制台->插件->存储库,点击添加:

名称填写:MetaTube
存储库URL填写:https://raw.githubusercontent.com/metatube-community/jellyfin-plugin-metatube/dist/manifest.json

然后在目录找到MetaTube,点击安装:

回到终端重启Jellyfin,MetaTube插件就安装完成了:

docker compose down
docker compose up -d

部署MetaTube后端

MetaTube插件还需要搭配一个后端才能正常工作,你可以选择自建后端或者用别人的公益后端,这里我就自建了。

我选择将MetaTube后端安装到与Jellyfin所在的同一台服务器上,由于这台服务器是美国的,有些刮削的数据源(源站)不支持美国IP访问,所以这个时候还需要配置一个HTTP代理。

我选择在一台日本的服务器上配置HTTP代理,但是这台日本服务器的IP也访问不了DMM(FANZA),所以还需要套一个WARP来解锁DMM(FANZA),想来想去能够快速满足这个需求的只有sing-box了!

以下是有关sing-box配置HTTP代理的详细步骤:

1、参考这篇文章安装sing-box和wgcf-cli,并且使用wgcf-cli生成好Wireguard的配置文件。

2、编辑sing-box的配置文件:

nano /etc/sing-box/config.json

写入如下配置,注意修改Wireguard的配置与HTTP代理的账号、密码:

{
  "log": {
    "level": "info"
  },
  "dns": {
    "servers": [
      {
        "tag": "google",
        "address": "tls://8.8.8.8",
        "strategy": "ipv4_only"
      }
    ],
    "rules": [
      {
        "outbound": "any",
        "server": "google"
      }
    ]
  },
  "inbounds": [
    {
      "type": "http",
      "tag": "http-in",
      "listen": "0.0.0.0",
      "listen_port": 8080,
      "sniff": true,
      "users": [
        {
          "username": "imlala",
          "password": "proxypassword"
        }
      ]
    }
  ],
  "outbounds": [
    {
      "type": "direct",
      "tag": "direct"
    },
    {
      "type": "dns",
      "tag": "dns-out"
    },
    {
      "type": "wireguard",
      "tag": "wireguard-out",
      "server": "engage.cloudflareclient.com",
      "server_port": 2408,
      "system_interface": true,
      "interface_name": "wg0",
      "local_address": [
        "172.16.0.2/32",
        "hidden"
      ],
      "private_key": "hidden",
      "peer_public_key": "hidden",
      "reserved": "/oNV",
      "mtu": 1280
    }
  ],
  "route": {
    "rules": [
      {
        "protocol": "dns",
        "outbound": "dns-out"
      },
      {
        "rule_set": [
          "geosite-dmm",
          "geosite-dmm-porn"
        ],
        "outbound": "wireguard-out"
      }
    ],
    "rule_set": [
      {
        "type": "remote",
        "tag": "geosite-dmm",
        "format": "binary",
        "url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-dmm.srs",
        "download_detour": "direct",
        "update_interval": "7d"
      },
      {
        "type": "remote",
        "tag": "geosite-dmm-porn",
        "format": "binary",
        "url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-dmm-porn.srs",
        "download_detour": "direct",
        "update_interval": "7d"
      }
    ]
  }
}

启动sing-box:

systemctl enable --now sing-box

代理配置完成后,我们接下来就可以部署MetaTube后端了。

准备目录、新建compose文件::

mkdir -p /opt/metatube-sdk-go && cd /opt/metatube-sdk-go && nano docker-compose.yml

写入如下配置:

services:
  metatube:
    image: metatube/metatube-server:latest
    container_name: metatube
    ports:
      - "127.0.0.1:9080:8080"
    restart: unless-stopped
    depends_on:
      - postgres
    environment:
      - HTTP_PROXY=http://imlala:[email protected]:8080
      - HTTPS_PROXY=http://imlala:[email protected]:8080
      - TOKEN=random
    volumes:
      - run:/var/run
    command: -dsn "postgres://metatube:dbpassword@/metatube?host=/var/run/postgresql" -port 8080 -db-auto-migrate -db-prepared-stmt

  postgres:
    image: postgres:15-alpine
    container_name: metatube-postgres
    restart: unless-stopped
    environment:
      - POSTGRES_USER=metatube
      - POSTGRES_PASSWORD=dbpassword
      - POSTGRES_DB=metatube
    volumes:
      - ./db:/var/lib/postgresql/data
      - run:/var/run
    command: "-c TimeZone=Asia/Shanghai -c log_timezone=Asia/Shanghai -c listen_addresses='' -c unix_socket_permissions=0777"

volumes:
  run:

启动MetaTube后端:

docker-compose up -d

配置反向代理,新建NGINX站点配置文件:

nano /etc/nginx/sites-available/metatube

写入如下配置:

server {
    listen 80;
    listen [::]:80;
    server_name metatube.example.com;
    client_max_body_size 0;

    location / {
        proxy_pass http://127.0.0.1:9080;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Port $server_port;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

启用站点:

ln -s /etc/nginx/sites-available/metatube /etc/nginx/sites-enabled/metatube

签发TLS证书:

certbot --nginx --email [email protected] --agree-tos --no-eff-email

配置MetaTube插件

回到Jellyfin,找到插件->我的插件->MetaTube->设置:

填写MetaTube后端地址与TOKEN:

添加媒体库,媒体库的类型必须设置为:电影,同时勾选MetaTube作为元数据下载器与图片获取程序:

视频的文件名如果满足这个页面的要求是可以自动刮削的:https://metatube-community.github.io/wiki/naming-rules/

如果不满足也可以手动刮削,因为我的视频文件名大多数都不满足,我基本都是手动刮削的,随便找一个片子右键->刮削元数据,在名字这里输入番号,点击搜索:

正常的话就会显示搜索结果,建议直接用AVBASE的数据:

替换一下就行了:

片子的标题、简介、发行时间、等数据都能刮削下来:

最牛b的莫过于出演的AV女优姓名,都是真名,甚至连出生年月,三围,身高都有,这直接按女优找片不是舒服的一批:

最终效果:

最后我还是想再提醒一下,MetaTube非常适合JAV刮削,但如果是欧美的片子,那还是Stash适合,选择用哪一种方案取决于你自己收藏的片子类型= =

另外还有一个支持Jellyfin刮削JAV的插件JavSP,有性趣的可以看看,我没用过不知道和MetaTube比谁更好用,有屌大的可以说下。。

赞(0)
未经允许不得转载:拆东墙 » 刮削JAV更好的选择:Jellyfin+MetaTube

评论 抢沙发

登录

找回密码

注册