#!/bin/bash

# 获取脚本所在目录路径
script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

# 目标文件后缀名列表
target_extensions=("mp4" "mkv")

# 输出文件路径
output_file="$script_dir/filelist.txt"
url_host="http://nas.laoknas.com:1818/%E7%94%B5%E5%BD%B1/"

# 清空已存在的输出文件
> "$output_file"

# 函数用于将字符串进行URL编码
urlencode() {
    # Usage: urlencode "string"
    local string="$1"
    echo -n "$string" | xxd -plain | tr -d '\n' | sed 's/\(..\)/%\1/g'
}

# 遍历目标目录下的文件，拼接文件名和 URL，写入输出文件
find "$script_dir" -type f \( -iname "*.mp4" -o -iname "*.mkv" \) -print0 |
while IFS= read -r -d '' file_name; do
    base_name=$(basename "$file_name")
    relative_path="${file_name#"$script_dir/"}"
    extension="${base_name##*.}"
    if [[ " ${target_extensions[@]} " =~ " $extension " ]]; then
        # 将中文字符和空格进行URL编码
        encoded_relative_path=$(urlencode "$relative_path")
        url="$url_host$encoded_relative_path"
        # 文件名，url_host/相对路径
        echo "$base_name,$url"
        # echo "$base_name,$url" >> "$output_file"
    fi
# 按文件名排序输出
done | sort -t ',' -k1 | paste -sd '\n' - > "$output_file"

echo "已生成输出文件: "$url_host'filelist.txt'