shenxianmq / Auto_Symlink

实时监控文件夹,创建与更新软链接/strm文件,自动复制与更新元数据,清空无效文件夹,清空无效软链接
535 stars 57 forks source link

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

Closed singer1026 closed 2 months ago

singer1026 commented 2 months ago

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

singer1026 commented 2 months ago

刚才看你修复了这个问题,但是还是有点小bug 生成的地址多了一个“/”
/d//115 另外还是希望生成的URL encodeURI下,第三方播放器有中文的路径没法播放

http://192.168.100.1:5244/d//115/影视库/天行健 (2024)/天行健.S01E02.2024.2160p.60fps.WEB-DL.H265.EDR.DDP5.1-BestWEB.mkv

我用ai写了一段Python encodeURI的方法 并测试通过,希望能给你提供一点帮助

from urllib.parse import urlparse, urlunparse, quote, quote_plus

def encode_url(url):
    # 解析URL
    parsed_url = urlparse(url)

    # 对路径部分进行编码
    encoded_path = quote(parsed_url.path, safe='/')

    # 对查询字符串部分进行编码
    encoded_query = quote_plus(parsed_url.query, safe=':/?&=#')

    # 重新构建URL,只替换路径和查询字符串部分
    encoded_url = urlunparse((
        parsed_url.scheme,  # 协议
        parsed_url.netloc,   # 网络位置(域名)
        encoded_path,        # 编码后的路径
        parsed_url.params if parsed_url.params else '',  # 参数(如果有)
        encoded_query,       # 编码后的查询字符串
        parsed_url.fragment if parsed_url.fragment else ''  # 片段(如果有)
    ))

    return encoded_url

if __name__ == "__main__":
    # 测试函数
    test_url = "http://192.168.100.1:5244/d/115/影视库/天行健 (2024)/天行健.S01E02.2024.2160p.60fps.WEB-DL.H265.EDR.DDP5.1-BestWEB.mkv"
    print(encode_url(test_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.S01E02.2024.2160p.60fps.WEB-DL.H265.EDR.DDP5.1-BestWEB.mkv