Giter Club home page Giter Club logo

auto_symlink's People

Contributors

shenxianmq avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

auto_symlink's Issues

关于在cloud模式下 alist 生成的strm的URL路径编码问题

我生成的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

windows最新版报错

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

希望能增加自动同步strm后联动批量重命令功能

最在使用这个软件配置小雅,能实现刮削小雅,实现emby上的海报功能,使用autosymlink+加了nastool联动真是神器,但目前试验下来还不能实现全自动,我的实现方法如下:
autosymlink同步小雅目录,但由于小雅上资源命名太乱,有的名称中有4k\1080p等实际检测,有的名称直接就是01、02、03这种资源emby、nastool是无法识别的,所以我现在是用autosymlin中的批量重命名去除4k\1080字样,再用剧集命名实现在01、02、03资源加上文件夹名称,这样资源就差不多能让nastool刮削nfo文件了,我的需求如下:

在自动同步strm文件后,能自动联通批量重命名和剧集命名功能实现规范命名功能,然后再由nastool自动刮削nfo文件,这样全程我就不用再手动 了,能实现类型devops流水线的功能

希望支持arm/v7平台

在树莓派上部署时提示:no matching manifest for linux/arm/v7 in the manifest list entries。
希望您可以增加arm/v7的docker镜像。

Symlink软链接会失效吗?

使用Symlink模式,过两天emby就无法播放了,需要重新手动同步,才能播放,但是同步也没有生成新的软连接。

bdmv有没有在技术上支持,iso呢

可能是个小白问题哈,打扰大佬了
我听说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(可以适当调低)

参考资料

https://blog.csdn.net/chenbaixing/article/details/125054456

一些问题

  1. 支持企业微信、PushPlus、IYUU、Slack、PushDeer的通知;
  2. 支持交互,在微信等支持交互的通知渠道上,可以手动触发同步;
  3. 部分帮助的描述感觉有些模糊,主要是软链接更新和元数据更新的部分;
  4. 实时监测在网盘文件改动了之后,不会自动触发。

昨晚的版本CD2模式有问题

地址并没有加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、和添加新的strm。我用的cd2挂载谷歌和阿里云,但网盘文件都只是添加 没有变动其他文件,
strm会自己失效吗

strm生成的时间

有个疑问strm生成的时间顺序在哪设置?现在 as 扫描结束后生成的 strm 文件造成 emby 扫描后影片排序无法根据片子入 115 盘的先后顺序排序,排序选择加入时间直接是乱七八糟的排序,如果 cd2 挂载给 emby 直接扫描排序就正常,大佬请问根据文件的生成时间顺序创建strm能实现吗?

求一个支持玩客云树莓派的docker

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.

写入.strm目录的不是media_dir,而是symlink_dir

#cloud_path是网盘文件夹的挂载路径,用以检测网盘文件夹的挂载状态,需要填具体的网盘挂载路径,如115网盘就填/volume1/CloudNAS/CloudDrive2/115
  • cloud_path: "/apool/drive"
    #网盘挂载文件夹
    media_dir: "/apool/drive/YouMa"
    #本地链接文件夹,程序会在此文件夹中创建软链接/strm文件
    symlink_dir: "/apool/local/YouMa"

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?

是我设置不对吗 大佬看看

alist挂载类型生产地址多了一个“/”

CloudDrive2 生成的 strm 文件地址有误

生成的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 后面的 // 不一致。

外网通过IPv6访问不了WebUI

由于申请不到公网IPv4,故通过IPv6外网访问家里的NAS,现在Docker模式安装后,使用host网络模式访问不到Auto_Symlink的WebUI,而其他host模式安装的应用(如emby)通过外网IPv6是可以正常访问的

bark推送异常

已经配置了bark推送地址和api,但是测试没反应,且更新完提示无配置。

请教一下实时监控功能的问题

目前我遇到的问题就是同步功能是正常运行的,但是实时监控的功能看上去是没有起作用。
这里我想问一下实时监控功能是我理解的网盘这边文件内容发生修改,auto_symlink就会自动刷新strm以及元数据吗?

可否支持Alist挂载的绝对路径?

用alist的dav挂载,然后生成文件的绝对路径,如下:
xxx.strm:
/Ali/文件夹/文件夹/文件名.mp4

这样的好处是,strm文件没有泄露风险。

配合embyExternalUrl,可以转直链。

如果可以,感谢。

采用rclone+alist获取到的strm有些问题

获取的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'])

没有strm文件生成

2023-12-23 21:26:09 - INFO - 线程 Thread-8: /115/EmbyMedia/MediaData/电影/内地/鬼子来了 (2000)/鬼子来了.2000.nfo 到 /EmbyMedia/电影/内地/鬼子来了 (2000)/鬼子来了.2000.nfo
2023-12-23 21:26:09 - INFO - 线程 Thread-2: /115/EmbyMedia/MediaData/电影/内地/鹦鹉杀 (2023)/Tainted.Love.2023.2160p.WEB-DL.H265.10bit.DDP2.0-GPTHD.nfo 到 /EmbyMedia/电影/内地/鹦鹉杀 (2023)/Tainted.Love.2023.2160p.WEB-DL.H265.10bit.DDP2.0-GPTHD.nfo
2023-12-23 21:26:10 - INFO - 线程 Thread-3: /115/EmbyMedia/MediaData/电影/内地/饮食男女 (1994)/clearlogo.png 到 /EmbyMedia/电影/内地/饮食男女 (1994)/clearlogo.png
2023-12-23 21:26:10 - INFO - 完成::: 更新元数据
2023-12-23 21:26:10 - INFO - 全同步完成::: /115/EmbyMedia/MediaData/电影/内地 => /EmbyMedia/电影/内地
2023-12-23 21:26:10 - INFO - 总耗时::: 90.17 秒,下面是各项程序耗时
2023-12-23 21:26:10 - INFO - 清理失效文件夹:总耗时 0.00 秒, 共处理文件夹数:0, 共清理失效文件夹数:0
2023-12-23 21:26:10 - INFO - 清除无效strm文件:总耗时 0.00 秒, 总strm文件数: 0, 已清除无效strm文件数: 0
2023-12-23 21:26:10 - INFO - 创建strm文件:总耗时 21.82 秒, 共处理strm文件数:138个,共创建strm文件数:138,共跳过strm文件数:0
2023-12-23 21:26:10 - INFO - 更新元数据:总耗时 68.34 秒, 共处理元数据数:459个,共复制元数据数:459,共跳过元数据数:0
2023-12-23 21:26:10 - INFO - 同步完成,共耗时90.17秒.
2023-12-23 21:26:10 - INFO - 开始备份新增目录...
2023-12-23 21:26:10 - INFO - 开始备份目录::: /EmbyMedia/电影/内地 => /app/backup/cd8461a5-4379-4a63-8056-8cf318f99e17
2023-12-23 21:26:11 - INFO - 备份成功::: /EmbyMedia/电影/内地 => /app/backup/cd8461a5-4379-4a63-8056-8cf318f99e17

但是没有strm文件生成。

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挂载进行同步的

希望可以增加一些忽略规则

感谢立项,是个很有用的东东!

我的用法:
为alist中的文件创建strm文件(内容是 http://192.168.x.x/d/xxxxx.mp4 ),将strm放到emby里刮削,生成海报墙,在电视端看。

以前我是用的library_strm,确实很需要一个新的解决方案,期待大佬的持续更新。library_strm在某些场景下有bug
例如一个文件夹下只有图片没有视频,就直接return退出程序
生成的strm文件要另外操作将%2F批量替换成/

提issue的背景:
在生成strm时,有一些不想要的内容也被创建出来,例如:

  • 里面包含了一些自己不想要的文件(转存可以自己整理,但挂载分享/alist就没办法)
  • 有一些有广告性质的短视频(XX体育,UU直播,懂的都懂)
  • 前段时间爆红的短剧(同样是挂载别人的分享/alist就没办法删)

这些文件生成了strm以后,再放到emby里会额外浪费很多时间,甚至是错误的刮削结果。

我的建议:
如果命中这些规则,就不生成strm文件,例如:

  • 文件名中包含关键词
  • 文件小于xxMB(这个和“小于指定大小的视频直接复制”的区别是,想舍弃这些文件,大概就是100MB以内的文件,不想复制也不想生成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失败不知道是不是我没有配置好。

软链接同步希望能支持改名后的软链接

目前如果爬下来的软链接改名后,再同步一次会删除改名的软链接并重新生成一个新的。
但其实改名的软链接一样是有效的,且对影库整理有极大帮助。

希望同步时,检查软链接是否存在的依据,不是单靠文件名,而是检查软链接指向的实际文件。
如果实际文件有效,则保留原来的软链接,而不是重新生成一个。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.