mystique_man
@mystique_man

Скрипт вытаскивания текста ограниченного двумя символами из файла, и вставка его в другой файл. Как?

Доброго всем времени суток.
1. Есть файл m3u (плейлист), он часто обновляется, и находится по прямой ссылке в общем доступе в интернете.
Имеет он такую структуру:
EXTM3U
#EXTINF:-1,Пятый Канал
http://бла.бла.бла.бла:4022/udp/некийipпотока:1234
Жирным выделена часть которая меняется.
2. Есть другой файл. TXT, хранится локально, либо на общедоступном ftp (моем личном, вариант предпочтительнее)
Его структура:
amedia1,Amedia 1 HD,http://бла.бла.бла.бла:1234/udp/некийipпотока:1234
amedia-hit,Amedia HIT HD,http://бла.бла.бла.бла:1234/udp/некийipпотока:1234
amedia-hd,Amedia Premium HD,http://бла.бла.бла.бла:1234/udp/некийipпотока:1234
animal-hd,Animal Planet HD,http://бла.бла.бла.бла:1234/udp/некийipпотока:1234
discov_rus-hd,Discovery Channel HD,http://бла.бла.бла.бла:1234/udp/некийipпотока:1234

Задача: автоматизировать замену "бла.бла.бла.бла" в файле txt, значением из файла m3u. Значение всего одно, оно повторяется в каждой строке.

Т.е. кратко: скачал файл, нашел значение, открыл файл, заменил значение, закрыл, закачал обратно.
Также интересует возможность исполнения этого по расписанию и не на локальной машине, может есть какие-то сервисы...без покупки vps
p.s. постоянно меняется ретранслирующий сервер iptv(
  • Вопрос задан
  • 297 просмотров
Пригласить эксперта
Ответы на вопрос 3
mourr
@mourr
Passionate JS developer
Ну например, такой регуляркой вытащить нужный url потока
([A-Z\d\.-]{2,})\.([A-Z]{2,})(:\d{2,4})?/i
Затем заменить потоки в файле. Реализуется на любом языке программирования

И вот пример, можно поставить на cron на любом бесплатном хостинге, например Hostinger
Ответ написан
@ashumkin
системный разработчик
готовите шаблон (с ними проще работать), назовём его <template_file>
amedia1,Amedia 1 HD,http://@@ADDR@@/udp/некийipпотока:1234
amedia-hit,Amedia HIT HD,http://@@ADDR@@/udp/некийipпотока:1234
amedia-hd,Amedia Premium HD,http://@@ADDR@@/udp/некийipпотока:1234
animal-hd,Animal Planet HD,http://@@ADDR@@/udp/некийipпотока:1234
discov_rus-hd,Discovery Channel HD,http://@@ADDR@@/udp/некийipпотока:1234


Файл m3u сохраняете в <file_from_server>
выполняете скрипт на Bash (sed обычно установлен)
# get new addr
blah_blah=$(sed -ne '\#http://\(.\+\?\)/udp/.\+#{s//\1/p;q}' <file_from_server>)
# replace @@ADDR@@ to blah-blah
# nota bene double quotes
sed -e "s/@@ADDR@@/$blah_blah/" <template_file>


на выходе получаете нужный вам файл, перенаправлением сохраняете
Ответ написан
Комментировать
@cardinalus
Вариант на Python

import urllib2
urlInputFile = 'http://xxxx' # link to m3u file
outputFile = 'result.txt'

response = urllib2.urlopen(urlInputFile)
fileM3U = response.readlines()

streamIP = ''
for line in fileM3U:
    if 'http' in line:
        if not streamIP: streamIP = line.split('/')[2]

with open(outputFile,mode='r') as f:
    lines = f.readlines()

with open(outputFile,mode='w') as f:
    for line in lines:
        f.write(line.replace(line.split('/')[2],streamIP))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы