import sys
import os

 #hexdump -n 128 -v -e '1/1 "%02X" "\n"' 05\ -\ If\ The\ World.mp3 


class Id3Parser:
    def __init__(self):
        self.input = str.split(str.rstrip(sys.stdin.read()),"\n")
    
    
    def get_char_list(self):
        '''Ritorna il dump cosi come e' stato preso in stdin, ogni carattere
        rappresenta una cifra esadecimale'''
        return self.input
            
    
    def get_hex_list(self):
        '''Permette di ottenere una lista con il valore decimale di tutti
        i caratteri esadecimale presi da stdin'''
        hex_list = [self.hexstr2ascii(el) for el in self.input]
        return hex_list
    
    def get_ascii_list(self):
        '''Questa funzione preso un valore decimale ne trova il corrispettivo
        valore ascii, comprimento la lista in modo che i caratteri non ascii
        (minori di 32 in decimale) facciano da spaziatore tra un carattere
        valido e l'altro'''
        lst =[]
        prev=0
        for el in self.get_hex_list():
            if el < 32 and prev < 32:
                continue
            elif el < 32 and prev > 32:
                lst.append("00")
            else:
                lst.append(chr(el))
            prev = el
        return lst
    
    def hexstr2ascii(self, value):
        '''Questa funzione, preso un qualsiasi valore ascii rappresentante un
        esadecimale (es. '4B') ne trova il corrispettivo valore decimale.'''
        symbol_dict={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,
                     '6':6,'7':7,'8':8,'9':9,
                     'A':10,'B':11,'C':12,'D':13,'E':14,'F':15}
        fst_hex = symbol_dict[value[0]]
        snd_hex = symbol_dict[value[1]]
        return (fst_hex*16 + snd_hex)
    
    def get_info_list(self):
        '''Questa funzione ritorna una lista delle informazioni sensibili.'''
        lst=[]
        info=""
        for el in self.get_ascii_list():
            if (el == "00"):
                lst.append(info)
                info=""
                continue
            
            else:
                info+=el
            
        return lst
    
if __name__ == "__main__":
    from id3parser import Id3Parser
    parser = Id3Parser()
    print parser.get_info_list()
    
