#!/usr/bin/python3

import sys
import re
import spacy_udpipe

udpipe = spacy_udpipe.load("fr-sequoia")

regex_item = re.compile("<item><title>(.*?)<\/title>.*?<description>(.*?)<\/description>")


def analyse_txt(texte):
    doc =  udpipe(texte)
    result = ""
    for token in doc:
        result += f"{token.text}\t{token.lemma_}\t{token.pos_}\n"
    return result

def token2xml(token):
    return f'<element><data type="type">{token.pos_}</data><data type="lemma">{token.lemma_}</data><data type="string">{token.text}</data></element>\n'

def analyse_xml(texte):
    doc = udpipe(texte)
    result = ""
    for token in doc:
        result += token2xml(token)
    return result

def nettoyage(texte):
    texte_net = re.sub("<!\[CDATA\[(.*?)\]\]>", "\\1", texte) 
    return texte_net


def extract_un_fil(fichier_rss, output_xml, output_txt):
    with open(fichier_rss, "r") as input_rss:
        lignes = input_rss.readlines()
        texte = "".join(lignes)
        for m in re.finditer(regex_item, texte):
            titre_net = nettoyage(m.group(1))
            description_net = nettoyage(m.group(2))
            output_txt.write(analyse_txt(titre_net))
            output_txt.write(analyse_txt(description_net))
            output_txt.write(f"\n---\n")
            item_xml = f"<item><titre>\n{analyse_xml(titre_net)}</titre><description>\n{analyse_xml(description_net)}</description></item>\n"
            output_xml.write(item_xml)

if __name__ == "__main__":
    fichier_rss = sys.argv[1]
    fichier_xml = sys.argv[2]
    fichier_txt = sys.argv[3]
    extract_un_fil(fichier_rss, fichier_xml, fichier_txt)














