class dalok:
    def __init__(self,info):
        self.radio=info[0]              # rádiócsatorna száma
        self.perc=info[1]               # dal hossza perc
        self.mp=info[2]                 # dal hossza másodperc
        self.eloado=info[3]             # előadó
        self.cim=info[4]                # dal címe
        if len(info)>5:                 # egy címben van kettőspont? Vélelten? Hiba? Direkt?
            self.cim=info[4]+':'+info[5]
print('---------------------------------------------------------')            
print('1. feladat - Adatok beolvasása')
print('---------------------------------------------------------')
musor=list()    # mátrix - listák listája, fájl sorai, mint listák
fbe=open('musor.txt','r')
zsz=int(fbe.readline().strip())     # fájl első sora, zeneszámok száma
for sor in fbe:                     # pl. sor = '1 5 3 Deep Purple:Bad Attitude\n'
    sor=sor.strip().split()         # pl. sor = ['1', '5', '3', 'Deep', 'Purple:Bad', 'Attitude']
    sor[0:3]=map(int,sor[0:3])      # pl. sor = [1, 5, 3, 'Deep', 'Purple:Bad', 'Attitude']
    eleje=sor[0:3]                  # pl. eleje = [1, 5, 3]
    vege=' '.join(sor[3:]).split(':')   # pl. vege = ['Deep Purple', 'Bad Attitude']
    musor.append(eleje+vege)        # musorba kerül: [1, 5, 3, 'Deep Purple', 'Bad Attitude']
fbe.close()

print('---------------------------------------------------------')
print('2. feladat - Dalok száma az egyes csatornákon')
print('---------------------------------------------------------')
radiok=dict({1:0,2:0,3:0})      # radióadók, mint szótár. kulcs a csatorna száma (dal.radio)
for elem in musor:
    dal=dalok(elem)             # musor egy eleméből (lista) dalok objektum
    radiok[dal.radio]+=1        # dal, mint objektum, tudjuk használni a "mezőket", lsd fent!
for kulcs,ado in radiok.items():    # szótár kiírása
    print(f'{kulcs}. csatorna: {ado} db dal.')

print('---------------------------------------------------------------------')
print('3. feladat - Eltelt idő az első és utolsó E.C. dal között 1. csatorna')
print('---------------------------------------------------------------------')
ea='Eric Clapton'       # keresett előadó (ea)
first=True              # először találjuk meg
for i, elem in enumerate(musor, start=0):   # kell az index is...
    dal=dalok(elem)                         # musor egy eleméből (lista) dalok objektum
    if dal.radio==1 and dal.eloado==ea:     # ha 1. csatrona és Eric Clapton, akkor...
        if first:                           # ha először van meg, akkor...
            elso=i                         # elso = i, azaz musoron belüli indexét tároljuk
            first=False                     # ezt ne felejtsük átkapcsolni
        else:                               # nem először bukkanunk Eri Claptonra...
            utolso=i                        # jegyezzük meg az indexét, ez minden
                                            # alkalommal frissül, így a végén az utolsó
                                            # előfordulás indexe lesz meg
            
eltelt_ido=0            
for i in range(elso,utolso+1):              # a megfelelő indexek birtokában egyszerű összegzés
    dal=dalok(musor[i])
    if dal.radio==1:
        eltelt_ido+=dal.perc*60+dal.mp
# óra: eltelt_ido//3600 - perc: eltelt_ido%3600//60 . másodperc: eltelt_ido%3600%60
print(f'{eltelt_ido} mp, azaz {eltelt_ido//3600} óra {eltelt_ido%3600//60} perc és {eltelt_ido%3600%60} másodperc.')

print('---------------------------------------------------------')
print('4. feladat - Omega:Legenda hol ment, és mi szólt a többin')
print('---------------------------------------------------------')
utolsok=['','','']      # ebben mindig bent lesz a 3 csatorna aktuálisan játszott dala
i=0                     # indexekkel érjük el az elemeket a musorban
keres=''                # keres: ebben a dal címek lesznek előadó:cím formátumban
while keres!='Omega:Legenda':   # addig megyünk, amíg nem találjuk meg (először) az Omega:Legendát
    dal=dalok(musor[i])         # musor egy eleméből (lista) dalok objektum
    keres=dal.eloado+':'+dal.cim    # összerakjuk az előadót és címet kettősponttal
    utolsok[dal.radio-1]=keres      # rádióadó, mint index (-1 mert index 0-tól indul)
    i+=1                            # továbblépünk a musorban a következő indexű elemre
# while ciklus végén a dal objektumunkban lesz az Omegára vonatkozó információ
print(f'Az Omega:Legenda című száma a(z) {dal.radio}. adón ment.');
print('Ugyanakkor:')
for i in range(3):
    if i!=dal.radio-1:  # az Omegás rádióadót már nem írjuk ki!
        print(f'{i+1}. adó: {utolsok[i]}');

print('---------------------------------------------------------')
print('5. feladat - Melyik dalokról lehet szó (ismert részlet)')
print('---------------------------------------------------------')
fki=open('keres.txt','w')
keres=input('Olvasható részlet: ').lower()      # az input kisbetűs lesz
print(keres,file=fki)
for elem in musor:
    dal=dalok(elem)                     # # musor egy eleméből (lista) dalok objektum
    konvertalt=(dal.eloado+':'+dal.cim).lower()     # kisbetűsre konvertált előadó:cím szöveg
    x=0     # a keres szövegünk aktuális betűjének indexe
    for k in konvertalt:    # karakterenként megyünk előre az előadó:cím szövegben
        # ha x. indexű karaktere a keresnek passzol a k. karakterrel az előadó:cím-ben,
        # és x még nem érte el a keres végét, akkor...
        if x<len(keres) and keres[x]==k:
            x+=1                            # ... keresben egy karakterrel tovább mehetünk
    if x==len(keres):                       # ha keres minden karakterének volt "párja", akkor... 
        print(dal.eloado+':'+dal.cim,file=fki)  # az az előadó:cím szöveg mehet a fájlba
fki.close()

print('---------------------------------------------------------')
print('6. feladat - Új műsorszerkezet - új műsoridő')
print('---------------------------------------------------------')

hirek=3*60
bevezeto=1*60
temp=hirek          # tempben számoljuk másodpercekben a műsoridőt. hírekkel kezdünk
ora=1               # egész órák ebben lesznek
for elem in musor:
    dal=dalok(elem)
    if dal.radio==1:
        if temp+bevezeto+dal.perc*60+dal.mp>=(3600*ora):    # egész órakor nem lenne vége a dalnak
            holtido=(3600*ora-temp)                         # egész óráig "holtidő", majd
            temp+=holtido+hirek+bevezeto+dal.perc*60+dal.mp # lejátszák a dalt bevezetővel együtt
            ora+=1      # órát noveljük
        else:
            temp+=bevezeto+dal.perc*60+dal.mp               # normál eset: csak növeljük a műsoridőt
print(f'1. rádió - Adás vége az új műsorszerkezetben: {temp//3600}:{temp%3600//60}:{temp%3600%60}')        
        
        




