import os
from bs4 import BeautifulSoup 

# Ordner, in dem sich die Textdateien und das Skript befinden
ordner_pfad = os.path.dirname(os.path.abspath(__file__))

input = "926751.html"

# Listen von Titeln, Start- und Endmustern
titel = [
"Name",  # 1
"Verifizierter Club",  # 2
"Mitglieder",  # 3
"Kategorie",  # 4
"Land",  # 5
"Club ID",  # 6
"Logo",  # 7
"Titel8",  # 8
"Titel9",  # 9
"Titel10",  # 10
]

selectors = [
'meta[property="og:title"]',  # 1 
'span[original-title="Verifizierter Club"]',  # 2
'div.club-members.section > h3',  # 3
'span.icon-workout.icon-lg',  # 4
# usw... TODO... die weiteren Selectoren eintragen...
'</span>\n\r&nbsp;\n\r<img alt="',  # 5
'<meta content="https://www.strava.com/clubs/',  # 6
'<meta content="https://dgalywyr863hv.cloudfront.net/pictures/clubs/',  # 7
"START8",  # 8
"START9",  # 9
"START10",  # 10
]

properties = [
'content',  # 1
'##inner',  # 2
'##inner',  # 3
'##inner',  # 4
# TODO... die weiteren Properties eintragen... ##inner steht für text im Tag; ansonsten Name der Eigenschaft des Tags
]

#end muster werden nicht mehr benötigt, stehen hier nur aus Doku gründen...
end_muster = [
'" property="og:title">',  # 1
"</span>",  # 2
' Mitglieder\n</h3>',  # 3
"</span>",  # 4
'" src="data:,">',  # 5
'" property="og:url">',  # 6
'/large.jpg"',  # 7
"END8",  # 8
"END9",  # 9
"END10",  # 10
]

# Ausgabedatei
ausgabe_datei = "extrahierte_werte.txt"

def extrahiere_werte(datei):
    extrahierte_werte = {t: [] for t in titel}
    with open(datei, 'r') as textdatei:
        index = textdatei.read() 
        S = BeautifulSoup(index, 'lxml') 
        for i in range(min([len(selectors), len(properties)])):
            Tag = S.select_one(selectors[i])
            property = properties[i]
            if property == "##inner":
                extrahierte_werte[titel[i]].append(Tag.text)
            else: 
                extrahierte_werte[titel[i]].append(Tag[property])
        Tag = S.select_one('span[original-title="Verifizierter Club"]')
        Tag = S.select_one('span.icon-workout.icon-lg')
        property = "##inner"
        #property = "content"
        if property == "##inner":
            print(Tag.text)
        else: 
            print(Tag[property])
    return extrahierte_werte

def main():
    print("gogo")
    with open(ausgabe_datei, 'w') as ausgabe:
        ausgabe.write("Dateiname\t" + "\t".join(titel) + "\n")
        for datei_name in os.listdir(ordner_pfad):
            if datei_name.endswith(".html"):
                print("handling {datei_name}".format(datei_name=datei_name))
                datei_pfad = os.path.join(ordner_pfad, datei_name)
                extrahierte_werte = extrahiere_werte(datei_pfad)
                print(extrahierte_werte)
                if extrahierte_werte:
                    dateiname = os.path.splitext(datei_name)[0]
                    ausgabe.write(dateiname)
                    for t in titel:
                        ausgabe.write("\t" + "\t".join(extrahierte_werte[t]))
                    ausgabe.write("\n")

if __name__ == "__main__":
    main()
