import os
import sys
import random
import urllib.parse
import requests

def fix_text(text):
    try:
        return text.encode('latin-1').decode('utf-8')
    except (UnicodeEncodeError, UnicodeDecodeError):
        return text

site = "http://michel.quercia.free.fr/"
tex_files = [
    # Algèbre bilinéaire
    "algèbre-bilinéaire/autoadj.tex",
    "algèbre-bilinéaire/euclid3.tex",
    "algèbre-bilinéaire/fquad.tex",
    "algèbre-bilinéaire/matrices.tex",
    "algèbre-bilinéaire/orthog.tex",
    "algèbre-bilinéaire/prodscal.tex",
    # Algèbre générale
    "algèbre-générale/anneaux.tex",
    "algèbre-générale/applic.tex",
    "algèbre-générale/binome.tex",
    "algèbre-générale/complexe.tex",
    "algèbre-générale/equiv.tex",
    "algèbre-générale/fini.tex",
    "algèbre-générale/groupes.tex",
    "algèbre-générale/n.tex",
    "algèbre-générale/operat.tex",
    "algèbre-générale/ordre.tex",
    "algèbre-générale/permut.tex",
    "algèbre-générale/r.tex",
    "algèbre-générale/recur.tex",
    # Algèbre linéaire
    "algèbre-linéaire/applin.tex",
    "algèbre-linéaire/determ.tex",
    "algèbre-linéaire/dualite.tex",
    "algèbre-linéaire/equalin.tex",
    "algèbre-linéaire/ev.tex",
    "algèbre-linéaire/matrices.tex",
    "algèbre-linéaire/rang.tex",
    "algèbre-linéaire/reduc.tex",
    # Arithmétique
    "arithmétique/bezout.tex",
    "arithmétique/congru.tex",
    "arithmétique/pgcd.tex",
    "arithmétique/premier.tex",
    "arithmétique/q.tex",
    "arithmétique/zsurnz.tex",
    # Calcul différentiel
    "calcul-différentiel/derpart.tex",
    "calcul-différentiel/dlimite.tex",
    "calcul-différentiel/dlimpl.tex",
    "calcul-différentiel/dlth.tex",
    "calcul-différentiel/dérivée.tex",
    "calcul-différentiel/eqnonlin.tex",
    "calcul-différentiel/equalin.tex",
    # Fonctions
    "fonctions/continu.tex",
    "fonctions/monotone.tex",
    "fonctions/trigo.tex",
    "fonctions/usuelles.tex",
    # Géométrie
    "géométrie/quadriques.tex",
    # Intégration
    "intégration/int-généralisées.tex",
    "intégration/int-multiples.tex",
    "intégration/int-param.tex",
    "intégration/int-riemann.tex",
    # Polynômes
    "polynômes/euclide.tex",
    "polynômes/fraction.tex",
    "polynômes/irreduc.tex",
    "polynômes/polynomes.tex",
    "polynômes/puisscr.tex",
    "polynômes/racines.tex",
    "polynômes/symetric.tex",
    # Probabilités
    "probabilités/probas.tex",
    "probabilités/variables-aléatoires.tex",
    # Séries
    "séries/fourier.tex",
    "séries/numériques.tex",
    "séries/suitefct.tex",
    "séries/séries-entières.tex",
    # Topologie
    "topologie/evn.tex",
    "topologie/recur1.tex",
]

n = int(sys.argv[1])
print("% !TEX encoding = UTF-8 Unicode\n% !TEX TS-program = luatex\n\n\\input exos\n\n\\fiche{Fiche d'exercices}\n\n")

for k in range(n):
	# download tex file
	u = site + tex_files[random.randint(0, len(tex_files) - 1)]
	res = requests.get(u).text
	exos = res.split("\\ex ")[1:]
	if len(exos) > 2:
		ex = "\\ex " + exos[random.randint(0, len(exos) - 2)]
		print(fix_text(ex))

print("\n\\bye")
