demoss

m3u generator

Feb 21st, 2025
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.03 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. objj=avo
  4. ipaddr='10.0.255.15'
  5. scph="/var/www/html/$objj"
  6. logfile="/var/log/${objj}_script.log"
  7.  
  8. # Функция для логирования
  9. log() {
  10.   echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$logfile"
  11. }
  12.  
  13. # Функция для замены пробелов на подчеркивания
  14. replace_spaces() {
  15.   local input="$1"
  16.   echo "$input" | sed 's/ /_/g'
  17. }
  18.  
  19. # Функция для транслитерации
  20. transliterate() {
  21.   local input="$1"
  22.   echo "$input" | sed \
  23.     -e 's/а/a/g' -e 's/б/b/g' -e 's/в/v/g' -e 's/г/g/g' \
  24.     -e 's/д/d/g' -e 's/е/e/g' -e 's/ё/yo/g' -e 's/ж/zh/g' \
  25.     -e 's/з/z/g' -e 's/и/i/g' -e 's/й/y/g' -e 's/к/k/g' \
  26.     -e 's/л/l/g' -e 's/м/m/g' -e 's/н/n/g' -e 's/о/o/g' \
  27.     -e 's/п/p/g' -e 's/р/r/g' -e 's/с/s/g' -e 's/т/t/g' \
  28.     -e 's/у/u/g' -e 's/ф/f/g' -e 's/х/h/g' -e 's/ц/ts/g' \
  29.     -e 's/ч/ch/g' -e 's/ш/sh/g' -e 's/щ/sch/g' -e 's/ъ//g' \
  30.     -e 's/ы/y/g' -e 's/ь//g' -e 's/э/e/g' -e 's/ю/yu/g' \
  31.     -e 's/я/ya/g' \
  32.     -e 's/А/A/g' -e 's/Б/B/g' -e 's/В/V/g' -e 's/Г/G/g' \
  33.     -e 's/Д/D/g' -e 's/Е/E/g' -e 's/Ё/Yo/g' -e 's/Ж/Zh/g' \
  34.     -e 's/З/Z/g' -e 's/И/I/g' -e 's/Й/Y/g' -e 's/К/K/g' \
  35.     -e 's/Л/L/g' -e 's/М/M/g' -e 's/Н/N/g' -e 's/О/O/g' \
  36.     -e 's/П/P/g' -e 's/Р/R/g' -e 's/С/S/g' -e 's/Т/T/g' \
  37.     -e 's/У/U/g' -e 's/Ф/F/g' -e 's/Х/H/g' -e 's/Ц/Ts/g' \
  38.     -e 's/Ч/Ch/g' -e 's/Ш/Sh/g' -e 's/Щ/Sch/g' -e 's/Ъ//g' \
  39.     -e 's/Ы/Y/g' -e 's/Ь//g' -e 's/Э/E/g' -e 's/Ю/Yu/g' \
  40.     -e 's/Я/Ya/g' \
  41.     -e 's/1/1/g' -e 's/2/2/g' -e 's/3/3/g' -e 's/4/4/g' \
  42.     -e 's/5/5/g' -e 's/6/6/g' -e 's/7/7/g' -e 's/8/8/g' \
  43.     -e 's/9/9/g' -e 's/0/0/g'
  44. }
  45.  
  46.  
  47.  
  48. # Мониторинг изменений
  49. old_files=$(find "$scph" -type f)
  50. trap "log 'Скрипт завершен.'; exit 0" SIGTERM SIGINT
  51.  
  52. while true; do
  53. # Проверка существования директории
  54. if [ ! -d "$scph" ]; then
  55.   log "Директория $scph не существует!"
  56.   exit 1
  57. fi
  58.  
  59. # Переименование файлов
  60. find "$scph" -type f | while read -r file; do
  61.   dir=$(dirname "$file")
  62.   filename=$(basename "$file")
  63.   new_filename=$(transliterate "$filename")
  64.   new_filename=$(replace_spaces "$new_filename")
  65.  
  66.   if [[ "$filename" != "$new_filename" ]]; then
  67.     mv "$file" "$dir/$new_filename"
  68.     log "Переименован: $file -> $dir/$new_filename"
  69.   fi
  70. done
  71.   files=$(find "$scph" -type f)
  72.  
  73.   if [ "$files" != "$old_files" ]; then
  74.     log "Обнаружены изменения в директории $scph."
  75.     old_files=$files
  76.     rm -rf "/var/www/html/$objj.m3u"
  77.  
  78.     for f in "$scph"/*.mp3; do
  79.       filename=$(basename "$f")
  80.       echo "#EXTINF:-1,$objj:$filename" >> "/var/www/html/$objj.m3u"
  81.       echo "http://$ipaddr/$objj/$filename" >> "/var/www/html/$objj.m3u"
  82.     done
  83.  
  84.     sed -i '1s/^/#EXTM3U\n/' "/var/www/html/$objj.m3u"
  85.     log "Плейлист обновлен."
  86.     mosquitto_pub -h localhost -t pla -m "new" -q 2
  87.   fi
  88.  
  89.   sleep 10
  90. done
Tags: BASH
Add Comment
Please, Sign In to add comment