shenxianmq / auto_symlink Goto Github PK
View Code? Open in Web Editor NEW实时监控文件夹,创建与更新软链接/strm文件,自动复制与更新元数据,清空无效文件夹,清空无效软链接
实时监控文件夹,创建与更新软链接/strm文件,自动复制与更新元数据,清空无效文件夹,清空无效软链接
我生成的strm文件,发现里面把URL的path的路径/都转换为了%2F了,导致无法正常播放。我知道JavaScript中可以用encodeURI()来处理
http://192.168.100.1:5244/d/115%2F%E5%BD%B1%E8%A7%86%E5%BA%93%2F%E5%A4%A9%E8%A1%8C%E5%81%A5%20%EF%BC%882024%EF%BC%89%2F%E5%A4%A9%E8%A1%8C%E5%81%A5.S01E01.2024.2160p.60fps.WEB-DL.H265.EDR.DDP5.1-BestWEB.mkv
希望结果为
原始URL:
http://192.168.100.1:5244/d/115/影视库/天行健 (2024)/天行健.S01E01.2024.2160p.60fps.WEB-DL.H265.EDR.DDP5.1-BestWEB.mkv
strm URL为:
http://192.168.100.1:5244/d/115/%E5%BD%B1%E8%A7%86%E5%BA%93/%E5%A4%A9%E8%A1%8C%E5%81%A5%20%EF%BC%882024%EF%BC%89/%E5%A4%A9%E8%A1%8C%E5%81%A5.S01E01.2024.2160p.60fps.WEB-DL.H265.EDR.DDP5.1-BestWEB.mkv
console.log(encodeURI("http://192.168.100.1:5244/d/115/影视库/天行健 (2024)/天行健.S01E01.2024.2160p.60fps.WEB-DL.H265.EDR.DDP5.1-BestWEB.mkv"))
希望作者能修复它 thanks
我是群辉主机,目前jellyfin和alist都是用了反代统一端口,目前用本工具生成好的strm文件需要在strm内手动将http变更为 https才能访问。例如:http://xx.xxx:88/d/xxx是不能访问的,变更为https://xx.xxx:88/d/xxx能正常访问
大佬,这个生成的直链支持115网盘302重定向吗?
C:\Windows\system32>"D:\auto_symlink\auto_symlink.py"
Traceback (most recent call last):
File "D:\auto_symlink\auto_symlink.py", line 397, in
auto_sync = AutoSync()
^^^^^^^^^^
File "D:\auto_symlink\auto_symlink.py", line 26, in init
self.yaml_data["func_order"], key=self.yaml_data["func_order"].get
~~~~~~~~~~~~~~^^^^^^^^^^^^^^
TypeError: 'NoneType' object is not subscriptable
请问在同步的文件夹下是否会自动创建并同步二级文件夹,比如说源服务器在同步的文件夹下又创建了文件夹和里面的文件,但是同步不会在本地自动创建新的二级文件夹和文件
有几次同步完成后直接把同步文件夹检测成空文件夹删了
最在使用这个软件配置小雅,能实现刮削小雅,实现emby上的海报功能,使用autosymlink+加了nastool联动真是神器,但目前试验下来还不能实现全自动,我的实现方法如下:
autosymlink同步小雅目录,但由于小雅上资源命名太乱,有的名称中有4k\1080p等实际检测,有的名称直接就是01、02、03这种资源emby、nastool是无法识别的,所以我现在是用autosymlin中的批量重命名去除4k\1080字样,再用剧集命名实现在01、02、03资源加上文件夹名称,这样资源就差不多能让nastool刮削nfo文件了,我的需求如下:
在自动同步strm文件后,能自动联通批量重命名和剧集命名功能实现规范命名功能,然后再由nastool自动刮削nfo文件,这样全程我就不用再手动 了,能实现类型devops流水线的功能
在树莓派上部署时提示:no matching manifest for linux/arm/v7 in the manifest list entries。
希望您可以增加arm/v7的docker镜像。
目前的alist版本默认是打开签名所有选项的。这个时候获取的直链除了文件自己的链接以外还会再后面附加签名信息http://192.168.50.1:5222/d/%E9%98%BF%E9%87%8C%E4%BA%91%E7%9B%98/Movies/****.mkv?sign=****类似于这样,但是我看到目前工生成的链接都没有签名相关信息,所以作者有可能把这部分加进来吗?
能否增加变量,用于设定创建的文件夹的用户PUID及用户组GUID
服务都在我的Linux服务器上,选择symlink后emby无法播放视频,改为strm后恢复正常,不知道为什么?
如题,可以实现这个功能吗
我使用的是docker,但是创建出来的文件权限为root,作者能否增加UID、GID文件权限执行
大佬,我通过autosym成功同步后,在服务器(iStoreOS)点开link文件目录下的strm能够显示视频地址,但在本地点开相同路径下的strm显示“系统找不到指定路径”,请问这是什么原因,我是通过rclone将alist挂载到本地。
使用Symlink模式,过两天emby就无法播放了,需要重新手动同步,才能播放,但是同步也没有生成新的软连接。
N1盒子,3天前用OPENWRT能正常安装,同设备昨天用coreelec装了提示: no matching manifest for linux/arm/v8 in the manifest list entr,初中毕业头疼中
可能是个小白问题哈,打扰大佬了
我听说iso不支持生成strm是真的吗?
然后我本地下载的bdmv这种,我也想通过strm方式把元数据跟原始bdmv分开,类似nastool的硬链接概念
有可能实现吗?strm是不是不可能指向一个文件夹?
配置了定时任务, 但是一直报错。
2024-02-01 22:25:01,624 - WARNING - Run time of job "SyncScheduled.auto_symlink (trigger: cron[month='*', day='*', day_of_week='*', hour='22', minute='25'], next run at: 2024-02-02 22:25:00 CST)" was missed by 0:00:01.558621
定时任务执行时间过长,导致中断。
Auto_Symlink/auto_symlink.py中set_scheduled方法, 两个add_job函数中新增参数misfire_grace_time=300(可以适当调低)
你好,我有一个想法不知道开发者能否添加一下这个功能。
alist有api可以直接历遍目录下的文件地址如下
https://alist.nn.ci/zh/guide/api/fs.html#post-%E5%88%97%E5%87%BA%E6%96%87%E4%BB%B6%E7%9B%AE%E5%BD%95
只需要用到
POST /api/fs/list
path 路径
Authorization key
以及url
然后拼接成url/d/path/视频文件
这样就可以不用挂载就可以直接生成strm到指定路径下
地址并没有加http:,但是里面加了static/http/http://,拉2.1.1的版本就没有问题,那个版本稍微好点,我只需要元数据和strm,字幕不需要
另外,我全部同步,我是小雅挂到CD54的webdav下面,下载模式会经常是失败,复制模式会可能只有文件,没有内容
2024-01-22 21:38:33,127 - INFO - 元数据复制出错:[Errno 5] Input/output error
2024-01-22 21:38:33,128 - INFO - Traceback (most recent call last):
File "/app/autosync/MetadataCopyer.py", line 47, in copy_metadata self.save_metadata(source_file, target_file)
File "/app/autosync/MetadataCopyer.py", line 101, in save_metadata shutil.copy2(source_
_file, target_file)
File "/usr/local/lib/python3.11/shutil.py", line 436, in copy2
copyfile(src, dst, follow_symlinks=follow_symlinks)
File "/usr/local/lib/python3.11/shutil.py", line 279, in copyfile
copyfileobj(fsr, fdst)
File "/usr/local/lib/python3.11/shutil.py", line 197, in copyfileobj
buf = fsrc_read(length)
OSError: [Errno 5] Input/output error
我有时同步文件,查看日志发现 自动删除无效strm、和添加新的strm。我用的cd2挂载谷歌和阿里云,但网盘文件都只是添加 没有变动其他文件,
strm会自己失效吗
有个疑问strm生成的时间顺序在哪设置?现在 as 扫描结束后生成的 strm 文件造成 emby 扫描后影片排序无法根据片子入 115 盘的先后顺序排序,排序选择加入时间直接是乱七八糟的排序,如果 cd2 挂载给 emby 直接扫描排序就正常,大佬请问根据文件的生成时间顺序创建strm能实现吗?
Unable to find image 'shenxianmq/auto_symlink:latest' locally
latest: Pulling from shenxianmq/auto_symlink
docker: no matching manifest for linux/arm/v7 in the manifest list entries.
#cloud_path是网盘文件夹的挂载路径,用以检测网盘文件夹的挂载状态,需要填具体的网盘挂载路径,如115网盘就填/volume1/CloudNAS/CloudDrive2/115
2023-12-18 16:18:20 - INFO - 线程 Thread-2::::/apool/drive/YouMa/a-z/A/AARM/AARM-018/AARM-018.mp4 => /apool/local/YouMa/a-z/A/AARM/AARM-018/AARM-018.strm
2023-12-18 16:23:29 - INFO - 创建strm文件失败:/apool/drive/YouMa/a-z/A/AARM/AARM-018/AARM-018.mp4
2023-12-18 16:23:29 - INFO - error:Invalid URL '/apool/local/YouMa/a-z/A/AARM/AARM-018/AARM-018.mp4': No scheme supplied. Perhaps you meant https:///apool/local/YouMa/a-z/A/AARM/AARM-018/AARM-018.mp4?
是我设置不对吗 大佬看看
用命令行安装,最后提示错误运行不了,可能问题出现在rslave上面,请问怎么操作
大数据是否能自动同步到对应的Season 1的目录下(或者S01)
我手动下载小雅的元数据,替换了IP地址,但是他这个地址编码和你你的不一样,有什么办法换成你那种%字符的吗
环境:unraid
挂载情况:使用clouddrive2以webdav的方式挂载小雅超集
生成路径:http://192.168.31.215:5678/d/%2F%E5%8A%A8%E6%BC%AB%2F%E5%84%BF%E7%AB%A5%2F%E4%B8%AD%E5%8D%8E%E7%BB%8F%E5%85%B8%20-%20%E5%AD%97%E6%9C%89%E9%81%93%E7%90%86%2F%E5%AD%97%E6%9C%89%E9%81%93%E7%90%86%20%E7%AC%AC%E4%BA%8C%E5%AD%A3%2F%E7%AC%AC3%E5%8D%95%E5%85%83%E7%AC%AC2%E8%AF%BE%2F60%20%E7%BE%8E.MP4
解码后:http://192.168.31.215:5678/d//动漫/儿童/中华经典 - 字有道理/字有道理 第二季/第3单元第2课/60 美.MP4
动漫前多了一个“/”
生成的strm文件访问提示404,对比后发现False后面应该有两个//,生成的 strm 文件只有一个
http://homelab:19798/static/http/homelab:19798/False%2F115%2Fbili-videos%2F%E4%B8%8D%E5%A6%82%E8%B7%B3%E8%88%9E%2FBV11a4y1C7Jh.mp4
http://homelab:19798/static/http/homelab:19798/False//115%2Fbili-videos%2F%E4%B8%8D%E5%A6%82%E8%B7%B3%E8%88%9E%2FBV11a4y1C7Jh.mp4
上面的是生成的,下面的是复制出来的,可以看到 False 后面的 // 不一致。
由于申请不到公网IPv4,故通过IPv6外网访问家里的NAS,现在Docker模式安装后,使用host网络模式访问不到Auto_Symlink的WebUI,而其他host模式安装的应用(如emby)通过外网IPv6是可以正常访问的
docker部署需要使用host网络,来使用local:19798 而不是采用IP,减少NAT层数,
但是有时默认的8095端口会被占用,需要自定义下。
已经配置了bark推送地址和api,但是测试没反应,且更新完提示无配置。
目前我遇到的问题就是同步功能是正常运行的,但是实时监控的功能看上去是没有起作用。
这里我想问一下实时监控功能是我理解的网盘这边文件内容发生修改,auto_symlink就会自动刷新strm以及元数据吗?
用alist的dav挂载,然后生成文件的绝对路径,如下:
xxx.strm:
/Ali/文件夹/文件夹/文件名.mp4
这样的好处是,strm文件没有泄露风险。
配合embyExternalUrl,可以转直链。
如果可以,感谢。
系统:Debian12
挂载方式:davfs2 挂载alist/dav
生成地址后,strm文件内容为:
https://IP:端口/dALI-RESOURCE%2FB%2FBlossoms.Shanghai.2023.S01E27.2160p.WEB-DL.HEVC.10bit.DV.DDP.4Audios.mp4
dALI应当为d/ALI
可以麻烦看一下吗?
获取的strm中应改是该文件的直链,alist的直链在默认设置下是永久的(在管理-设置-全局中可以查看,默认0),直链样式应该为http://{cloud_url}/d/{target_file}?sign={sign}
以下是我尝试获取的代码,希望能帮助你加快开发,同时在添加同步时需要获取alist的username和password
import requests
import json
ip = ''
payload = {"username": "", "password": ""}
headers1 = {
'User-Agent': 'Apifox/1.0.0 (https://apifox.com)',
'Content-Type': 'application/json'
}
authorization = json.loads(
requests.post(url=f"http://{ip}/api/auth/login",
json=payload,
headers=headers1).text)['data']['token']
url = f'http://{ip}/api/fs/list'
headers = {
'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
'Authorization': authorization
}
data = {
'page': 1,
'password': "",
'path': "/",
'per_page': 0,
'refresh': False
}
data = json.loads(requests.post(url=url, headers=headers,
json=data).text)['data']['content']
for i in data:
print(i['name'], i['sign'])
docker版2.0功能丰富,支持全天候,期待win2.0版本
docker run -d
--name auto_symlink
-e TZ=Asia/Shanghai
-v /115/EmbyMedia:/115/EmbyMedia:rslave
-v /115/EmbyMedia/MediaData:/Media
-v /115/auto_symlink/config:/app/config
-p 8095:8095
--restart unless-stopped
--log-opt max-size=10m
--log-opt max-file=3
shenxianmq/auto_symlink:latest
2024-04-29 11:07:13,239 - INFO - 元数据复制出错::: /home/115/Emby/Tomato_nt/shorts/一树梨花压海棠 (2024)/season01-poster.jpg => [Errno 22] Invalid argument
2024-04-29 11:07:13,239 - INFO - Traceback (most recent call last):
File "/app/autosync/MetadataCopyer.py", line 74, in copy_metadata
self.save_metadata(source_file, target_file)
File "/app/autosync/MetadataCopyer.py", line 108, in save_metadata
shutil.copy2(source_file, target_file)
File "/usr/local/lib/python3.11/shutil.py", line 436, in copy2
copyfile(src, dst, follow_symlinks=follow_symlinks)
File "/usr/local/lib/python3.11/shutil.py", line 279, in copyfile
copyfileobj(fsrc, fdst)
File "/usr/local/lib/python3.11/shutil.py", line 197, in copyfileobj
docker部署,网盘是115,使用cd2挂载进行同步的
cd2掉盘后重新挂载,提示挂载点不是空的,删除挂载点的文件夹,重新挂载115网盘,发现autolink的链接文件夹也被删除了
感谢立项,是个很有用的东东!
我的用法:
为alist中的文件创建strm文件(内容是 http://192.168.x.x/d/xxxxx.mp4 ),将strm放到emby里刮削,生成海报墙,在电视端看。
以前我是用的library_strm,确实很需要一个新的解决方案,期待大佬的持续更新。library_strm在某些场景下有bug
例如一个文件夹下只有图片没有视频,就直接return退出程序
生成的strm文件要另外操作将%2F批量替换成/
提issue的背景:
在生成strm时,有一些不想要的内容也被创建出来,例如:
这些文件生成了strm以后,再放到emby里会额外浪费很多时间,甚至是错误的刮削结果。
我的建议:
如果命中这些规则,就不生成strm文件,例如:
挂载alist从阿里云盘转存115失败,挂载cd2转存成功。
Alist失败:
2024-05-20 10:15:14,282 - INFO - #转存监控# 开始转移文件::: /cpalon/ali/动漫/怪兽8号(2024)/Season 1/Kaiju No. 8.S01E05.2024.2160p.WEB-DL.H264.AAC-BestWEB.mkv => /cpalon/115/palon/动漫/怪兽8号(2024)/Season 1/Kaiju No. 8.S01E05.2024.2160p.WEB-DL.H264.AAC-BestWEB.mkv
2024-05-20 10:15:14,284 - INFO - #转存监控# 文件转移失败::: /cpalon/ali/动漫/怪兽8号(2024)/Season 1/Kaiju No. 8.S01E05.2024.2160p.WEB-DL.H264.AAC-BestWEB.mkv => /cpalon/115/palon/动漫/怪兽8号(2024)/Season 1/Kaiju No. 8.S01E05.2024.2160p.WEB-DL.H264.AAC-BestWEB.mkv
Traceback (most recent call last):
挂载cd2成功:
2024-05-19 06:11:56,663 - INFO - #转存监控# 文件转移成功::: /emby/palon/alist/ali/动漫/永生/S3/02 4K.mp4 => /emby/palon/alist/115/palon/动漫/永生/S3/02 4K.mp4
不过cd2需要会员才可以跨盘转文件,而alist跨盘只能复制,alist失败不知道是不是我没有配置好。
如题,每天都会全部生成一次STRM,求问如何解决
目前如果爬下来的软链接改名后,再同步一次会删除改名的软链接并重新生成一个新的。
但其实改名的软链接一样是有效的,且对影库整理有极大帮助。
希望同步时,检查软链接是否存在的依据,不是单靠文件名,而是检查软链接指向的实际文件。
如果实际文件有效,则保留原来的软链接,而不是重新生成一个。
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.