{ "cells": [ { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import requests\n", "import re\n", "from bs4 import BeautifulSoup\n", "#import qrcode\n", "import os\n", "import sys\n", "import subprocess\n", "import time\n", "response = requests.get('https://www.esg-handball.de/training/index')\n", "Fi =str(response.content.decode('utf-8', 'ignore'))\n", "Fi_cleaned = re.sub('(\\s{2,})',' ',str(Fi))\n", "soup = BeautifulSoup(Fi_cleaned, 'html.parser')\n", " \n", "tabelle=soup.find_all(class_='content-box m-bot-15')\n", "\n", "rows = soup.find_all('table')\n", "#print(rows[0])\n", "header = soup.find_all('h2')\n", "#print(header)\n", "parse=re.compile(r\"\\(.*)\\<\\/h2\\>\")\n", "headers =[]\n", "for head in header:\n", " name=parse.findall(str(head))\n", " try:\n", " headers.append(name[0])\n", " except:\n", " continue\n", "dates = []\n", "for row in rows:\n", " training = row.find_all('p')\n", " parse=re.compile(r\"\\(.*)\\<\\/p\\>\")\n", " date = []\n", " for ele in training:\n", " name=parse.findall(str(ele))\n", " date.append(name[0])\n", " dates.append(date)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#print(dates)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "done.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "sh: /usr/local/TeX/bin/x86_64-darwin/pdflatex: No such file or directory\n" ] }, { "data": { "text/plain": [ "32512" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tex_code = r\"\"\"\n", "\\documentclass[12pt,a4paper,landscape]{extarticle}\n", "\\usepackage[T1]{fontenc}\n", "\\usepackage[default]{opensans}\n", "\\usepackage[utf8]{inputenc}\n", "\\usepackage[table]{xcolor}\n", "\\usepackage[margin=0.1in]{geometry}\n", "\\usepackage{array}\n", "\\usepackage{arev}\n", "%\\usepackage[T1]{fontenc}\n", "\\usepackage{scalefnt}\n", "\\usepackage{caption}\n", "\\usepackage{array}\n", "\\usepackage{graphicx}\n", "\\usepackage[absolute]{textpos}\n", "\\usepackage{threeparttable}\n", "\\newcolumntype{L}[1]{>{\\raggedright\\let\\newline\\\\\\arraybackslash\\hspace{0pt}}m{#1}}\n", "\\newcolumntype{C}[1]{>{\\centering\\let\\newline\\\\\\arraybackslash\\hspace{0pt}}m{#1}}\n", "\\newcolumntype{R}[1]{>{\\raggedleft\\let\\newline\\\\\\arraybackslash\\hspace{0pt}}m{#1}}\n", "\\makeatletter\n", "\\newcommand{\\thickhline}{%\n", " \\noalign {\\ifnum 0=`}\\fi \\hrule height 2pt\n", " \\futurelet \\reserved@a \\@xhline\n", "}\n", "\\setlength{\\tabcolsep}{.16667em}\n", "\\newcolumntype{\"}{@{\\hskip\\tabcolsep\\vrule width 2pt\\hskip\\tabcolsep}}\n", "\\makeatother\n", "\\usepackage{color, colortbl}\n", "\\definecolor{LRed}{rgb}{1,.8,.8}\n", "\\definecolor{LGreen}{rgb}{.8,1,.8}\n", "\\definecolor{LBlue}{rgb}{8,39,142}\n", "\\renewcommand{\\rmdefault}{ptm}\n", "\\setlength{\\topmargin}{-3.5cm}\n", "\\begin{document}\n", "\\begin{center}\n", "\\vspace{-2cm}\n", "{\\scalefont{3}Trainingszeiten\"\"\"\n", "tex_code +=r\"\"\"}\\\\\\scalefont{2}\\end{center}\"\"\"\n", "#tex_code +=r\"\"\"\\begin{table}[h]\"\"\"\n", "tex_code +=r\"\"\"\\centering\"\"\"\n", "tex_code +=r\"\"\"\\begin{tabular}{|L{6cm}|L{5.5cm}|C{4cm}|L{13cm}|}\"\"\"\n", "tex_code +=r\"\"\"\\hline \"\"\"\n", "tex_code +=r\"\"\"Mannschaft. & Tag &Uhrzeit& Halle\\\\\"\"\"\n", "tex_code +=r\"\"\"\\hline \"\"\"\n", "for x in range(len(headers)):\n", "\n", " #print(headers[x])\n", " for y in range(3):\n", " if (x % 2) == 0:\n", " tex_code +=r\"\"\"\\rowcolor{gray!25}\"\"\"\n", " else:\n", " tex_code +=r\"\"\"\\rowcolor{white}\"\"\"\n", " if y == 0:\n", " tex_code +=r\"\"\"{}&{}&{}&{}\\\\\"\"\".format(headers[x],dates[x][y*4], dates[x][(y*4)+1], (dates[x][(y*4)+2])[7:])\n", " else:\n", " try: \n", " tex_code +=r\"\"\"{}&{}&{}&{}\\\\\"\"\".format(' ',dates[x][y*4], dates[x][(y*4)+1], (dates[x][(y*4)+2])[7:])\n", " except:\n", " continue\n", " tex_code +=r\"\"\"\\hline \"\"\"\n", "tex_code+=r\"\"\"\\end{tabular}\"\"\" \n", "#tex_code+=r\"\"\"\\end{table}\"\"\" \n", "tex_code+=r\"\"\"\\end{document}\"\"\"\n", "#print(tex_code)\n", "tex_file = \"training.tex\"\n", "with open(tex_file, \"w\") as out_file:\n", " out_file.write(tex_code)\n", "print(\"done.\")\n", "os.system(\"/usr/local/texlive/2023/bin/universal-darwin/pdflatex training.tex\")\n", "os.system(\"rm -f *.log *.aux\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#print(headers)\n", "parse=re.compile(r\"([mw])\\S*\\s(\\w\\-\\w*)\\s(\\d?)|(\\d\\.)\\s(\\w*)|([mw])\\S*\\s(\\w\\-\\w*)|^(\\w\\-\\w*)|^(\\w*)\\Z\")\n", "headers2 =[]\n", "for head in headers:\n", " name=parse.findall(head)\n", " headers2.append(name)\n", "#print(headers2) \n", "mails=[]\n", "for head in headers2:\n", " res=''\n", " try:\n", " for x in head[0]:\n", " res+=str(x)\n", " except:\n", " continue\n", " if res=='Damen':\n", " res='1.Damen'\n", " #res+=\"@esg-handball.de\"\n", " mails.append(res)\n", "print(mails)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from datetime import datetime\n", "day_of_year = datetime.now().timetuple().tm_yday\n", "year=datetime.now().timetuple().tm_year\n", "#print(day_of_year)\n", "#print(year)\n", "if day_of_year<182:\n", " add_off=-1\n", "else:\n", " add_off=0\n", "Offsets_2nd=[18, 16,14,12,10,8,6]\n", "Shift=[-1,-1,-1,-1,-1,-1,-2]\n", "Jahrgänge=[]\n", "for x in range(len(Offsets_2nd)):\n", " Jahrgänge.append(str(year-Offsets_2nd[x]+add_off)+'-'+str(year-(Offsets_2nd[x]+Shift[x]+add_off)))\n", "Jugenden=['A-Jugend','B-Jugend', 'C-Jugend', 'D-Jugend', 'E-Jugend', 'F-Jugend','Minis']\n", "Mannschaften = [[0 for x in range(2)] for y in range(7)]\n", "for i in range(len(Jugenden)):\n", " Mannschaften[i][1]=Jahrgänge[i]\n", " Mannschaften[i][0]=Jugenden[i]\n", "#print(Mannschaften)\n", "Teams = [[0 for x in range(3)] for y in range(len(mails))]\n", "for i in range(len(mails)):\n", " Teams[i][0]=mails[i] \n", " for x in range(len(Jugenden)):\n", " if Jugenden[x][0] in str(Teams[i][0]):\n", " Teams[i][1] = Mannschaften[x][1]\n", " Teams[i][2] = Mannschaften[x][0]\n", " break\n", "print(Teams)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "for x in range(len(headers)):\n", " for y in range(3):\n", " try:\n", " Teams[x][2].append(dates[x][y*4], dates[x][(y*4)+1], dates[x][(y*4)+2])\n", " except:\n", " continue\n", "print(Teams)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.5" } }, "nbformat": 4, "nbformat_minor": 4 }