# -*- coding: UTF-8 -*-
import re
import sys
try:
in_m3u = str(sys.argv[1]);
print ("Received input is : ", in_m3u)
except:
print "Input 2 args as ./111.py input.m3u"
list = [] # Список с содкржимым входящего файла
list2 = []
namen_list=[]
new_list=[]
def udalenie_pust(input_file):
for line in input_file.readlines():
line = line.strip()
if line == '':
print ""
pass
if line == '#EXTM3U':
print ""
pass
else:
list.append(line + '\n')
file.close()
return list
def full_dup():
a = len(list)
a1 = a
i = 0
while i < a-1:
b = list[i]
f = [index for index,val in enumerate(list) if val==b ]
print 'f',f
print "b", b
k=len(f)
while k > 1:
print k, f[k-1]
try:
list.pop(f[k-1])
except:
Exception
k = k-1
a = len(list)
i = i + 1
print a, i
return list
def adr_dup():# Удаление дубликатов по адресу
a = len(new_list)
i = 0
while i < a-1:
b = new_list[i]
http = re.search('^http://', str(b))
if http != None:
f = [index for index,val in enumerate(new_list) if val==b ]
k=len(f)
h=0
while k > 1:
#print "F:",f,'\n',"H:", h,'\n' "f[h]:", f[h],'\n' "list[f[h]-1]:", new_list[f[h]-1] ,'\n' "list[f[h]]:", new_list[f[h]]
new_list[f[h]] = ""
new_list[f[h]-1] = ""
f = [index for index,val in enumerate(new_list) if val==b ]
k=len(f)
if k == 1:
pass
else:
k = k-1
#h=h+1
a = len(new_list)
i = i + 1
return new_list
def nam_list():
print "start create namen_list"
a = len(list)
a1 = a
i = 0
while i < a-1: # Создаём список из чистых имён каналов и добавляем каждую вторую пустую строку
b = str(list[i])
findest1 = b.split(',')
namen=findest1[len(findest1)-1].strip()
n = re.search('^#EXTINF', str(b))
if n:
if str(namen) != ' ':
findest1 = str(b).split(',')
nam=findest1[len(findest1)-1]
namen = nam.strip()
namen_list.append(namen)
namen_list.append('')
else:
pass
i = i + 1
# print namen_list, len(namen_list)
return namen_list
def name_dup():
a = len(list) # Количечтво в исходном списке
i = 0 # Счётчик для основного списка LIST
while i < a-1:# Начинаеи перебирпть основной список
b=list[i] # Элемент из основного списка например #EXTINF:0, Первый
b1 = list[i+1]
n=namen_list[i]
f = [index for index,val in enumerate(namen_list) if val==n ]
k=len(f)
if k > 1 and n !='':# Есть дубли
#print "Дубль", f,k,n
t=0
while t <= k-1: # Работаем со списком дубликатов
#print "Добавляем дубль"
#print "1", list[f[t]]
pure_nam = list[f[t]].split(',')
pure_nam1 = pure_nam[1].strip()
pure_nam2 = str(pure_nam[0])+','+str(pure_nam1)+'\n'
#print "2", pure_nam2
new_list.append(pure_nam2)
new_list.append(list[f[t]+1])
t=t+1
#
# #print "2", list[f[1]],list[f[1]+1]
if k == 1 and n !='':
#print "Один", list
pure_nam = b.split(',')
#print "pure_nam", pure_nam
pure_nam1 = pure_nam[1].strip()
p_nam2 = str(pure_nam[0])+','+str(pure_nam1)+'\n'
new_list.append(p_nam2)
new_list.append(b1)
i=i+1
return new_list
def zapis_out_file(In_list):
i_m3u = in_m3u.split('.m3u')[0]
out_m3u = i_m3u+'_pure'+'.m3u'
file1 = open(out_m3u, "w")
a = len(In_list)
print "Save In_list", a
# file1.write("#EXTM3U")
i = 0
while i <= a-1:
file1.write(str(In_list[i]))
i = i + 1
file1.close()
file = open(in_m3u, "r")
udalenie_pust(file)
nam_list()
name_dup()
adr_dup()
zapis_out_file(new_list)