diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..ce2d0ca --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +*.md +*.example + diff --git a/.gitignore b/.gitignore index 1e7a74a..9b3540d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,14 +1,13 @@ -/.idea -/.vscode +.idea/ +.vscode/ downloaded/ -/src/commit -/src/cache/* -/src/vendor -/src/views/custom.twig + +commit *.log .env *.m3u *.m3u.* *.m3u8 *.m3u8.* + !/**/.gitkeep diff --git a/docker-compose.yml b/docker-compose.yml index da2e151..29059f6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,8 +4,8 @@ networks: services: - php: - container_name: iptv-php + svc-main: + container_name: iptv-svc-main env_file: - .env environment: @@ -20,8 +20,9 @@ services: - ./docker/php/www.conf:/usr/local/etc/php-fpm.d/www.conf:ro - ./docker/php/${IPTV_ENV}.php.ini:/usr/local/etc/php/conf.d/php.ini:ro - ./log/php:/var/log/php:rw - - ./src:/var/www:rw - - ./playlists.ini:/var/www/config/playlists.ini:ro + - ./src/svc-main:/var/www:rw + - ./commit:/var/www/commit:ro + - ./playlists.ini:/var/www/playlists.ini:ro nginx: container_name: iptv-nginx @@ -31,12 +32,12 @@ services: - iptv volumes: - /etc/localtime:/etc/localtime:ro - - ./docker/nginx/vhost.conf:/etc/nginx/conf.d/default.conf:ro + - ./docker/nginx/vhost.conf:/etc/nginx/conf.d/default.conf - ./log/nginx:/var/log/nginx:rw - - ./src:/var/www:ro + - ./src/svc-main:/var/www:ro ports: - '8080:80' links: - - php + - svc-main depends_on: - - php + - svc-main diff --git a/docker/nginx/vhost.conf b/docker/nginx/vhost.conf index 0ba12be..a0ee440 100644 --- a/docker/nginx/vhost.conf +++ b/docker/nginx/vhost.conf @@ -20,7 +20,7 @@ server { } location ~ \.php$ { try_files $uri /index.php =404; - fastcgi_pass php:9000; + fastcgi_pass svc-main:9000; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; diff --git a/docker/php/dev.dockerfile b/docker/php/dev.dockerfile index 66e8bad..ef6c322 100644 --- a/docker/php/dev.dockerfile +++ b/docker/php/dev.dockerfile @@ -1,12 +1,15 @@ -FROM php:8.2-fpm +FROM php:8.4-fpm RUN apt update && \ apt upgrade -y && \ - apt install -y git unzip 7zip + apt install -y --no-install-recommends git unzip 7zip && \ + apt-get clean autoclean && \ + apt-get autoremove --yes && \ + rm -rf /var/lib/{apt,dpkg,cache,log}/ # https://pecl.php.net/package/xdebug RUN pecl channel-update pecl.php.net && \ - pecl install xdebug-3.3.2 unzip && \ + pecl install xdebug-3.4.0 unzip && \ mkdir -p /var/log/php COPY --from=composer /usr/bin/composer /usr/local/bin/composer diff --git a/docker/php/prod.dockerfile b/docker/php/prod.dockerfile index d6e3b2a..4b78b3b 100644 --- a/docker/php/prod.dockerfile +++ b/docker/php/prod.dockerfile @@ -1,8 +1,11 @@ -FROM php:8.2-fpm +FROM php:8.4-fpm RUN apt update && \ apt upgrade -y && \ - apt install -y git + apt install -y --no-install-recommends git && \ + apt-get clean autoclean && \ + apt-get autoremove --yes && \ + rm -rf /var/lib/{apt,dpkg,cache,log}/ COPY --from=composer /usr/bin/composer /usr/local/bin/composer diff --git a/hooks/post-commit b/hooks/post-commit index 3820e9e..1bfe095 100755 --- a/hooks/post-commit +++ b/hooks/post-commit @@ -1,4 +1,4 @@ #!/bin/bash # хук пробрасывает хэш свежего коммита в контейнер # для его отображения в подвале страницы -git rev-parse HEAD > src/commit +git rev-parse HEAD > commit diff --git a/hooks/post-merge b/hooks/post-merge index b54438e..df30c55 100755 --- a/hooks/post-merge +++ b/hooks/post-merge @@ -3,5 +3,5 @@ # для его отображения в подвале страницы и очищает # кеш шаблонов twig после слияния веток # главным образом необходимо при git pull -git rev-parse HEAD > src/commit -docker exec -ti iptv-php rm -rf cache/views +git rev-parse HEAD > commit +docker exec -ti svc-main rm -rf cache/views diff --git a/iptv b/iptv index f86de53..585fbe4 100755 --- a/iptv +++ b/iptv @@ -1,7 +1,7 @@ #!/bin/bash # https://gist.github.com/anthonyaxenov/89c99e09ddb195985707e2b24a57257d -CONTAINER="iptv-php" # the name of the container in which to 'exec' something +CONTAINER="iptv-main" # the name of the container in which to 'exec' something CONFIG="$(dirname $([ -L $0 ] && readlink -f $0 || echo $0))/docker-compose.yml" # path to compose yml file CMD="docker compose -f $CONFIG" # docker-compose command APP_URL='http://localhost:8080/' @@ -29,6 +29,6 @@ case "$1" in 'restart' ) $CMD stop && $CMD start ;; # restart containers 'rebuild' ) $CMD down --remove-orphans && $CMD up -d --build ;; # rebuild containers 'open' ) open_browser $APP_URL && echo -e "\nYou're welcome!\n\t$APP_URL" ;; - 'hooks' ) ./hooks/post-commit && cp hooks/* .git/hooks ;; + 'hooks' ) сp -f hooks/* .git/hooks ;; * ) docker exec -ti $CONTAINER $* ;; # exec anything else in container esac diff --git a/playlists.ini b/playlists.ini deleted file mode 120000 index 28db6c0..0000000 --- a/playlists.ini +++ /dev/null @@ -1 +0,0 @@ -src/config/playlists.ini \ No newline at end of file diff --git a/playlists.ini b/playlists.ini new file mode 100644 index 0000000..7d63a9c --- /dev/null +++ b/playlists.ini @@ -0,0 +1,1153 @@ +[d] +name='[dmi3y-tv] D-TV6' +pls='http://dmi3y-tv.ru/iptv/D-TV6.m3u' +desc='Телеканал «D-TV6» - Интерактивный российский федеральный телеканал. Cпециализирующийся на сериалах, художественных и документальных фильмах познавательного характера.' +src='http://dmi3y-tv.ru/d-tv/ch_d-tv6/' + +[dh] +name='[dmi3y-tv] Dmitry-tv HD' +pls='http://dmi3y-tv.ru/iptv/Dmitry-tvHD.m3u' +desc='Телеканал «Dmitry-tv HD» - Интерактивный российский федеральный телеканал. Только русские музыкальные видеоклипы в Full HD качестве.' +src='http://dmi3y-tv.ru/d-tv/ch_dmitry-tv/' + +[d1] +name='[dmi3y-tv] Playlist-01' +pls='http://dmi3y-tv.ru/iptv/Playlist-01.m3u' +desc='300+ каналов (гибрид, Беларусь, СМОТРИМ)' +src='http://dmi3y-tv.ru/d-tv/playlist/m3u/' + +[dg] +name='[dmi3y-tv] Playlist-01 (GTMedia)' +pls='http://dmitry-tv.ddns.net/iptv/freesat/gtmedia/Playlist-01/custom_url.m3u' +desc='300+ каналов (гибрид, Беларусь, СМОТРИМ)' +src='http://dmi3y-tv.ru/d-tv/playlist/freesat/' + +[d1m1] +name='[dmi3y-tv] Playlist-01 Mobile 360p' +pls='http://dmi3y-tv.ru/iptv/Playlist-01_360p.m3u' +desc='14 каналов (гибрид)' +src='http://dmi3y-tv.ru/d-tv/playlist/mobile/' + +[d1m2] +name='[dmi3y-tv] Playlist-01 Mobile 480p' +pls='http://dmi3y-tv.ru/iptv/Playlist-01_480p.m3u' +desc='14 каналов (гибрид)' +src='http://dmi3y-tv.ru/d-tv/playlist/mobile/' + +[d2] +name='[dmi3y-tv] Playlist-02' +pls='http://dmi3y-tv.ru/iptv/Playlist-02.m3u' +desc='5 каналов (Яндекс ТВ)' +src='http://dmi3y-tv.ru/d-tv/playlist/m3u/' + +[d4] +name='[dmi3y-tv] Playlist-04' +pls='http://dmi3y-tv.ru/iptv/Playlist-04.m3u' +desc='4 канала (Беларусь)' +src='http://dmi3y-tv.ru/d-tv/playlist/m3u/' + +[d5] +name='[dmi3y-tv] Playlist-05' +pls='http://dmi3y-tv.ru/iptv/Playlist-05.m3u' +desc='650+ каналов (гибрид, Беларусь, СМОТРИМ, ZABAVA)' +src='http://dmi3y-tv.ru/d-tv/playlist/freesat/' + +[d5m1] +name='[dmi3y-tv] Playlist-05 Mobile 360p' +pls='http://dmi3y-tv.ru/iptv/Playlist-05_360p.m3u' +desc='157 каналов (ZABAVA)' +src='http://dmi3y-tv.ru/d-tv/playlist/mobile/' + +[d5m2] +name='[dmi3y-tv] Playlist-05 Mobile 480p' +pls='http://dmi3y-tv.ru/iptv/Playlist-05_480p.m3u' +desc='157 каналов (ZABAVA)' +src='http://dmi3y-tv.ru/d-tv/playlist/mobile/' + +[d5g] +name='[dmi3y-tv] Playlist-05 (GTMedia)' +pls='http://dmitry-tv.ddns.net/iptv/freesat/gtmedia/Playlist-05/custom_url.m3u' +desc='650+ каналов (гибрид, Беларусь, СМОТРИМ, ZABAVA)' +src='http://dmi3y-tv.ru/d-tv/playlist/freesat/' + +[ds] +name='[dmi3y-tv] СМОТРИМ' +pls='http://dmi3y-tv.ru/iptv/smotrim.m3u' +desc='150+ каналов (СМОТРИМ)' +src='http://dmi3y-tv.ru/d-tv/playlist/m3u/' + +[dt] +name='[dmi3y-tv] Dmitry-tv' +pls='http://dmi3y-tv.ru/iptv/Dmitry-tv.m3u' +desc='390+ каналов (гибрид, Беларусь, СМОТРИМ, Яндекс ТВ)' +src='http://dmi3y-tv.ru/d-tv/playlist/m3u/' + +[dd] +name='[dmi3y-tv] ВСЕ КАНАЛЫ' +pls='http://dmi3y-tv.ru/iptv/d-tv.m3u' +desc='гибрид, Беларусь, СМОТРИМ, ZABAVA, Яндекс ТВ' +src='http://dmi3y-tv.ru/d-tv/playlist/freesat/' + +[ddg] +name='[dmi3y-tv] ВСЕ КАНАЛЫ (GTMedia)' +pls='http://dmi3y-tv.ru/iptv/GTMV8TURBO.m3u' +desc='гибрид, Беларусь, СМОТРИМ, ZABAVA, Яндекс ТВ' +src='http://dmi3y-tv.ru/d-tv/playlist/freesat/' + +[dm] +name='[dmi3y-tv] ВСЕ МУЛЬТ/ФИЛЬМЫ' +pls='http://dmi3y-tv.ru/iptv/film_d-tv.m3u' +desc='420+ мульт/фильмов' +src='http://dmi3y-tv.ru/d-tv/playlist/freesat/' + +[dr] +name='[dmi3y-tv] AM Radio' +pls='http://dmi3y-tv.ru/iptv/AMRADIO.m3u' +desc='69 радиоканалов' +src='http://dmi3y-tv.ru/d-tv/playlist/fm/' + +[de] +name='[dmi3y-tv] "ЦИФРОВОЕ ЭФИРНОЕ IPTV" => "Android"' +pls='http://dmi3y-tv.ru/iptv/DVB-T2/rtrs.auto.m3u' +desc='Все часовые пояса' +src='http://dmi3y-tv.ru/d-tv/playlist/c_iptv/' + +[de1] +name='[dmi3y-tv] "ЦИФРОВОЕ ЭФИРНОЕ IPTV" => "Android"' +pls='http://dmi3y-tv.ru/iptv/DVB-T2/CH-1.m3u' +desc='Калининград МСК-1' +src='http://dmi3y-tv.ru/d-tv/playlist/c_iptv/' + +[de2] +name='[dmi3y-tv] "ЦИФРОВОЕ ЭФИРНОЕ IPTV" => "Android"' +pls='http://dmi3y-tv.ru/iptv/DVB-T2/CH_0.m3u' +desc='МСК' +src='http://dmi3y-tv.ru/d-tv/playlist/c_iptv/' + +[de3] +name='[dmi3y-tv] "ЦИФРОВОЕ ЭФИРНОЕ IPTV" => "Android"' +pls='http://dmi3y-tv.ru/iptv/DVB-T2/CH_3.m3u' +desc='Омск МСК+3' +src='http://dmi3y-tv.ru/d-tv/playlist/c_iptv/' + +[de4] +name='[dmi3y-tv] "ЦИФРОВОЕ ЭФИРНОЕ IPTV" => "Android"' +pls='http://dmi3y-tv.ru/iptv/DVB-T2/CH_4.m3u' +desc='Красноярск МСК+4' +src='http://dmi3y-tv.ru/d-tv/playlist/c_iptv/' + +[de5] +name='[dmi3y-tv] "ЦИФРОВОЕ ЭФИРНОЕ IPTV" => "Android"' +pls='http://dmi3y-tv.ru/iptv/DVB-T2/CH_5.m3u' +desc='Иркутск МСК+5' +src='http://dmi3y-tv.ru/d-tv/playlist/c_iptv/' + +; offline +;[de6] +;name='[dmi3y-tv] "ЦИФРОВОЕ ЭФИРНОЕ IPTV" => "Android"' +;pls='http://dmi3y-tv.ru/iptv/DVB-T2/CH_6.m3u' +;desc='Якутск МСК+6' +;src='http://dmi3y-tv.ru/d-tv/playlist/c_iptv/' + +[de7] +name='[dmi3y-tv] "ЦИФРОВОЕ ЭФИРНОЕ IPTV" => "Android"' +pls='http://dmi3y-tv.ru/iptv/DVB-T2/CH_7.m3u' +desc='Владивосток МСК+7' +src='http://dmi3y-tv.ru/d-tv/playlist/c_iptv/' + +[de8] +name='[dmi3y-tv] "ЦИФРОВОЕ ЭФИРНОЕ IPTV" => "Android"' +pls='http://dmi3y-tv.ru/iptv/DVB-T2/CH_8.m3u' +desc='Сахалин МСК+8' +src='http://dmi3y-tv.ru/d-tv/playlist/c_iptv/' + +[de9] +name='[dmi3y-tv] "ЦИФРОВОЕ ЭФИРНОЕ IPTV" => "Android"' +pls='http://dmi3y-tv.ru/iptv/DVB-T2/CH_9.m3u' +desc='Камчатка МСК+9' +src='http://dmi3y-tv.ru/d-tv/playlist/c_iptv/' + +[dz] +name='[dmi3y-tv] ZABAVA' +pls='http://dmi3y-tv.ru/iptv/ZABAVA.m3u' +desc='350+ каналов (ZABAVA)' +src='http://dmi3y-tv.ru/d-tv/playlist/m3u/' + +[dzg] +name='[dmi3y-tv] ZABAVA (GTMedia)' +pls='http://dmitry-tv.ddns.net/iptv/freesat/gtmedia/ZABAVA/custom_url.m3u' +desc='350+ каналов (ZABAVA)' +src='http://dmi3y-tv.ru/d-tv/playlist/freesat/' + +[dza] +name='[dmi3y-tv] Региональные: Абакан (Республика Хакасия)/ABAKAN_KHAK.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_ABAKAN_KHAK.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dza2] +name='[dmi3y-tv] Региональные: Абакан/ABAKAN.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_ABAKAN.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzal] +name='[dmi3y-tv] Региональные: Алтайский край/ZABAVA_ALTAY.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_ALTAY.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzar] +name='[dmi3y-tv] Региональные: Архангельск/ARKH.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_ARKH.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzar2] +name='[dmi3y-tv] Региональные: Архангельская область/ARKH_OBL.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_ARKH_OBL.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzas] +name='[dmi3y-tv] Региональные: Астраханская область/ASTRH_OBL.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_ASTRH_OBL.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzas2] +name='[dmi3y-tv] Региональные: Астрахань/ASTRH.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_ASTRH.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzac] +name='[dmi3y-tv] Региональные: Ачинск/ACHINSK.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_ACHINSK.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzb] +name='[dmi3y-tv] Региональные: Барнаул/BUL.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_BUL.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzbe] +name='[dmi3y-tv] Региональные: Белгород/BELG.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_BELG.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzbo] +name='[dmi3y-tv] Региональные: Белгородская область/BELG_OBL.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_BELG_OBL.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzbi] +name='[dmi3y-tv] Региональные: Бийск/BIYSK.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_BIYSK.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzd] +name='[dmi3y-tv] Региональные: Биробиджан/DV_BIR.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_DV_BIR.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzbl] +name='[dmi3y-tv] Региональные: Благовещенск/DV_BLAG.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_DV_BLAG.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzbr] +name='[dmi3y-tv] Региональные: Братск/BRATSK.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_BRATSK.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzby] +name='[dmi3y-tv] Региональные: Брянск/BRYANSK.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_BRYANSK.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzby2] +name='[dmi3y-tv] Региональные: Брянская область/BRYANSK_OBL.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_BRYANSK_OBL.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzbu] +name='[dmi3y-tv] Региональные: Бурятия/BURAT.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_BURAT.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzvn] +name='[dmi3y-tv] Региональные: Великий Новгород/NOVG.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_NOVG.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzv] +name='[dmi3y-tv] Региональные: Владивосток/DV_VLD.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_DV_VLD.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzvk] +name='[dmi3y-tv] Региональные: Владикавказ/VKAZ.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_VKAZ.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzvl] +name='[dmi3y-tv] Региональные: Владимир/VLAD.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_VLAD.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzvo] +name='[dmi3y-tv] Региональные: Владимирская область/VLAD_OBL.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_VLAD_OBL.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzvg] +name='[dmi3y-tv] Региональные: Волгоград/VGRAD.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_VGRAD.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzvgo] +name='[dmi3y-tv] Региональные: Волгоградская область/VGRAD_OBL.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_VGRAD_OBL.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzvd] +name='[dmi3y-tv] Региональные: Вологда/VOL.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_VOL.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzvdo] +name='[dmi3y-tv] Региональные: Вологодская область/VOL_OBL.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_VOL_OBL.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzvr] +name='[dmi3y-tv] Региональные: Воронеж/VRZH.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_VRZH.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzvro] +name='[dmi3y-tv] Региональные: Воронежская область/VRZH_OBL.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_VRZH_OBL.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzga] +name='[dmi3y-tv] Региональные: Горно-Алтайск/GALT.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_GALT.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dze] +name='[dmi3y-tv] Региональные: Екатеринбург/EKT.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_EKT.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzi] +name='[dmi3y-tv] Региональные: Иваново/IVAN.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_IVAN.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dziz] +name='[dmi3y-tv] Региональные: Ижевск/IZHSK.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_IZHSK.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzig] +name='[dmi3y-tv] Региональные: Ингушетия/ING.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_ING.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzir] +name='[dmi3y-tv] Региональные: Иркутск/IRK.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_IRK.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzio] +name='[dmi3y-tv] Региональные: Иркутская область/IRK_OBL.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_IRK_OBL.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzy] +name='[dmi3y-tv] Региональные: Йошкар-Ола/YOLA.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_YOLA.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzk] +name='[dmi3y-tv] Региональные: Казань/KZN.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_KZN.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzkl] +name='[dmi3y-tv] Региональные: Калининград/KLGR.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_KLGR.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzkg] +name='[dmi3y-tv] Региональные: Калуга/KALUGA.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_KALUGA.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzka] +name='[dmi3y-tv] Региональные: Камчатка/DV_KAM.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_DV_KAM.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzke] +name='[dmi3y-tv] Региональные: Кемерово/KEM.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_KEM.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzkeo] +name='[dmi3y-tv] Региональные: Кемеровская область/KEM_OBL.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_KEM_OBL.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzki] +name='[dmi3y-tv] Региональные: Киров/KIROV.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_KIROV.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzko] +name='[dmi3y-tv] Региональные: Коми/KOMI.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_KOMI.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzks] +name='[dmi3y-tv] Региональные: Кострома/KOSTROMA.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_KOSTROMA.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzkd] +name='[dmi3y-tv] Региональные: Краснодар/KRDAR.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_KRDAR.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzkdk] +name='[dmi3y-tv] Региональные: Краснодарский край/KRDAR_KRAI.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_KRDAR_KRAI.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzkk] +name='[dmi3y-tv] Региональные: Красноярск/KRSK.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_KRSK.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzkkk] +name='[dmi3y-tv] Региональные: Красноярский край/KRSK_KRAI.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_KRSK_KRAI.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzku] +name='[dmi3y-tv] Региональные: Курган/KRG.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_KRG.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzkur] +name='[dmi3y-tv] Региональные: Курск/KURSK.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_KURSK.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzkoro] +name='[dmi3y-tv] Региональные: Курская область/KURSK_OBL.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_KURSK_OBL.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzt] +name='[dmi3y-tv] Региональные: Кызыл/TUVA.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_TUVA.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzl] +name='[dmi3y-tv] Региональные: Липецк/LIPETSK.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_LIPETSK.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzm] +name='[dmi3y-tv] Региональные: Магадан/DV_MGDN.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_DV_MGDN.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzma] +name='[dmi3y-tv] Региональные: Майкоп/MAYK.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_MAYK.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzmh] +name='[dmi3y-tv] Региональные: Махачкала/MAHACHK.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_MAHACHK.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzmo] +name='[dmi3y-tv] Региональные: Москва/MOS.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_MOS.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzmu] +name='[dmi3y-tv] Региональные: Мурманск/MURM.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_MURM.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzn] +name='[dmi3y-tv] Региональные: Нальчик/NALCH.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_NALCH.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dznm] +name='[dmi3y-tv] Региональные: Нарьян-Мар/NAO.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_NAO.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dznn] +name='[dmi3y-tv] Региональные: Нижний Новгород/NN.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_NN.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dznt] +name='[dmi3y-tv] Региональные: Нижний Тагил/NTAG.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_NTAG.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzno] +name='[dmi3y-tv] Региональные: Новгородская область/NOVG_OBL.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_NOVG_OBL.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dznz] +name='[dmi3y-tv] Региональные: Новозыбков/NZB.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_NZB.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dznk] +name='[dmi3y-tv] Региональные: Новокузнецк/NVKZ.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_NVKZ.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dznr] +name='[dmi3y-tv] Региональные: Новороссийск/NVR.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_NVR.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzns] +name='[dmi3y-tv] Региональные: Новосибирск/NSK.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_NSK.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dznso] +name='[dmi3y-tv] Региональные: Новосибирская область/NSK_OBL.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_NSK_OBL.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dznb] +name='[dmi3y-tv] Региональные: Ноябрьск/NBK.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_NBK.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzo] +name='[dmi3y-tv] Региональные: Обнинск/OBN.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_OBN.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzom] +name='[dmi3y-tv] Региональные: Омск/OMSK.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_OMSK.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzomo] +name='[dmi3y-tv] Региональные: Омская область/OMSK_OBL.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_OMSK_OBL.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzor] +name='[dmi3y-tv] Региональные: Орел/ORL.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_ORL.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzob] +name='[dmi3y-tv] Региональные: Оренбург/ORB.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_ORB.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzoro] +name='[dmi3y-tv] Региональные: Орловская область/ORL_OBL.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_ORL_OBL.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzos] +name='[dmi3y-tv] Региональные: Орск/ORSK.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_ORSK.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzpe] +name='[dmi3y-tv] Региональные: Пенза/PENZA.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_PENZA.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzpr] +name='[dmi3y-tv] Региональные: Пермь/PERM.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_PERM.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzp] +name='[dmi3y-tv] Региональные: Петрозаводск (Республика Карелия)/PZAV_RK.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_PZAV_RK.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzpz] +name='[dmi3y-tv] Региональные: Петрозаводск/PZAV.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_PZAV.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzps] +name='[dmi3y-tv] Региональные: Псков/PSKV.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_PSKV.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzpo] +name='[dmi3y-tv] Региональные: Псковская область/PSKV_OBL.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_PSKV_OBL.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzr] +name='[dmi3y-tv] Региональные: Ростов на Дону/RD.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_RD.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzro] +name='[dmi3y-tv] Региональные: Ростовская область/RD_OBL.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_RD_OBL.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzry] +name='[dmi3y-tv] Региональные: Рыбинск/RYB.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_RYB.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzrz] +name='[dmi3y-tv] Региональные: Рязань/RYAZ.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_RYAZ.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzs] +name='[dmi3y-tv] Региональные: Самара/SAMARA.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_SAMARA.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzsp] +name='[dmi3y-tv] Региональные: Санкт-Петербург/SPB.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_SPB.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzsa] +name='[dmi3y-tv] Региональные: Саранск/SRNK.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_SRNK.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzsr] +name='[dmi3y-tv] Региональные: Саратов/SARATOV.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_SARATOV.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzsh] +name='[dmi3y-tv] Региональные: Сахалин/DV_SLIN.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_DV_SLIN.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzsho] +name='[dmi3y-tv] Региональные: Сахалинская область/DV_SLIN_OBL.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_DV_SLIN_OBL.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzsm] +name='[dmi3y-tv] Региональные: Смоленск/SMOL.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_SMOL.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzso] +name='[dmi3y-tv] Региональные: Сочи/SOCHI.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_SOCHI.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzst] +name='[dmi3y-tv] Региональные: Ставрополь/STAVR.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_STAVR.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzstk] +name='[dmi3y-tv] Региональные: Ставропольский край/STAVR_KRAI.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_STAVR_KRAI.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzsk] +name='[dmi3y-tv] Региональные: Старый Оскол/OSK.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_OSK.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzsu] +name='[dmi3y-tv] Региональные: Сургут/SUR.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_SUR.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzsy] +name='[dmi3y-tv] Региональные: Сыктывкар/SKTV.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_SKTV.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzta] +name='[dmi3y-tv] Региональные: Тамбов/TAMB.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_TAMB.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dztvo] +name='[dmi3y-tv] Региональные: Тверская область/TVER_OBL.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_TVER_OBL.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dztv] +name='[dmi3y-tv] Региональные: Тверь/TVER.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_TVER.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzto] +name='[dmi3y-tv] Региональные: Томск/TOMSK.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_TOMSK.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dztoo] +name='[dmi3y-tv] Региональные: Томская область/TOMSK_OBL.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_TOMSK_OBL.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dztu] +name='[dmi3y-tv] Региональные: Тула/TULA.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_TULA.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzty] +name='[dmi3y-tv] Региональные: Тюмень/TUM.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_TUM.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzu] +name='[dmi3y-tv] Региональные: Улан-Удэ/UUDE.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_UUDE.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzul] +name='[dmi3y-tv] Региональные: Ульяновск/UL.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_UL.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzuf] +name='[dmi3y-tv] Региональные: Уфа/UFA.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_UFA.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzh] +name='[dmi3y-tv] Региональные: Хабаровск/DV_HVSK.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_DV_HVSK.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzc] +name='[dmi3y-tv] Региональные: Чебоксары/CHR.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_CHR.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzcb] +name='[dmi3y-tv] Региональные: Челябинск/CHEL.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_CHEL.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzce] +name='[dmi3y-tv] Региональные: Черкесия/CHERKS.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_CHERKS.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzct] +name='[dmi3y-tv] Региональные: Чита (Забайкальский край)/CHITA_ZK.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_CHITA_ZK.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzct2] +name='[dmi3y-tv] Региональные: Чита/CHITA.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_CHITA.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzel] +name='[dmi3y-tv] Региональные: Элиста/ELISTA.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_ELISTA.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzyk] +name='[dmi3y-tv] Региональные: Якутск/DV_YKT.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_DV_YKT.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + +[dzyr] +name='[dmi3y-tv] Региональные: Ярославль/YARL.m3u' +pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_YARL.m3u' +desc='' +src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[k6] +name='Фильмы' +pls='http://divantv.zz.mu/Playlist003.m3u' +desc= +src='https://t.me/iptv_aggregator_chat' + +[so] +name = 'smolnp/IPTVru - Основной плейлист' +desc = '250 телеканалов и 13 радиоканалов.' +pls = 'https://smolnp.github.io/IPTVru/IPTVru.m3u' +src = 'https://smolnp.github.io/IPTVru' + +[sm] +name = 'smolnp/IPTVru - Минимальный плейлист' +desc = 'Федеральные и региональные телеканалы, около 60 шт.' +pls = 'https://smolnp.github.io/IPTVru/IPTVmini.m3u' +src = 'https://smolnp.github.io/IPTVru' + +[sx] +name = 'smolnp/IPTVru - Плейлист с телеканалами для взрослых' +desc = '250 телеканалов, 13 радиоканалов и 10 телеканалов для взрослых.' +pls = 'https://smolnp.github.io/IPTVru/IPTVххх.m3u' +src = 'https://smolnp.github.io/IPTVru' + +[2] +name = 'Плейлист 2020 (iptv-playlisty.ru)' +desc = 'Трансляции для детей и подростков. Сериалы и Премьеры кино. Каналы для женщин и мужских развлечений. Документалистика и исторические лента о событиях прошлого.' +pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/2020.m3u' +src = 'https://iptv-playlisty.ru/collection/samyj-svezheobnovlennyj-plejlist-iptv-na-2020-god/' + +[3] +name = 'Плейлист newplay (iptv-playlisty.ru)' +desc = 'Общефедеральные. Каналы фильмов. Все на русском. Имеются с зарубежными лентами. Спортивные. Как трансляции, так и кино данной тематики. Детские. Мультфильмы и передачи.' +pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/newplay.m3u' +src = 'https://iptv-playlisty.ru/collection/besplatnyj-iptv-plejlist-formata-m3u/' + +[ru] +name = 'Русские' +desc = +pls = 'https://raw.githubusercontent.com/iptv-org/iptv/master/streams/ru.m3u' +src = 'https://github.com/iptv-org/iptv' + +[ru2] +redirect = ru + +[ru3] +redirect = ru + +[p5] +redirect = 2 + +[np] +redirect = 3 + +[tp] +name = 'TaurerPlus' +desc = +pls = 'https://raw.githubusercontent.com/TaurerMedia/TaurerPlus/main/index.m3u8' +src = 'https://github.com/anthonyaxenov/iptv/issues/2' + +[mus] +name = 'Музыкальные IPTV каналы (iptv-playlisty.ru)' +desc = 'Музыкальный плейлист наиболее популярных каналов на нашем телевидении.' +pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/music.m3u' +src = 'https://iptv-playlisty.ru/janriptv/muzykalnye-iptv-kanaly-v-formate-m3u/' + +[det] +name = 'Плейлист детских IPTV каналов (iptv-playlisty.ru)' +desc = +pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/deti.m3u' +src = 'https://iptv-playlisty.ru/janriptv/plejlist-detskix-iptv-kanalov-v-formate-m3u/' + +[det2] +name = 'Плейлист IPTV Мультфильмов для детей и подростков (iptv-playlisty.ru)' +desc = +pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/multy.m3u' +src = 'https://iptv-playlisty.ru/janriptv/plejlist-iptv-multfilmov-dlya-detej-i-podrostkov/' + +[sng] +name = 'Каналы СНГ' +desc = +pls = 'https://dl.dropboxusercontent.com/s/iw9v57cln6dfkpu/Vinnitsa.m3u' +src = 'https://iptvsensei.ru/samoobnovlyayemyye-pleylisty-iptv' + +[sng2] +redirect = cam + +[cam] +name = 'Веб-камеры' +desc = +pls = 'http://gorod.tv/iptv.m3u' +src = 'https://iptvsensei.ru/samoobnovlyayemyye-pleylisty-iptv' + +[moto] +name = 'Плейлист Авто и Мото каналов IPTV (iptv-playlisty.ru)' +desc = 'В список были включены популярные не только у нас каналы авто тематики.' +pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/automoto.m3u' +src = 'https://iptv-playlisty.ru/janriptv/plejlist-avto-i-moto-kanalov-iptv/' + +[poz] +name = 'Плейлист IPTV образовательных каналов (iptv-playlisty.ru)' +desc = 'В список вошло более десятка трансляций. Зритель сможет найти здесь передачи для разностороннего обучения и в целом просвещения.' +pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/obrazovanie.m3u' +src = 'https://iptv-playlisty.ru/janriptv/plejlist-iptv-obrazovatelnyx-kanalov-m3u/' + +[poz2] +name = 'Познавательные каналы IPTV плейлист (iptv-playlisty.ru)' +desc = 'Наиболее подходящие трансляции, с выпусками интересных познавательных передач на любой вкус' +pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/poznav.m3u' +src = 'https://iptv-playlisty.ru/janriptv/poznavatelnye-kanaly-iptv-plejlist-v-formate-m3u/' + +[moda] +name = 'Плейлист IPTV модных телеканалов (iptv-playlisty.ru)' +desc = 'Сюда вошли только топовые компании, на которых ежедневно рассказывают о последних тенденциях в одежде и дизайне.' +pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/moda.m3u' +src = 'https://iptv-playlisty.ru/janriptv/plejlist-iptv-modnyx-telekanalov-m3u/' + +[fun] +name = 'Плейлист IPTV каналов развлечений (iptv-playlisty.ru)' +desc = 'Огромное количество развлекательных каналов' +pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/razvlechenie.m3u' +src = 'https://iptv-playlisty.ru/janriptv/plejlist-iptv-kanalov-razvlechenij/' + +[hd] +name = 'Плейлист IPTV каналов в HD формате (iptv-playlisty.ru)' +desc = 'Плейлист доступных по настоящий момент HD каналов' +pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/hd.m3u' +src = 'https://iptv-playlisty.ru/janriptv/plejlist-iptv-kanalov-v-hd-formate/' + +[nauka] +name = 'Научные IPTV каналы в формате (iptv-playlisty.ru)' +desc = 'Современные научные каналы: история, документальное кино, психология, культура...' +pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/nauka.m3u' +src = 'https://iptv-playlisty.ru/janriptv/nauchnye-iptv-kanaly-v-formate-m3u/' + +[eda] +name = 'IPTV плейлист кулинарных каналов (iptv-playlisty.ru)' +desc = 'В список вошли наиболее интересные кулинарные каналы в формате M3U. Большинство каналов на русском языке' +pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/eda.m3u' +src = 'https://iptv-playlisty.ru/janriptv/iptv-plejlist-kulinarnyx-kanalov/' + +[heal] +name = 'IPTV плейлист каналов здоровья (iptv-playlisty.ru)' +desc = +pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/zdorov.m3u' +src = 'https://iptv-playlisty.ru/janriptv/iptv-plejlist-kanalov-zdorovya/' + +[sport] +name = 'Плейлист IPTV спортивных каналов (iptv-playlisty.ru)' +desc = 'В коллекции можно встретить: футбольные матчи, баскетбольные встречи, теннис, хоккей, автоспорт и даже гольф.' +pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/sport.m3u' +src = 'https://iptv-playlisty.ru/janriptv/plejlist-iptv-sportivnyx-kanalov/' + +[strah] +name = 'Бесплатный IPTV плейлист каналов ужасов (iptv-playlisty.ru)' +desc = +pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/Strah.m3u' +src = 'https://iptv-playlisty.ru/janriptv/besplatnyj-iptv-plejlist-kanalov-uzhasov/' + +[his] +name = 'IPTV плейлист телеканала History (iptv-playlisty.ru)' +desc = +pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/history.m3u' +src = 'https://iptv-playlisty.ru/iptv-kanaly/iptv-plejlist-telekanala-history/' + +[dis] +name = 'IPTV плейлист телеканала Discovery (iptv-playlisty.ru)' +desc = +pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/discovery.m3u' +src = 'https://iptv-playlisty.ru/iptv-kanaly/iptv-plejlist-telekanala-discovery/' + +[ngeo] +name = 'IPTV плейлист канала National Geographic (iptv-playlisty.ru)' +desc = +pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/ngeografik.m3u' +src = 'https://iptv-playlisty.ru/iptv-kanaly/iptv-plejlist-kanala-national-geographic/' + +[kino5] +name = 'Фильмы 5 (iptvsensei.ru)' +desc = +pls = 'https://pastebin.com/raw/jLaRge54' +src = 'https://iptvsensei.ru/novye-samoobnovlyaemye-plejlisty' + +[kz2] +name = 'Казахстан' +desc = +pls = 'https://raw.githubusercontent.com/iptv-org/iptv/master/streams/kz.m3u' +src = 'https://github.com/iptv-org/iptv' + +[r1] +name = 'Радио каналы 1' +desc = +pls = 'http://lradio.c1.biz/ltradio.m3u' +src = 'https://iptvsensei.ru/novye-samoobnovlyaemye-plejlisty' + +[sng13] +redirect = sng + +[sng14] +redirect = sng2 + +[b1] +name = 'IPTV плейлисты для GX3235T2C и AV2568T2C' +desc = +pls = 'https://www.digitaltv.ru/upload/iblock/034/tvlist.m3u' +src = 'https://www.digitaltv.ru/news/iptv_pleylisty.html' + +[az] +name='Каналы Азербайджана' +desc = +pls = 'https://raw.githubusercontent.com/iptv-org/iptv/master/streams/az.m3u' +src = 'https://github.com/iptv-org/iptv' + +[az2] +redirect = az + diff --git a/src/cache/.gitkeep b/src/cache/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/config/playlists.ini b/src/config/playlists.ini deleted file mode 100644 index 7d63a9c..0000000 --- a/src/config/playlists.ini +++ /dev/null @@ -1,1153 +0,0 @@ -[d] -name='[dmi3y-tv] D-TV6' -pls='http://dmi3y-tv.ru/iptv/D-TV6.m3u' -desc='Телеканал «D-TV6» - Интерактивный российский федеральный телеканал. Cпециализирующийся на сериалах, художественных и документальных фильмах познавательного характера.' -src='http://dmi3y-tv.ru/d-tv/ch_d-tv6/' - -[dh] -name='[dmi3y-tv] Dmitry-tv HD' -pls='http://dmi3y-tv.ru/iptv/Dmitry-tvHD.m3u' -desc='Телеканал «Dmitry-tv HD» - Интерактивный российский федеральный телеканал. Только русские музыкальные видеоклипы в Full HD качестве.' -src='http://dmi3y-tv.ru/d-tv/ch_dmitry-tv/' - -[d1] -name='[dmi3y-tv] Playlist-01' -pls='http://dmi3y-tv.ru/iptv/Playlist-01.m3u' -desc='300+ каналов (гибрид, Беларусь, СМОТРИМ)' -src='http://dmi3y-tv.ru/d-tv/playlist/m3u/' - -[dg] -name='[dmi3y-tv] Playlist-01 (GTMedia)' -pls='http://dmitry-tv.ddns.net/iptv/freesat/gtmedia/Playlist-01/custom_url.m3u' -desc='300+ каналов (гибрид, Беларусь, СМОТРИМ)' -src='http://dmi3y-tv.ru/d-tv/playlist/freesat/' - -[d1m1] -name='[dmi3y-tv] Playlist-01 Mobile 360p' -pls='http://dmi3y-tv.ru/iptv/Playlist-01_360p.m3u' -desc='14 каналов (гибрид)' -src='http://dmi3y-tv.ru/d-tv/playlist/mobile/' - -[d1m2] -name='[dmi3y-tv] Playlist-01 Mobile 480p' -pls='http://dmi3y-tv.ru/iptv/Playlist-01_480p.m3u' -desc='14 каналов (гибрид)' -src='http://dmi3y-tv.ru/d-tv/playlist/mobile/' - -[d2] -name='[dmi3y-tv] Playlist-02' -pls='http://dmi3y-tv.ru/iptv/Playlist-02.m3u' -desc='5 каналов (Яндекс ТВ)' -src='http://dmi3y-tv.ru/d-tv/playlist/m3u/' - -[d4] -name='[dmi3y-tv] Playlist-04' -pls='http://dmi3y-tv.ru/iptv/Playlist-04.m3u' -desc='4 канала (Беларусь)' -src='http://dmi3y-tv.ru/d-tv/playlist/m3u/' - -[d5] -name='[dmi3y-tv] Playlist-05' -pls='http://dmi3y-tv.ru/iptv/Playlist-05.m3u' -desc='650+ каналов (гибрид, Беларусь, СМОТРИМ, ZABAVA)' -src='http://dmi3y-tv.ru/d-tv/playlist/freesat/' - -[d5m1] -name='[dmi3y-tv] Playlist-05 Mobile 360p' -pls='http://dmi3y-tv.ru/iptv/Playlist-05_360p.m3u' -desc='157 каналов (ZABAVA)' -src='http://dmi3y-tv.ru/d-tv/playlist/mobile/' - -[d5m2] -name='[dmi3y-tv] Playlist-05 Mobile 480p' -pls='http://dmi3y-tv.ru/iptv/Playlist-05_480p.m3u' -desc='157 каналов (ZABAVA)' -src='http://dmi3y-tv.ru/d-tv/playlist/mobile/' - -[d5g] -name='[dmi3y-tv] Playlist-05 (GTMedia)' -pls='http://dmitry-tv.ddns.net/iptv/freesat/gtmedia/Playlist-05/custom_url.m3u' -desc='650+ каналов (гибрид, Беларусь, СМОТРИМ, ZABAVA)' -src='http://dmi3y-tv.ru/d-tv/playlist/freesat/' - -[ds] -name='[dmi3y-tv] СМОТРИМ' -pls='http://dmi3y-tv.ru/iptv/smotrim.m3u' -desc='150+ каналов (СМОТРИМ)' -src='http://dmi3y-tv.ru/d-tv/playlist/m3u/' - -[dt] -name='[dmi3y-tv] Dmitry-tv' -pls='http://dmi3y-tv.ru/iptv/Dmitry-tv.m3u' -desc='390+ каналов (гибрид, Беларусь, СМОТРИМ, Яндекс ТВ)' -src='http://dmi3y-tv.ru/d-tv/playlist/m3u/' - -[dd] -name='[dmi3y-tv] ВСЕ КАНАЛЫ' -pls='http://dmi3y-tv.ru/iptv/d-tv.m3u' -desc='гибрид, Беларусь, СМОТРИМ, ZABAVA, Яндекс ТВ' -src='http://dmi3y-tv.ru/d-tv/playlist/freesat/' - -[ddg] -name='[dmi3y-tv] ВСЕ КАНАЛЫ (GTMedia)' -pls='http://dmi3y-tv.ru/iptv/GTMV8TURBO.m3u' -desc='гибрид, Беларусь, СМОТРИМ, ZABAVA, Яндекс ТВ' -src='http://dmi3y-tv.ru/d-tv/playlist/freesat/' - -[dm] -name='[dmi3y-tv] ВСЕ МУЛЬТ/ФИЛЬМЫ' -pls='http://dmi3y-tv.ru/iptv/film_d-tv.m3u' -desc='420+ мульт/фильмов' -src='http://dmi3y-tv.ru/d-tv/playlist/freesat/' - -[dr] -name='[dmi3y-tv] AM Radio' -pls='http://dmi3y-tv.ru/iptv/AMRADIO.m3u' -desc='69 радиоканалов' -src='http://dmi3y-tv.ru/d-tv/playlist/fm/' - -[de] -name='[dmi3y-tv] "ЦИФРОВОЕ ЭФИРНОЕ IPTV" => "Android"' -pls='http://dmi3y-tv.ru/iptv/DVB-T2/rtrs.auto.m3u' -desc='Все часовые пояса' -src='http://dmi3y-tv.ru/d-tv/playlist/c_iptv/' - -[de1] -name='[dmi3y-tv] "ЦИФРОВОЕ ЭФИРНОЕ IPTV" => "Android"' -pls='http://dmi3y-tv.ru/iptv/DVB-T2/CH-1.m3u' -desc='Калининград МСК-1' -src='http://dmi3y-tv.ru/d-tv/playlist/c_iptv/' - -[de2] -name='[dmi3y-tv] "ЦИФРОВОЕ ЭФИРНОЕ IPTV" => "Android"' -pls='http://dmi3y-tv.ru/iptv/DVB-T2/CH_0.m3u' -desc='МСК' -src='http://dmi3y-tv.ru/d-tv/playlist/c_iptv/' - -[de3] -name='[dmi3y-tv] "ЦИФРОВОЕ ЭФИРНОЕ IPTV" => "Android"' -pls='http://dmi3y-tv.ru/iptv/DVB-T2/CH_3.m3u' -desc='Омск МСК+3' -src='http://dmi3y-tv.ru/d-tv/playlist/c_iptv/' - -[de4] -name='[dmi3y-tv] "ЦИФРОВОЕ ЭФИРНОЕ IPTV" => "Android"' -pls='http://dmi3y-tv.ru/iptv/DVB-T2/CH_4.m3u' -desc='Красноярск МСК+4' -src='http://dmi3y-tv.ru/d-tv/playlist/c_iptv/' - -[de5] -name='[dmi3y-tv] "ЦИФРОВОЕ ЭФИРНОЕ IPTV" => "Android"' -pls='http://dmi3y-tv.ru/iptv/DVB-T2/CH_5.m3u' -desc='Иркутск МСК+5' -src='http://dmi3y-tv.ru/d-tv/playlist/c_iptv/' - -; offline -;[de6] -;name='[dmi3y-tv] "ЦИФРОВОЕ ЭФИРНОЕ IPTV" => "Android"' -;pls='http://dmi3y-tv.ru/iptv/DVB-T2/CH_6.m3u' -;desc='Якутск МСК+6' -;src='http://dmi3y-tv.ru/d-tv/playlist/c_iptv/' - -[de7] -name='[dmi3y-tv] "ЦИФРОВОЕ ЭФИРНОЕ IPTV" => "Android"' -pls='http://dmi3y-tv.ru/iptv/DVB-T2/CH_7.m3u' -desc='Владивосток МСК+7' -src='http://dmi3y-tv.ru/d-tv/playlist/c_iptv/' - -[de8] -name='[dmi3y-tv] "ЦИФРОВОЕ ЭФИРНОЕ IPTV" => "Android"' -pls='http://dmi3y-tv.ru/iptv/DVB-T2/CH_8.m3u' -desc='Сахалин МСК+8' -src='http://dmi3y-tv.ru/d-tv/playlist/c_iptv/' - -[de9] -name='[dmi3y-tv] "ЦИФРОВОЕ ЭФИРНОЕ IPTV" => "Android"' -pls='http://dmi3y-tv.ru/iptv/DVB-T2/CH_9.m3u' -desc='Камчатка МСК+9' -src='http://dmi3y-tv.ru/d-tv/playlist/c_iptv/' - -[dz] -name='[dmi3y-tv] ZABAVA' -pls='http://dmi3y-tv.ru/iptv/ZABAVA.m3u' -desc='350+ каналов (ZABAVA)' -src='http://dmi3y-tv.ru/d-tv/playlist/m3u/' - -[dzg] -name='[dmi3y-tv] ZABAVA (GTMedia)' -pls='http://dmitry-tv.ddns.net/iptv/freesat/gtmedia/ZABAVA/custom_url.m3u' -desc='350+ каналов (ZABAVA)' -src='http://dmi3y-tv.ru/d-tv/playlist/freesat/' - -[dza] -name='[dmi3y-tv] Региональные: Абакан (Республика Хакасия)/ABAKAN_KHAK.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_ABAKAN_KHAK.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dza2] -name='[dmi3y-tv] Региональные: Абакан/ABAKAN.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_ABAKAN.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzal] -name='[dmi3y-tv] Региональные: Алтайский край/ZABAVA_ALTAY.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_ALTAY.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzar] -name='[dmi3y-tv] Региональные: Архангельск/ARKH.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_ARKH.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzar2] -name='[dmi3y-tv] Региональные: Архангельская область/ARKH_OBL.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_ARKH_OBL.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzas] -name='[dmi3y-tv] Региональные: Астраханская область/ASTRH_OBL.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_ASTRH_OBL.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzas2] -name='[dmi3y-tv] Региональные: Астрахань/ASTRH.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_ASTRH.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzac] -name='[dmi3y-tv] Региональные: Ачинск/ACHINSK.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_ACHINSK.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzb] -name='[dmi3y-tv] Региональные: Барнаул/BUL.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_BUL.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzbe] -name='[dmi3y-tv] Региональные: Белгород/BELG.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_BELG.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzbo] -name='[dmi3y-tv] Региональные: Белгородская область/BELG_OBL.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_BELG_OBL.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzbi] -name='[dmi3y-tv] Региональные: Бийск/BIYSK.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_BIYSK.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzd] -name='[dmi3y-tv] Региональные: Биробиджан/DV_BIR.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_DV_BIR.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzbl] -name='[dmi3y-tv] Региональные: Благовещенск/DV_BLAG.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_DV_BLAG.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzbr] -name='[dmi3y-tv] Региональные: Братск/BRATSK.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_BRATSK.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzby] -name='[dmi3y-tv] Региональные: Брянск/BRYANSK.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_BRYANSK.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzby2] -name='[dmi3y-tv] Региональные: Брянская область/BRYANSK_OBL.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_BRYANSK_OBL.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzbu] -name='[dmi3y-tv] Региональные: Бурятия/BURAT.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_BURAT.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzvn] -name='[dmi3y-tv] Региональные: Великий Новгород/NOVG.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_NOVG.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzv] -name='[dmi3y-tv] Региональные: Владивосток/DV_VLD.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_DV_VLD.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzvk] -name='[dmi3y-tv] Региональные: Владикавказ/VKAZ.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_VKAZ.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzvl] -name='[dmi3y-tv] Региональные: Владимир/VLAD.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_VLAD.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzvo] -name='[dmi3y-tv] Региональные: Владимирская область/VLAD_OBL.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_VLAD_OBL.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzvg] -name='[dmi3y-tv] Региональные: Волгоград/VGRAD.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_VGRAD.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzvgo] -name='[dmi3y-tv] Региональные: Волгоградская область/VGRAD_OBL.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_VGRAD_OBL.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzvd] -name='[dmi3y-tv] Региональные: Вологда/VOL.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_VOL.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzvdo] -name='[dmi3y-tv] Региональные: Вологодская область/VOL_OBL.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_VOL_OBL.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzvr] -name='[dmi3y-tv] Региональные: Воронеж/VRZH.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_VRZH.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzvro] -name='[dmi3y-tv] Региональные: Воронежская область/VRZH_OBL.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_VRZH_OBL.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzga] -name='[dmi3y-tv] Региональные: Горно-Алтайск/GALT.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_GALT.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dze] -name='[dmi3y-tv] Региональные: Екатеринбург/EKT.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_EKT.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzi] -name='[dmi3y-tv] Региональные: Иваново/IVAN.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_IVAN.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dziz] -name='[dmi3y-tv] Региональные: Ижевск/IZHSK.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_IZHSK.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzig] -name='[dmi3y-tv] Региональные: Ингушетия/ING.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_ING.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzir] -name='[dmi3y-tv] Региональные: Иркутск/IRK.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_IRK.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzio] -name='[dmi3y-tv] Региональные: Иркутская область/IRK_OBL.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_IRK_OBL.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzy] -name='[dmi3y-tv] Региональные: Йошкар-Ола/YOLA.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_YOLA.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzk] -name='[dmi3y-tv] Региональные: Казань/KZN.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_KZN.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzkl] -name='[dmi3y-tv] Региональные: Калининград/KLGR.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_KLGR.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzkg] -name='[dmi3y-tv] Региональные: Калуга/KALUGA.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_KALUGA.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzka] -name='[dmi3y-tv] Региональные: Камчатка/DV_KAM.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_DV_KAM.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzke] -name='[dmi3y-tv] Региональные: Кемерово/KEM.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_KEM.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzkeo] -name='[dmi3y-tv] Региональные: Кемеровская область/KEM_OBL.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_KEM_OBL.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzki] -name='[dmi3y-tv] Региональные: Киров/KIROV.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_KIROV.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzko] -name='[dmi3y-tv] Региональные: Коми/KOMI.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_KOMI.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzks] -name='[dmi3y-tv] Региональные: Кострома/KOSTROMA.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_KOSTROMA.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzkd] -name='[dmi3y-tv] Региональные: Краснодар/KRDAR.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_KRDAR.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzkdk] -name='[dmi3y-tv] Региональные: Краснодарский край/KRDAR_KRAI.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_KRDAR_KRAI.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzkk] -name='[dmi3y-tv] Региональные: Красноярск/KRSK.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_KRSK.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzkkk] -name='[dmi3y-tv] Региональные: Красноярский край/KRSK_KRAI.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_KRSK_KRAI.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzku] -name='[dmi3y-tv] Региональные: Курган/KRG.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_KRG.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzkur] -name='[dmi3y-tv] Региональные: Курск/KURSK.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_KURSK.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzkoro] -name='[dmi3y-tv] Региональные: Курская область/KURSK_OBL.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_KURSK_OBL.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzt] -name='[dmi3y-tv] Региональные: Кызыл/TUVA.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_TUVA.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzl] -name='[dmi3y-tv] Региональные: Липецк/LIPETSK.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_LIPETSK.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzm] -name='[dmi3y-tv] Региональные: Магадан/DV_MGDN.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_DV_MGDN.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzma] -name='[dmi3y-tv] Региональные: Майкоп/MAYK.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_MAYK.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzmh] -name='[dmi3y-tv] Региональные: Махачкала/MAHACHK.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_MAHACHK.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzmo] -name='[dmi3y-tv] Региональные: Москва/MOS.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_MOS.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzmu] -name='[dmi3y-tv] Региональные: Мурманск/MURM.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_MURM.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzn] -name='[dmi3y-tv] Региональные: Нальчик/NALCH.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_NALCH.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dznm] -name='[dmi3y-tv] Региональные: Нарьян-Мар/NAO.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_NAO.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dznn] -name='[dmi3y-tv] Региональные: Нижний Новгород/NN.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_NN.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dznt] -name='[dmi3y-tv] Региональные: Нижний Тагил/NTAG.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_NTAG.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzno] -name='[dmi3y-tv] Региональные: Новгородская область/NOVG_OBL.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_NOVG_OBL.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dznz] -name='[dmi3y-tv] Региональные: Новозыбков/NZB.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_NZB.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dznk] -name='[dmi3y-tv] Региональные: Новокузнецк/NVKZ.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_NVKZ.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dznr] -name='[dmi3y-tv] Региональные: Новороссийск/NVR.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_NVR.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzns] -name='[dmi3y-tv] Региональные: Новосибирск/NSK.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_NSK.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dznso] -name='[dmi3y-tv] Региональные: Новосибирская область/NSK_OBL.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_NSK_OBL.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dznb] -name='[dmi3y-tv] Региональные: Ноябрьск/NBK.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_NBK.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzo] -name='[dmi3y-tv] Региональные: Обнинск/OBN.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_OBN.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzom] -name='[dmi3y-tv] Региональные: Омск/OMSK.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_OMSK.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzomo] -name='[dmi3y-tv] Региональные: Омская область/OMSK_OBL.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_OMSK_OBL.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzor] -name='[dmi3y-tv] Региональные: Орел/ORL.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_ORL.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzob] -name='[dmi3y-tv] Региональные: Оренбург/ORB.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_ORB.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzoro] -name='[dmi3y-tv] Региональные: Орловская область/ORL_OBL.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_ORL_OBL.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzos] -name='[dmi3y-tv] Региональные: Орск/ORSK.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_ORSK.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzpe] -name='[dmi3y-tv] Региональные: Пенза/PENZA.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_PENZA.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzpr] -name='[dmi3y-tv] Региональные: Пермь/PERM.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_PERM.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzp] -name='[dmi3y-tv] Региональные: Петрозаводск (Республика Карелия)/PZAV_RK.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_PZAV_RK.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzpz] -name='[dmi3y-tv] Региональные: Петрозаводск/PZAV.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_PZAV.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzps] -name='[dmi3y-tv] Региональные: Псков/PSKV.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_PSKV.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzpo] -name='[dmi3y-tv] Региональные: Псковская область/PSKV_OBL.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_PSKV_OBL.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzr] -name='[dmi3y-tv] Региональные: Ростов на Дону/RD.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_RD.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzro] -name='[dmi3y-tv] Региональные: Ростовская область/RD_OBL.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_RD_OBL.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzry] -name='[dmi3y-tv] Региональные: Рыбинск/RYB.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_RYB.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzrz] -name='[dmi3y-tv] Региональные: Рязань/RYAZ.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_RYAZ.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzs] -name='[dmi3y-tv] Региональные: Самара/SAMARA.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_SAMARA.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzsp] -name='[dmi3y-tv] Региональные: Санкт-Петербург/SPB.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_SPB.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzsa] -name='[dmi3y-tv] Региональные: Саранск/SRNK.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_SRNK.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzsr] -name='[dmi3y-tv] Региональные: Саратов/SARATOV.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_SARATOV.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzsh] -name='[dmi3y-tv] Региональные: Сахалин/DV_SLIN.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_DV_SLIN.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzsho] -name='[dmi3y-tv] Региональные: Сахалинская область/DV_SLIN_OBL.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_DV_SLIN_OBL.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzsm] -name='[dmi3y-tv] Региональные: Смоленск/SMOL.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_SMOL.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzso] -name='[dmi3y-tv] Региональные: Сочи/SOCHI.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_SOCHI.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzst] -name='[dmi3y-tv] Региональные: Ставрополь/STAVR.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_STAVR.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzstk] -name='[dmi3y-tv] Региональные: Ставропольский край/STAVR_KRAI.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_STAVR_KRAI.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzsk] -name='[dmi3y-tv] Региональные: Старый Оскол/OSK.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_OSK.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzsu] -name='[dmi3y-tv] Региональные: Сургут/SUR.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_SUR.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzsy] -name='[dmi3y-tv] Региональные: Сыктывкар/SKTV.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_SKTV.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzta] -name='[dmi3y-tv] Региональные: Тамбов/TAMB.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_TAMB.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dztvo] -name='[dmi3y-tv] Региональные: Тверская область/TVER_OBL.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_TVER_OBL.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dztv] -name='[dmi3y-tv] Региональные: Тверь/TVER.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_TVER.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzto] -name='[dmi3y-tv] Региональные: Томск/TOMSK.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_TOMSK.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dztoo] -name='[dmi3y-tv] Региональные: Томская область/TOMSK_OBL.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_TOMSK_OBL.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dztu] -name='[dmi3y-tv] Региональные: Тула/TULA.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_TULA.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzty] -name='[dmi3y-tv] Региональные: Тюмень/TUM.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_TUM.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzu] -name='[dmi3y-tv] Региональные: Улан-Удэ/UUDE.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_UUDE.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzul] -name='[dmi3y-tv] Региональные: Ульяновск/UL.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_UL.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzuf] -name='[dmi3y-tv] Региональные: Уфа/UFA.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_UFA.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzh] -name='[dmi3y-tv] Региональные: Хабаровск/DV_HVSK.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_DV_HVSK.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzc] -name='[dmi3y-tv] Региональные: Чебоксары/CHR.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_CHR.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzcb] -name='[dmi3y-tv] Региональные: Челябинск/CHEL.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_CHEL.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzce] -name='[dmi3y-tv] Региональные: Черкесия/CHERKS.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_CHERKS.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzct] -name='[dmi3y-tv] Региональные: Чита (Забайкальский край)/CHITA_ZK.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_CHITA_ZK.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzct2] -name='[dmi3y-tv] Региональные: Чита/CHITA.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_CHITA.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzel] -name='[dmi3y-tv] Региональные: Элиста/ELISTA.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_ELISTA.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzyk] -name='[dmi3y-tv] Региональные: Якутск/DV_YKT.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_DV_YKT.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - -[dzyr] -name='[dmi3y-tv] Региональные: Ярославль/YARL.m3u' -pls='http://dmi3y-tv.ru/iptv/region/ZABAVA_YARL.m3u' -desc='' -src='http://dmi3y-tv.ru/d-tv/playlist/zabava/region/1' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[k6] -name='Фильмы' -pls='http://divantv.zz.mu/Playlist003.m3u' -desc= -src='https://t.me/iptv_aggregator_chat' - -[so] -name = 'smolnp/IPTVru - Основной плейлист' -desc = '250 телеканалов и 13 радиоканалов.' -pls = 'https://smolnp.github.io/IPTVru/IPTVru.m3u' -src = 'https://smolnp.github.io/IPTVru' - -[sm] -name = 'smolnp/IPTVru - Минимальный плейлист' -desc = 'Федеральные и региональные телеканалы, около 60 шт.' -pls = 'https://smolnp.github.io/IPTVru/IPTVmini.m3u' -src = 'https://smolnp.github.io/IPTVru' - -[sx] -name = 'smolnp/IPTVru - Плейлист с телеканалами для взрослых' -desc = '250 телеканалов, 13 радиоканалов и 10 телеканалов для взрослых.' -pls = 'https://smolnp.github.io/IPTVru/IPTVххх.m3u' -src = 'https://smolnp.github.io/IPTVru' - -[2] -name = 'Плейлист 2020 (iptv-playlisty.ru)' -desc = 'Трансляции для детей и подростков. Сериалы и Премьеры кино. Каналы для женщин и мужских развлечений. Документалистика и исторические лента о событиях прошлого.' -pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/2020.m3u' -src = 'https://iptv-playlisty.ru/collection/samyj-svezheobnovlennyj-plejlist-iptv-na-2020-god/' - -[3] -name = 'Плейлист newplay (iptv-playlisty.ru)' -desc = 'Общефедеральные. Каналы фильмов. Все на русском. Имеются с зарубежными лентами. Спортивные. Как трансляции, так и кино данной тематики. Детские. Мультфильмы и передачи.' -pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/newplay.m3u' -src = 'https://iptv-playlisty.ru/collection/besplatnyj-iptv-plejlist-formata-m3u/' - -[ru] -name = 'Русские' -desc = -pls = 'https://raw.githubusercontent.com/iptv-org/iptv/master/streams/ru.m3u' -src = 'https://github.com/iptv-org/iptv' - -[ru2] -redirect = ru - -[ru3] -redirect = ru - -[p5] -redirect = 2 - -[np] -redirect = 3 - -[tp] -name = 'TaurerPlus' -desc = -pls = 'https://raw.githubusercontent.com/TaurerMedia/TaurerPlus/main/index.m3u8' -src = 'https://github.com/anthonyaxenov/iptv/issues/2' - -[mus] -name = 'Музыкальные IPTV каналы (iptv-playlisty.ru)' -desc = 'Музыкальный плейлист наиболее популярных каналов на нашем телевидении.' -pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/music.m3u' -src = 'https://iptv-playlisty.ru/janriptv/muzykalnye-iptv-kanaly-v-formate-m3u/' - -[det] -name = 'Плейлист детских IPTV каналов (iptv-playlisty.ru)' -desc = -pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/deti.m3u' -src = 'https://iptv-playlisty.ru/janriptv/plejlist-detskix-iptv-kanalov-v-formate-m3u/' - -[det2] -name = 'Плейлист IPTV Мультфильмов для детей и подростков (iptv-playlisty.ru)' -desc = -pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/multy.m3u' -src = 'https://iptv-playlisty.ru/janriptv/plejlist-iptv-multfilmov-dlya-detej-i-podrostkov/' - -[sng] -name = 'Каналы СНГ' -desc = -pls = 'https://dl.dropboxusercontent.com/s/iw9v57cln6dfkpu/Vinnitsa.m3u' -src = 'https://iptvsensei.ru/samoobnovlyayemyye-pleylisty-iptv' - -[sng2] -redirect = cam - -[cam] -name = 'Веб-камеры' -desc = -pls = 'http://gorod.tv/iptv.m3u' -src = 'https://iptvsensei.ru/samoobnovlyayemyye-pleylisty-iptv' - -[moto] -name = 'Плейлист Авто и Мото каналов IPTV (iptv-playlisty.ru)' -desc = 'В список были включены популярные не только у нас каналы авто тематики.' -pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/automoto.m3u' -src = 'https://iptv-playlisty.ru/janriptv/plejlist-avto-i-moto-kanalov-iptv/' - -[poz] -name = 'Плейлист IPTV образовательных каналов (iptv-playlisty.ru)' -desc = 'В список вошло более десятка трансляций. Зритель сможет найти здесь передачи для разностороннего обучения и в целом просвещения.' -pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/obrazovanie.m3u' -src = 'https://iptv-playlisty.ru/janriptv/plejlist-iptv-obrazovatelnyx-kanalov-m3u/' - -[poz2] -name = 'Познавательные каналы IPTV плейлист (iptv-playlisty.ru)' -desc = 'Наиболее подходящие трансляции, с выпусками интересных познавательных передач на любой вкус' -pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/poznav.m3u' -src = 'https://iptv-playlisty.ru/janriptv/poznavatelnye-kanaly-iptv-plejlist-v-formate-m3u/' - -[moda] -name = 'Плейлист IPTV модных телеканалов (iptv-playlisty.ru)' -desc = 'Сюда вошли только топовые компании, на которых ежедневно рассказывают о последних тенденциях в одежде и дизайне.' -pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/moda.m3u' -src = 'https://iptv-playlisty.ru/janriptv/plejlist-iptv-modnyx-telekanalov-m3u/' - -[fun] -name = 'Плейлист IPTV каналов развлечений (iptv-playlisty.ru)' -desc = 'Огромное количество развлекательных каналов' -pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/razvlechenie.m3u' -src = 'https://iptv-playlisty.ru/janriptv/plejlist-iptv-kanalov-razvlechenij/' - -[hd] -name = 'Плейлист IPTV каналов в HD формате (iptv-playlisty.ru)' -desc = 'Плейлист доступных по настоящий момент HD каналов' -pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/hd.m3u' -src = 'https://iptv-playlisty.ru/janriptv/plejlist-iptv-kanalov-v-hd-formate/' - -[nauka] -name = 'Научные IPTV каналы в формате (iptv-playlisty.ru)' -desc = 'Современные научные каналы: история, документальное кино, психология, культура...' -pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/nauka.m3u' -src = 'https://iptv-playlisty.ru/janriptv/nauchnye-iptv-kanaly-v-formate-m3u/' - -[eda] -name = 'IPTV плейлист кулинарных каналов (iptv-playlisty.ru)' -desc = 'В список вошли наиболее интересные кулинарные каналы в формате M3U. Большинство каналов на русском языке' -pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/eda.m3u' -src = 'https://iptv-playlisty.ru/janriptv/iptv-plejlist-kulinarnyx-kanalov/' - -[heal] -name = 'IPTV плейлист каналов здоровья (iptv-playlisty.ru)' -desc = -pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/zdorov.m3u' -src = 'https://iptv-playlisty.ru/janriptv/iptv-plejlist-kanalov-zdorovya/' - -[sport] -name = 'Плейлист IPTV спортивных каналов (iptv-playlisty.ru)' -desc = 'В коллекции можно встретить: футбольные матчи, баскетбольные встречи, теннис, хоккей, автоспорт и даже гольф.' -pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/sport.m3u' -src = 'https://iptv-playlisty.ru/janriptv/plejlist-iptv-sportivnyx-kanalov/' - -[strah] -name = 'Бесплатный IPTV плейлист каналов ужасов (iptv-playlisty.ru)' -desc = -pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/Strah.m3u' -src = 'https://iptv-playlisty.ru/janriptv/besplatnyj-iptv-plejlist-kanalov-uzhasov/' - -[his] -name = 'IPTV плейлист телеканала History (iptv-playlisty.ru)' -desc = -pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/history.m3u' -src = 'https://iptv-playlisty.ru/iptv-kanaly/iptv-plejlist-telekanala-history/' - -[dis] -name = 'IPTV плейлист телеканала Discovery (iptv-playlisty.ru)' -desc = -pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/discovery.m3u' -src = 'https://iptv-playlisty.ru/iptv-kanaly/iptv-plejlist-telekanala-discovery/' - -[ngeo] -name = 'IPTV плейлист канала National Geographic (iptv-playlisty.ru)' -desc = -pls = 'https://iptv-playlisty.ru/wp-content/uploads/m3u/ngeografik.m3u' -src = 'https://iptv-playlisty.ru/iptv-kanaly/iptv-plejlist-kanala-national-geographic/' - -[kino5] -name = 'Фильмы 5 (iptvsensei.ru)' -desc = -pls = 'https://pastebin.com/raw/jLaRge54' -src = 'https://iptvsensei.ru/novye-samoobnovlyaemye-plejlisty' - -[kz2] -name = 'Казахстан' -desc = -pls = 'https://raw.githubusercontent.com/iptv-org/iptv/master/streams/kz.m3u' -src = 'https://github.com/iptv-org/iptv' - -[r1] -name = 'Радио каналы 1' -desc = -pls = 'http://lradio.c1.biz/ltradio.m3u' -src = 'https://iptvsensei.ru/novye-samoobnovlyaemye-plejlisty' - -[sng13] -redirect = sng - -[sng14] -redirect = sng2 - -[b1] -name = 'IPTV плейлисты для GX3235T2C и AV2568T2C' -desc = -pls = 'https://www.digitaltv.ru/upload/iblock/034/tvlist.m3u' -src = 'https://www.digitaltv.ru/news/iptv_pleylisty.html' - -[az] -name='Каналы Азербайджана' -desc = -pls = 'https://raw.githubusercontent.com/iptv-org/iptv/master/streams/az.m3u' -src = 'https://github.com/iptv-org/iptv' - -[az2] -redirect = az - diff --git a/tools/check-pls.sh b/src/scripts/check-pls.sh similarity index 100% rename from tools/check-pls.sh rename to src/scripts/check-pls.sh diff --git a/tools/download-all.sh b/src/scripts/download-all.sh similarity index 93% rename from tools/download-all.sh rename to src/scripts/download-all.sh index fe01daf..1983022 100755 --- a/tools/download-all.sh +++ b/src/scripts/download-all.sh @@ -18,7 +18,7 @@ TOOLS_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]:-$0}"; )" &> /dev/null && pwd 2> /dev/null; )"; DL_DIR="$TOOLS_DIR/downloaded" -INI_FILE="$(dirname "$TOOLS_DIR")/playlists.ini" +INI_FILE="$(dirname "$TOOLS_DIR")/../../playlists.ini" rm -rf "$DL_DIR" && \ mkdir -p "$DL_DIR" && \ diff --git a/tools/find-in-all.sh b/src/scripts/find-in-all.sh similarity index 100% rename from tools/find-in-all.sh rename to src/scripts/find-in-all.sh diff --git a/tools/find-in-pls.sh b/src/scripts/find-in-pls.sh similarity index 100% rename from tools/find-in-pls.sh rename to src/scripts/find-in-pls.sh diff --git a/tools/make-pls.sh b/src/scripts/make-pls.sh similarity index 100% rename from tools/make-pls.sh rename to src/scripts/make-pls.sh diff --git a/src/.env.example b/src/svc-main/.env.example similarity index 100% rename from src/.env.example rename to src/svc-main/.env.example diff --git a/src/svc-main/.gitignore b/src/svc-main/.gitignore new file mode 100644 index 0000000..01debb9 --- /dev/null +++ b/src/svc-main/.gitignore @@ -0,0 +1,10 @@ +vendor/ +cache/ + +views/custom.twig +playlists.ini +commit +*.log +.env + +!/**/.gitkeep diff --git a/src/composer.json b/src/svc-main/composer.json similarity index 75% rename from src/composer.json rename to src/svc-main/composer.json index 1f09724..52bbf07 100644 --- a/src/composer.json +++ b/src/svc-main/composer.json @@ -1,6 +1,6 @@ { "require": { - "php": "^8.2", + "php": "^8.4", "ext-json": "*", "ext-curl": "*", "ext-fileinfo": "*", @@ -10,10 +10,12 @@ }, "autoload": { "psr-4": { - "App\\": "app/" + "Core\\": "core/", + "Controllers\\": "controllers/", + "Exceptions\\": "exceptions/" }, "files": [ - "app/helpers.php" + "helpers.php" ] }, "scripts": { diff --git a/src/composer.lock b/src/svc-main/composer.lock similarity index 92% rename from src/composer.lock rename to src/svc-main/composer.lock index 8257e3f..7e44423 100644 --- a/src/composer.lock +++ b/src/svc-main/composer.lock @@ -4,20 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "3cbd8253b2f0790d682e38f308df6e7f", + "content-hash": "1aaea4609092e8a88074f050dab42323", "packages": [ { "name": "mikecao/flight", - "version": "v3.12.0", + "version": "v3.13.0", "source": { "type": "git", "url": "https://github.com/flightphp/core.git", - "reference": "63fbf9b0316969e8aa6c318f8479d1ed0578f9b4" + "reference": "1307e8a39d89fadba69d0c2dad53b6e0da83fd96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/flightphp/core/zipball/63fbf9b0316969e8aa6c318f8479d1ed0578f9b4", - "reference": "63fbf9b0316969e8aa6c318f8479d1ed0578f9b4", + "url": "https://api.github.com/repos/flightphp/core/zipball/1307e8a39d89fadba69d0c2dad53b6e0da83fd96", + "reference": "1307e8a39d89fadba69d0c2dad53b6e0da83fd96", "shasum": "" }, "require": { @@ -26,7 +26,7 @@ }, "require-dev": { "ext-pdo_sqlite": "*", - "flightphp/runway": "^0.2.0", + "flightphp/runway": "^0.2.3 || ^1.0", "league/container": "^4.2", "level-2/dice": "^4.0", "phpstan/extension-installer": "^1.3", @@ -73,22 +73,22 @@ "homepage": "http://flightphp.com", "support": { "issues": "https://github.com/flightphp/core/issues", - "source": "https://github.com/flightphp/core/tree/v3.12.0" + "source": "https://github.com/flightphp/core/tree/v3.13.0" }, - "time": "2024-08-22T17:05:34+00:00" + "time": "2024-10-30T19:52:23+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", "shasum": "" }, "require": { @@ -126,7 +126,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" }, "funding": [ { @@ -142,20 +142,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/dotenv", - "version": "v7.1.5", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "6d966200b399fa59759286f3fc7c919f0677c449" + "reference": "28347a897771d0c28e99b75166dd2689099f3045" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/6d966200b399fa59759286f3fc7c919f0677c449", - "reference": "6d966200b399fa59759286f3fc7c919f0677c449", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/28347a897771d0c28e99b75166dd2689099f3045", + "reference": "28347a897771d0c28e99b75166dd2689099f3045", "shasum": "" }, "require": { @@ -200,7 +200,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v7.1.5" + "source": "https://github.com/symfony/dotenv/tree/v7.2.0" }, "funding": [ { @@ -216,7 +216,7 @@ "type": "tidelift" } ], - "time": "2024-09-17T09:16:35+00:00" + "time": "2024-11-27T11:18:42+00:00" }, { "name": "symfony/polyfill-ctype", @@ -455,16 +455,16 @@ }, { "name": "twig/twig", - "version": "v3.14.0", + "version": "v3.16.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "126b2c97818dbff0cdf3fbfc881aedb3d40aae72" + "reference": "475ad2dc97d65d8631393e721e7e44fb544f0561" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/126b2c97818dbff0cdf3fbfc881aedb3d40aae72", - "reference": "126b2c97818dbff0cdf3fbfc881aedb3d40aae72", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/475ad2dc97d65d8631393e721e7e44fb544f0561", + "reference": "475ad2dc97d65d8631393e721e7e44fb544f0561", "shasum": "" }, "require": { @@ -475,6 +475,7 @@ "symfony/polyfill-php81": "^1.29" }, "require-dev": { + "phpstan/phpstan": "^2.0", "psr/container": "^1.0|^2.0", "symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0" }, @@ -518,7 +519,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.14.0" + "source": "https://github.com/twigphp/Twig/tree/v3.16.0" }, "funding": [ { @@ -530,20 +531,21 @@ "type": "tidelift" } ], - "time": "2024-09-09T17:55:12+00:00" + "time": "2024-11-29T08:27:05+00:00" } ], "packages-dev": [], "aliases": [], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": {}, "prefer-stable": false, "prefer-lowest": false, "platform": { "php": "^8.2", "ext-json": "*", - "ext-curl": "*" + "ext-curl": "*", + "ext-fileinfo": "*" }, - "platform-dev": [], + "platform-dev": {}, "plugin-api-version": "2.6.0" } diff --git a/src/config/app.php b/src/svc-main/config.php similarity index 100% rename from src/config/app.php rename to src/svc-main/config.php diff --git a/src/app/Controllers/Controller.php b/src/svc-main/controllers/Controller.php similarity index 94% rename from src/app/Controllers/Controller.php rename to src/svc-main/controllers/Controller.php index 9d2a736..1d8f38a 100644 --- a/src/app/Controllers/Controller.php +++ b/src/svc-main/controllers/Controller.php @@ -2,12 +2,12 @@ declare(strict_types=1); -namespace App\Controllers; +namespace Controllers; -use App\Core\IniFile; -use App\Core\Playlist; -use App\Exceptions\PlaylistNotFoundException; +use Core\IniFile; +use Core\Playlist; use Exception; +use Exceptions\PlaylistNotFoundException; use Flight; use Random\RandomException; diff --git a/src/app/Controllers/HomeController.php b/src/svc-main/controllers/HomeController.php similarity index 98% rename from src/app/Controllers/HomeController.php rename to src/svc-main/controllers/HomeController.php index 1d7dc9d..b0a95a2 100644 --- a/src/app/Controllers/HomeController.php +++ b/src/svc-main/controllers/HomeController.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace App\Controllers; +namespace Controllers; use Exception; use Flight; diff --git a/src/app/Controllers/PlaylistController.php b/src/svc-main/controllers/PlaylistController.php similarity index 95% rename from src/app/Controllers/PlaylistController.php rename to src/svc-main/controllers/PlaylistController.php index 6d86b79..125e301 100644 --- a/src/app/Controllers/PlaylistController.php +++ b/src/svc-main/controllers/PlaylistController.php @@ -2,11 +2,11 @@ declare(strict_types=1); -namespace App\Controllers; +namespace Controllers; -use App\Core\ChannelLogo; -use App\Exceptions\PlaylistNotFoundException; +use Core\ChannelLogo; use Exception; +use Exceptions\PlaylistNotFoundException; use Flight; /** diff --git a/src/app/Core/Bootstrapper.php b/src/svc-main/core/Bootstrapper.php similarity index 90% rename from src/app/Core/Bootstrapper.php rename to src/svc-main/core/Bootstrapper.php index 4cebf16..3d7526f 100644 --- a/src/app/Core/Bootstrapper.php +++ b/src/svc-main/core/Bootstrapper.php @@ -2,9 +2,8 @@ declare(strict_types=1); -namespace App\Core; +namespace Core; -use App\Extensions\TwigFunctions; use Flight; use Twig\Environment; use Twig\Extension\DebugExtension; @@ -22,7 +21,7 @@ final class Bootstrapper */ public static function bootSettings(): void { - $config = require_once config_path('app.php'); + $config = require_once root_path('config.php'); foreach ($config as $key => $value) { Flight::set($key, $value); } @@ -67,7 +66,7 @@ final class Bootstrapper */ public static function bootRoutes(): void { - $routes = require_once config_path('routes.php'); + $routes = require_once root_path('routes.php'); foreach ($routes as $route => $handler) { Flight::route($route, $handler); } diff --git a/src/app/Core/ChannelLogo.php b/src/svc-main/core/ChannelLogo.php similarity index 99% rename from src/app/Core/ChannelLogo.php rename to src/svc-main/core/ChannelLogo.php index 36a3de1..fc42536 100644 --- a/src/app/Core/ChannelLogo.php +++ b/src/svc-main/core/ChannelLogo.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace App\Core; +namespace Core; class ChannelLogo implements \Stringable { diff --git a/src/app/Core/IniFile.php b/src/svc-main/core/IniFile.php similarity index 96% rename from src/app/Core/IniFile.php rename to src/svc-main/core/IniFile.php index 42c5983..67c4289 100644 --- a/src/app/Core/IniFile.php +++ b/src/svc-main/core/IniFile.php @@ -2,10 +2,10 @@ declare(strict_types=1); -namespace App\Core; +namespace Core; -use App\Exceptions\PlaylistNotFoundException; use Exception; +use Exceptions\PlaylistNotFoundException; /** * Класс для работы с ini-файлом плейлистов @@ -40,7 +40,7 @@ class IniFile */ public function load(): void { - $filepath = config_path('playlists.ini'); + $filepath = root_path('playlists.ini'); $this->updated_at = date('d.m.Y h:i', filemtime($filepath)); $this->rawIni = parse_ini_file($filepath, true); diff --git a/src/app/Core/Playlist.php b/src/svc-main/core/Playlist.php similarity index 99% rename from src/app/Core/Playlist.php rename to src/svc-main/core/Playlist.php index 0604c21..8eb807e 100644 --- a/src/app/Core/Playlist.php +++ b/src/svc-main/core/Playlist.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace App\Core; +namespace Core; use Exception; use Random\RandomException; diff --git a/src/app/Extensions/TwigFunctions.php b/src/svc-main/core/TwigFunctions.php similarity index 97% rename from src/app/Extensions/TwigFunctions.php rename to src/svc-main/core/TwigFunctions.php index b906b41..3182c3a 100644 --- a/src/app/Extensions/TwigFunctions.php +++ b/src/svc-main/core/TwigFunctions.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace App\Extensions; +namespace Core; use Twig\Extension\AbstractExtension; use Twig\TwigFunction; diff --git a/src/app/Exceptions/PlaylistNotFoundException.php b/src/svc-main/exceptions/PlaylistNotFoundException.php similarity index 89% rename from src/app/Exceptions/PlaylistNotFoundException.php rename to src/svc-main/exceptions/PlaylistNotFoundException.php index bae0833..58d3772 100644 --- a/src/app/Exceptions/PlaylistNotFoundException.php +++ b/src/svc-main/exceptions/PlaylistNotFoundException.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace App\Exceptions; +namespace Exceptions; use Exception; diff --git a/src/app/helpers.php b/src/svc-main/helpers.php similarity index 92% rename from src/app/helpers.php rename to src/svc-main/helpers.php index 0f784f8..16b6003 100644 --- a/src/app/helpers.php +++ b/src/svc-main/helpers.php @@ -17,17 +17,6 @@ function root_path(string $path = ''): string return rtrim(sprintf('%s/%s', dirname($_SERVER['DOCUMENT_ROOT']), $path), '/'); } -/** - * Return path to application configuration directory - * - * @param string $path - * @return string - */ -function config_path(string $path = ''): string -{ - return root_path("config/$path"); -} - /** * Returns path to app cache * diff --git a/src/public/css/bootstrap.min.css b/src/svc-main/public/css/bootstrap.min.css similarity index 100% rename from src/public/css/bootstrap.min.css rename to src/svc-main/public/css/bootstrap.min.css diff --git a/src/public/favicon/android-chrome-192x192.png b/src/svc-main/public/favicon/android-chrome-192x192.png similarity index 100% rename from src/public/favicon/android-chrome-192x192.png rename to src/svc-main/public/favicon/android-chrome-192x192.png diff --git a/src/public/favicon/android-chrome-512x512.png b/src/svc-main/public/favicon/android-chrome-512x512.png similarity index 100% rename from src/public/favicon/android-chrome-512x512.png rename to src/svc-main/public/favicon/android-chrome-512x512.png diff --git a/src/public/favicon/apple-touch-icon.png b/src/svc-main/public/favicon/apple-touch-icon.png similarity index 100% rename from src/public/favicon/apple-touch-icon.png rename to src/svc-main/public/favicon/apple-touch-icon.png diff --git a/src/public/favicon/browserconfig.xml b/src/svc-main/public/favicon/browserconfig.xml similarity index 100% rename from src/public/favicon/browserconfig.xml rename to src/svc-main/public/favicon/browserconfig.xml diff --git a/src/public/favicon/favicon-16x16.png b/src/svc-main/public/favicon/favicon-16x16.png similarity index 100% rename from src/public/favicon/favicon-16x16.png rename to src/svc-main/public/favicon/favicon-16x16.png diff --git a/src/public/favicon/favicon-32x32.png b/src/svc-main/public/favicon/favicon-32x32.png similarity index 100% rename from src/public/favicon/favicon-32x32.png rename to src/svc-main/public/favicon/favicon-32x32.png diff --git a/src/public/favicon/favicon.ico b/src/svc-main/public/favicon/favicon.ico similarity index 100% rename from src/public/favicon/favicon.ico rename to src/svc-main/public/favicon/favicon.ico diff --git a/src/public/favicon/mstile-150x150.png b/src/svc-main/public/favicon/mstile-150x150.png similarity index 100% rename from src/public/favicon/mstile-150x150.png rename to src/svc-main/public/favicon/mstile-150x150.png diff --git a/src/public/favicon/safari-pinned-tab.svg b/src/svc-main/public/favicon/safari-pinned-tab.svg similarity index 100% rename from src/public/favicon/safari-pinned-tab.svg rename to src/svc-main/public/favicon/safari-pinned-tab.svg diff --git a/src/public/favicon/site.webmanifest b/src/svc-main/public/favicon/site.webmanifest similarity index 100% rename from src/public/favicon/site.webmanifest rename to src/svc-main/public/favicon/site.webmanifest diff --git a/src/public/index.php b/src/svc-main/public/index.php similarity index 94% rename from src/public/index.php rename to src/svc-main/public/index.php index e9638bf..078082c 100644 --- a/src/public/index.php +++ b/src/svc-main/public/index.php @@ -2,7 +2,7 @@ declare(strict_types=1); -use App\Core\Bootstrapper; +use Core\Bootstrapper; use Symfony\Component\Dotenv\Dotenv; /* diff --git a/src/public/js/bootstrap.bundle.min.js b/src/svc-main/public/js/bootstrap.bundle.min.js similarity index 100% rename from src/public/js/bootstrap.bundle.min.js rename to src/svc-main/public/js/bootstrap.bundle.min.js diff --git a/src/public/js/list.min.js b/src/svc-main/public/js/list.min.js similarity index 100% rename from src/public/js/list.min.js rename to src/svc-main/public/js/list.min.js diff --git a/src/public/no-tvg-logo.png b/src/svc-main/public/no-tvg-logo.png similarity index 100% rename from src/public/no-tvg-logo.png rename to src/svc-main/public/no-tvg-logo.png diff --git a/src/config/routes.php b/src/svc-main/routes.php similarity index 88% rename from src/config/routes.php rename to src/svc-main/routes.php index 5b192f1..798ee68 100644 --- a/src/config/routes.php +++ b/src/svc-main/routes.php @@ -2,8 +2,8 @@ declare(strict_types=1); -use App\Controllers\HomeController; -use App\Controllers\PlaylistController; +use Controllers\HomeController; +use Controllers\PlaylistController; return [ 'GET /' => [HomeController::class, 'index'], diff --git a/src/views/custom.twig.example b/src/svc-main/views/custom.twig.example similarity index 100% rename from src/views/custom.twig.example rename to src/svc-main/views/custom.twig.example diff --git a/src/views/details.twig b/src/svc-main/views/details.twig similarity index 100% rename from src/views/details.twig rename to src/svc-main/views/details.twig diff --git a/src/views/faq.twig b/src/svc-main/views/faq.twig similarity index 100% rename from src/views/faq.twig rename to src/svc-main/views/faq.twig diff --git a/src/views/list.twig b/src/svc-main/views/list.twig similarity index 100% rename from src/views/list.twig rename to src/svc-main/views/list.twig diff --git a/src/views/notfound.twig b/src/svc-main/views/notfound.twig similarity index 100% rename from src/views/notfound.twig rename to src/svc-main/views/notfound.twig diff --git a/src/views/template.twig b/src/svc-main/views/template.twig similarity index 100% rename from src/views/template.twig rename to src/svc-main/views/template.twig