akimio521 / autofilm Goto Github PK
View Code? Open in Web Editor NEW一个为Emby、Jellyfin服务器提供Strm直链播放的小项目
License: GNU Affero General Public License v3.0
一个为Emby、Jellyfin服务器提供Strm直链播放的小项目
License: GNU Affero General Public License v3.0
使用巴哈姆特动画疯Strm 出現下列問題
【INFO】2024-03-05 17:21:27,620 - bahastrm - Baha-Strm定时任务创建成功:*/20 22,23,0,1 * * *
【INFO】2024-03-05 17:21:27,621 - bahastrm - Baha-Strm服务启动,立即运行一次
【WARNING】2024-03-05 17:21:30,694 - bahastrm - 未获取到文件信息,3秒后重试 ...
【WARNING】2024-03-05 17:21:33,726 - bahastrm - 未获取到文件信息,3秒后重试 ...
【WARNING】2024-03-05 17:21:36,756 - bahastrm - 未获取到文件信息,3秒后重试 ...
【WARNING】2024-03-05 17:21:39,757 - bahastrm - https://aniopen.an-i.workers.dev/ 请确保当前季度番剧文件夹存在
通过Emby播放strm文件后无法记录播放进度,会直接标记为已播放,想请问一下你是否也遇到了这个问题。
setting:
output_path: ./media/ # 输出路径
l_threads: 3 # list_files线程数
p_threads: 8 # processing_file线程数
subtitle: True # 是否下载字幕
img: False # 是否下载图片
nfo: True # 是否下载视频信息文件
url_encode: True # 是否对生成的strm文件中的链接进行URL编码
webdav:
movie:
url: http://127.0.0.1:5244/dav/onedriver/movie/
username: admin
password: admin
我的alist没有设置token,在旧版本中,使用python3 autofilm.py --webdav_url http://127.0.0.1:5244/dav/onedriver/movie/ --username admin --password admin --output_path /opt/strm/ --nfo true --img true,这样是完全可以工作的。我不知道要怎么修改。
docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "/entrypoint.sh": stat /entrypoint.sh: no such file or directory: unknown.
zz@iStoreOS:/AutoFilm-1.0.1# python /mnt/-1/AutoFilm-1.0.1/main.py
Traceback (most recent call last):
File "/mnt/-1/AutoFilm-1.0.1/main.py", line 5, in
import autofilm
File "/mnt/-1/AutoFilm-1.0.1/autofilm.py", line 13, in
from webdav3.client import Client
File "/usr/lib/python3.10/site-packages/webdav3/client.py", line 12, in
import lxml.etree as etree
ModuleNotFoundError: No module named 'lxml.etree'
zz@iStoreOS:/AutoFilm-1.0.1# pip show lxml
Name: lxml
Version: 5.2.2
Summary: Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.
Home-page: https://lxml.de/
Author: lxml dev team
Author-email: [email protected]
License: BSD-3-Clause
Location: /usr/lib/python3.10/site-packages
Requires:
Required-by: webdavclient3
root@iStoreOS:/mnt/-1/AutoFilm-1.0.1#
最近在用chinesesubfinder下载字幕,但是识别不到strm文件,去那边提了issue一直没有回复,今天试着复制strm文件重命名为.mkv居然能识别出来了,也算是一种临时的解决办法吧
按照教材设置,emby播放为什么还是跑服务器带宽?
实际使用中发现的。大佬勿怪😁。
1,判断本地是否有.strm,有就跳过,没有就生成。或者增加跳过或覆盖模式。(增加效率)
2,判断图片和字幕与本地大小是否一致,一致就跳过,不一致就覆盖。(有些图片是0kb,图片损坏,需要手动删除,重新运行)
3,刮削完成后触发emby刷新库。(目前设定的每2小时刷库)
File "main.py", line 11
SyntaxError: Non-ASCII character '\xe5' in file main.py on line 11, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
请问这个是什么情况
Traceback (most recent call last):
File "/root/AutoFilm/main.py", line 5, in
import autofilm
File "/root/AutoFilm/autofilm.py", line 6, in
from modules import Alist2Strm
File "/root/AutoFilm/modules/init.py", line 1, in
from .Alist2Strm import Alist2Strm
File "/root/AutoFilm/modules/Alist2Strm.py", line 11, in
from alist import AlistFileSystem, AlistPath
File "/usr/local/lib/python3.10/dist-packages/alist/init.py", line 25, in
from asyncio import get_running_loop, run, TaskGroup
ImportError: cannot import name 'TaskGroup' from 'asyncio' (/usr/lib/python3.10/asyncio/init.py)
依赖包已安装,为啥还会出现这个错误?
python版本是3.10.7
程序每次读取alist列表数据时,很慢,以前webdav的时候,是读一个目录就能开始处理了,现在感觉像是把所有数据加载完后,才开始处理
能不能实现strm的增量更新,有时候云盘增加视频
问了一下ai好像是
item[-1]== '/'
的问题
.lstrip("/")
无论library_mode设置为True还是False都可以正常写入配置文件中output_dir所指定的位置。想咨询一下,这个脚本是不是不支持扫描子目录?
比如我的alist挂载云盘目录为:https://alist.example.com:666/dav/电视剧/**/2022 ,下面包含了狂飙、人世间两个子目录,运行后会报错:
Traceback (most recent call last):
File "D:\电影\autofilm.py", line 108, in
directory, files, count = list_files(args.webdav_url, args.username, args.password, args.show_path, depth=None, path='', count=0, proxies=proxies)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\电影\autofilm.py", line 41, in list_files
subdirectory, subfiles, count = list_files(webdav_url + item, username, password, depth=None if depth is None else depth - 1, path=path+item, count=count)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: list_files() missing 1 required positional argument: 'show_path'
但是当我改为:https://alist.example.com:666/dav/电视剧/**/2022/狂飙,则可以正常获取狂飙目录下的媒体信息并输出strm文件。
正在执行主程序...
[2024-06-19 19:19:40,533][INFO]:当前的APP版本是:v1.1.1-2
[2024-06-19 19:19:40,533][INFO]:配置文件路径:/app/config/config.yaml
[2024-06-19 19:19:40,534][INFO]init:=================输出目录:/app/media==================
[2024-06-19 19:19:40,538][CRITICAL]_processer:登录失败,错误信息:401 Client Error: Unauthorized for url:
我保证我的账号和密码没有错误
已经设置好了token,但是为什么识别不出来呢
建议根据alist中的视频文件,自动刮削整理分类成媒体库
自行安装本程序有一定的难度,请问作者,有计划将本程序做成docker吗,这样NAS用户,都可以使用,会很方便的。
我的服务器是1g/40g轻量云服务器,如果这样是emby边看边缓存,受服务器带宽限制,是否可以让他直接从alist获取播放链接直接播放
错误信息
autofilm | 正在执行主程序...
autofilm | [2024-06-10 22:06:18,569][INFO]<module>:当前的APP版本是:v1.1.0
autofilm | [2024-06-10 22:06:18,569][INFO]<module>:配置文件路径:config/config.yaml
autofilm | [2024-06-10 22:06:18,571][ERROR]__init__:配置文件/app/config/config.yaml读取错误,错误信息:'output_dir'
autofilm | Traceback (most recent call last):
autofilm | File "/app/main.py", line 20, in <module>
autofilm | my_autofilm = autofilm.AutoFilm(config_path=args.config_path)
autofilm | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
autofilm | File "/app/autofilm.py", line 56, in __init__
autofilm | logging.info(f"输出目录:{self.output_dir}".center(50, "="))
autofilm | ^^^^^^^^^^^^^^^
autofilm | AttributeError: 'AutoFilm' object has no attribute 'output_dir'
autofilm | 等待 3600 秒后再次执行...
config 配置文件内容
Settings:
output_path: /opt/dockge/stacks/autofilm/media # ./media # 输出路径尝试过相关路径与绝对路径,都报这个错误
subtitle: True # 是否下载字幕
img: False # 是否下载图片
nfo: True # 是否下载视频信息文件
AlistServerList:
- id: X
url: "https://alist.example.com"
username: alist
password: "password"
base_path: /xunlei-1/media
[2024-07-05 10:57:43,228][INFO]:当前的APP版本是:v1.1.1-2
[2024-07-05 10:57:43,228][INFO]:配置文件路径:/app/config/config.yaml
[2024-07-05 10:57:43,230][INFO]init:=================输出目录:/data/media=================
[2024-07-05 10:57:43,230][DEBUG]run:Alist服务器加载成功
[2024-07-05 10:58:04,662][DEBUG]_file_process:The.Last.Kingdom.S01E02.1080p.BluRay.REMUX.AVC.DTS-HD.MA.5.1-NOGRP.srt下载成功,文件本地目录:/欧美剧/孤国春秋/孤国春秋S01
[2024-07-05 10:58:04,662][DEBUG]_file_process:Mad.Max.1979.2160p.BluRay.REMUX.HEVC.DTS-HD.MA.5.1-FGT.srt下载成功,文件本地目录:/Movie/疯狂的麦克斯1 4K REMUX (1979)
[2024-07-05 10:58:04,663][DEBUG]_file_process:疯狂的麦克斯4 1080P REMUX.ass下载成功,文件本地目录:/Movie/疯狂的麦克斯4 4K REMUX(2015)
使用docker部署,请问config.yaml配置的输出目录output_dir,对应的是docker容器的目录还是宿主机的目录,现在把文件放到了容器的根目录
webdav删除后的文件夹后, 以相同参数再次运行, 原先已有的.strm .nfo 图片等文件不会同步删除
Dev-20240707 报错如下
正在执行主程序...
[2024-07-08 01:23:14,095][INFO]:当前的APP版本是:v1.1.2-2
[2024-07-08 01:23:14,095][INFO]:配置文件路径:/config/config.yaml
[2024-07-08 01:23:14,100][INFO]init:===================输出目录:/media====================
[2024-07-08 01:23:14,100][DEBUG]run_Alist2Strm:Alist服务器加载成功
[2024-07-08 01:23:14,101][DEBUG]load_ssl_context:load_ssl_context verify=True cert=None trust_env=True http2=False
[2024-07-08 01:23:14,102][DEBUG]load_ssl_context_verify:load_verify_locations cafile='/usr/local/lib/python3.12/site-packages/certifi/cacert.pem'
[2024-07-08 01:23:14,128][DEBUG]trace:connect_tcp.started host='192.168.2.174' port=5244 local_address=None timeout=5 socket_options=None
[2024-07-08 01:23:14,130][DEBUG]trace:connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f6bb24cfd70>
[2024-07-08 01:23:14,131][DEBUG]trace:send_request_headers.started request=<Request [b'POST']>
[2024-07-08 01:23:14,131][DEBUG]trace:send_request_headers.complete
[2024-07-08 01:23:14,131][DEBUG]trace:send_request_body.started request=<Request [b'POST']>
[2024-07-08 01:23:14,131][DEBUG]trace:send_request_body.complete
[2024-07-08 01:23:14,131][DEBUG]trace:receive_response_headers.started request=<Request [b'POST']>
[2024-07-08 01:23:14,134][DEBUG]trace:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Content-Type', b'application/json; charset=utf-8'), (b'Date', b'Sun, 07 Jul 2024 17:23:14 GMT'), (b'Content-Length', b'255')])
[2024-07-08 01:23:14,135][INFO]_send_single_request:HTTP Request: POST http://192.168.2.174:5244/api/auth/login/hash "HTTP/1.1 200 OK"
[2024-07-08 01:23:14,135][DEBUG]trace:receive_response_body.started request=<Request [b'POST']>
[2024-07-08 01:23:14,135][DEBUG]trace:receive_response_body.complete
[2024-07-08 01:23:14,135][DEBUG]trace:response_closed.started
[2024-07-08 01:23:14,136][DEBUG]trace:response_closed.complete
Traceback (most recent call last):
File "/app/main.py", line 29, in
my_autofilm.run_Alist2Strm()
File "/app/autofilm.py", line 74, in run_Alist2Strm
alist2strm = Alist2Strm(
^^^^^^^^^^^
File "/app/modules/alist2strm.py", line 63, in init
self.base_dir = client.fs.abspath(base_dir)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/alist/component/fs.py", line 2637, in abspath
path = fspath(path)
^^^^^^^^^^^^
TypeError: expected str, bytes or os.PathLike object, not NoneType
等待 3600 秒后再次执行...
你好,不好意思麻烦帮忙看下哪里设置的有问题,谢谢!
config.yaml配置文件如下:
Settings:
output_dir: media # 输出路径
subtitle: False # 是否下载字幕
img: False # 是否下载图片
nfo: False # 是否下载视频信息文件
library_mode: False # 媒体库模式
AlistServerList:
- id: 视频115 # 任意字符,用于标识Alist服务器
url: http://192.168.0.100:35244 # Alist服务器URL
username: admin # Alist账号
password: admin # Alist密码
base_path: /115/video/ # Alist服务器上文件夹路径
token:
async_mode: False # 设置 subtitle,img,nfo 等二进制文件是否启用异步下载
overwrite: False # AList未启用签名时,设置为空字符串
日志信息如下:
<html>
<body>
<!--StartFragment-->
2024/06/30 21:18:32 | stdout | 等待 3600 秒后再次执行...
-- | -- | --
2024/06/30 21:18:31 | stdout | [2024-06-30 21:18:31,627][INFO]__init__:=================输出目录:/app/media==================
2024/06/30 21:18:31 | stdout | [2024-06-30 21:18:31,620][INFO]<module>:配置文件路径:/app/config/config.yaml
2024/06/30 21:18:31 | stdout | [2024-06-30 21:18:31,620][INFO]<module>:当前的APP版本是:v1.1.1-2
2024/06/30 21:18:30 | stdout | 正在执行主程序...
<!--EndFragment-->
</body>
</html>
然后我在挂载的media文件夹里没有发现任何文件,通过终端进入docker内部,在/app/media下面也没有任何文件生成。
请问下我这个有什么问题吗,请指教下,谢谢!
本地指定目录里面一直没有生成strm文件
autofilm | 正在执行主程序... autofilm | [2024-05-11 16:40:58,276][INFO]<module>:当前的APP版本是:v1.0.1 autofilm | [2024-05-11 16:40:58,277][INFO]<module>:配置文件路径:config/config.yaml autofilm | [2024-05-11 16:40:58,279][INFO]__init__:输出目录:/opt/media/;list_files线程数:3;processing_file线程数:8 autofilm | [2024-05-11 16:40:58,279][INFO]run:开始生成[迪士尼动漫]Webdav服务器的Strm文件;剩余0个Webdav服务器未进行 autofilm | [2024-05-11 16:40:58,280][WARNING]get_config_value:Alist令牌token读取错误,默认关闭,错误信息:'token'
但是我并没有填写token,这个是固定报错的,后面没有任何日志内容了,也没有生成strm文件
好的
如果我添加了超过1个的WEBDAV地址,比如
webdav:
movie:
url: http://127.0.0.1:5244/dav/onedriver/movie/
username: admin
password: x
show:
url: http://127.0.0.1:5244/dav/onedriver/show/
username: admin
password: x
然后他的目录格式就会变成
只有奇怪的格式。这样在jellyfin扫描的时候,就无法分开了啊。就会被嵌套扫描。不能够每一个webdav地址都可以指定输出到某一个文件夹么。还是有我不知道的写法,我在论坛没有找到相关配置。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.