kurzer Script für Lottozahlen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
tHoRax
Beiträge: 560
Registriert: 22.12.2014 17:23:26

kurzer Script für Lottozahlen

Beitrag von tHoRax » 13.10.2020 16:37:02

Hallo.
Ich hätte gern einen kurzen Script(vorzugsweise sed script) für's Abzweigen von irische Lottozahlen von folgender Website:https://www.irishlottery.com/daily-million-archive
Es sollen ausschließlich Daily Million Nummern kopiert werden, nicht Daily Million Plus!

Das Ausgangsformat sollte wie folgt aussehen:

Code: Alles auswählen

13.10.2020   14:00   1 20 22 29 31 34   Zz: 3
12.10.2020   21:00   2  9 16 25 30 35    Zz: 10
12.10.2020   14:00  13 16 25 32 35 39  Zz: 18
...
...
xx.xx.2012   14:00   Zahlen von damals :D 
Alle Ziehungen von 2012 bis heute sollen kopiert werden in obiger Form.

Ich bin kein Scriptexperte wie meillo oder tobo oder andere, die mir damals sehr halfen,
Ein kurzer Script mittels sed würde mir genügen.

Herzlichen Dank im Voraus für eure Mühe,Dankeschön.
/ASUS-F751S/ Intel Pentium N3710 @ 2.560Ghz
VGA compatible controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller (rev 35)
Linux/5.19.13-arch1-1 x86_64 GNU/Linux
WindowManager: BSPWM

Benutzeravatar
Meillo
Moderator
Beiträge: 8781
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: kurzer Script für Lottozahlen

Beitrag von Meillo » 13.10.2020 16:42:08

Meinst du mit ``Ausgangsformat'' das AusGABEformat? Soll das Script das so erzeugen?


Hier der HTML-Code vom ersten Eintrag inkl. Table-Head:

Code: Alles auswählen

	<table class="table lotto archiveTable">

<thead>
  <tr>
    <th>Result Date:</th>
    <th>Draw Result:</th>
  <tr>
</thead>



  <tr>    
    <th style="font-size: 14px;"> 
      <a href="/results/daily-million-result-13-10-2020" title="More detailed information about the Daily Million draw that took place on October 13th 2020 "> 
        October 13th 2020
           - 2:00pm
      </a>    
    </th>   
    <td align="center">

        <ul class="balls">
                <li class="ball">1</li>

                <li class="ball">20</li>

                <li class="ball">22</li>

                <li class="ball">29</li>

                <li class="ball">31</li>

                <li class="ball">34</li>

                <li class="bonus-ball">3</li>
              <ul>


    </td>
  </tr>
			
Use ed once in a while!

Benutzeravatar
Meillo
Moderator
Beiträge: 8781
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: kurzer Script für Lottozahlen

Beitrag von Meillo » 13.10.2020 17:02:36

Noch ohne Uhrzeit und nicht optimal formatierter Ausgabe, aber zumindest mal einen Anfang:

Code: Alles auswählen

#!/bin/sh

url=https://www.irishlottery.com/daily-million-archive

wget -q -O- "$url" | awk '

/<a href="\/results\/daily-million-result/ {
        split($0, a, /-/)
        sub(/".*/, "", a[6])
        date = a[4] "." a[5] "." a[6]
        time = "XXX"
}

/class="ball"/ {
        sub(/<\/li>.*/, "")
        sub(/.*>/, "")
        numbers = numbers " " $0
}

/class="bonus-ball"/ {
        sub(/<\/li>.*/, "")
        sub(/.*>/, "")
        bonus = $0
}

/<\/tr>/ {
        printf("%s\t%s\t%s\tZz:%s\n", date, time, numbers, bonus)
        date = time = numbers = bonus = ""
}
'

Vielleicht waere XSLT nicht der schlechteste Ansatz fuer dieses Problem. Insgesamt ist es besser XML-Daten mit als XML zu verarbeiten und nicht als Text. Wobei das XML hier ganz schoen kaputt ist, darum ist es in dem Fall vielleicht doch besser es als Text zu verarbeiten.
Use ed once in a while!

tHoRax
Beiträge: 560
Registriert: 22.12.2014 17:23:26

Re: kurzer Script für Lottozahlen

Beitrag von tHoRax » 13.10.2020 17:17:48

hi meillo.
"Ausgangsformat" sollte selbstverständlich "Ausgabeformat" heissen.Meine Wortwahl ist nicht die beste. :)
Als Ausgabe sollten die Daten wie oben angegeben im Terminal(Konsole) nach Ausführung des kurzen ShellScriptes sein...
Bin noch bei der Arbeit kann dir im Moment nicht auf alles antworten.Am späten Abend lese ich von daheim aus alle Antworten zum Thema durch und werde dann auf alle Anregungen reagieren.
Danke.
/ASUS-F751S/ Intel Pentium N3710 @ 2.560Ghz
VGA compatible controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller (rev 35)
Linux/5.19.13-arch1-1 x86_64 GNU/Linux
WindowManager: BSPWM

Benutzeravatar
Meillo
Moderator
Beiträge: 8781
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: kurzer Script für Lottozahlen

Beitrag von Meillo » 13.10.2020 17:56:56

Ich hatte noch ein bisschen Zeit und Lust. Hier nun eine Version die wohl alle Anforderungen erfuellen sollte:

Code: Alles auswählen

#!/bin/sh

url=https://www.irishlottery.com/daily-million-archive

wget -q -O- "$url" | awk '

/<a href="\/results\/daily-million-result/ {
        split($0, a, /-/)
        sub(/".*/, "", a[6])
        date = sprintf("%02d.%02d.%4d", a[4], a[5], a[6])
}

/-[ 0-9][0-9]:[0-9][0-9][ap]m/ {
        sub(/.*-/, "")
        split(substr($0, 1, 5), a, /:/)
        if (substr($0, 6, 2) == "pm") {
                a[1] += 12
        }
        time = sprintf("%02d:%02d", a[1], a[2])
}

/class="ball"/ {
        sub(/<\/li>.*/, "")
        sub(/.*>/, "")
        numbers = sprintf("%s %2s", numbers, $0)
}

/class="bonus-ball"/ {
        sub(/<\/li>.*/, "")
        sub(/.*>/, "")
        bonus = $0
}

/<\/tr>/ {
        printf("%s\t%s\t%s\tZz: %s\n", date, time, numbers, bonus)
        date = time = numbers = bonus = ""
}
'
Use ed once in a while!

Benutzeravatar
alboran
Beiträge: 96
Registriert: 15.09.2009 14:24:48

Re: kurzer Script für Lottozahlen

Beitrag von alboran » 13.10.2020 19:10:23

Hallo Meillo,
ich habe dein Script aus Neugier mal aus geführt.. ich glaube nicht das die Iren 2x am Tag Lotto spielen, oder? :)

NoPaste-Eintrag41164
ThinkPad T540p mit ArchLinux DebianFluxbox

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: kurzer Script für Lottozahlen

Beitrag von inne » 13.10.2020 20:30:32

alboran hat geschrieben: ↑ zum Beitrag ↑
13.10.2020 19:10:23
Hallo Meillo,
ich habe dein Script aus Neugier mal aus geführt.. ich glaube nicht das die Iren 2x am Tag Lotto spielen, oder? :)

NoPaste-Eintrag41164
Auf der Website hat es aber 2 Ziehungen am Tag, oder was ist das für ein System :|

// the day’s Daily Million and Daily Million Plus games

Benutzeravatar
alboran
Beiträge: 96
Registriert: 15.09.2009 14:24:48

Re: kurzer Script für Lottozahlen

Beitrag von alboran » 13.10.2020 20:35:41

Sorry, mea culpa
da hab ich wohl zusehr auf's Script geschaut :hail:

Aber für einen eingefleischten Lottospieler dürfte das ganz schön teuer werden :mrgreen:
ThinkPad T540p mit ArchLinux DebianFluxbox

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: kurzer Script für Lottozahlen

Beitrag von inne » 13.10.2020 20:37:48

alboran hat geschrieben: ↑ zum Beitrag ↑
13.10.2020 20:35:41
Aber für einen eingefleischten Lottospieler dürfte das ganz schön teuer werden :mrgreen:
Aber die Chance ist auch höher, doch reich wird da eh nur die "Bank"...

Benutzeravatar
alboran
Beiträge: 96
Registriert: 15.09.2009 14:24:48

Re: kurzer Script für Lottozahlen

Beitrag von alboran » 13.10.2020 20:46:09

:THX:
ThinkPad T540p mit ArchLinux DebianFluxbox

tHoRax
Beiträge: 560
Registriert: 22.12.2014 17:23:26

Re: kurzer Script für Lottozahlen

Beitrag von tHoRax » 13.10.2020 22:56:38

@Meillo

Wow!
Das war wieder Mal super schnell von dir Meillo, danke!Die halbe Miete habe ich schon Mal! :)
Eigentlich sollte der Script alle "Daily Million" Ziehungen seit 2012 beinhalten zum Vergleich für meine Lotto-Aktivitäten :)
Weitere Ziehungen der früheren Jahre waren unten auf der Website mit den Jahreszahlen.
Hallo Meillo,
ich habe dein Script aus Neugier mal aus geführt.. ich glaube nicht das die Iren 2x am Tag Lotto spielen, oder? :)
Was glaubst du denn?Dieses "Inselvolk" hat nebst dem "Daily Million" auch noch das "Daily Million Plus", welches auch 2xtäglich gezogen wird. :)
Das "Plus" ist eher die Harz-IV-Variante :wink: , ohne das ich hier neue Diskussion in Bezug auf Harz-IV entfachen möchte.
Nix gegen Harz-IV :)
/ASUS-F751S/ Intel Pentium N3710 @ 2.560Ghz
VGA compatible controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller (rev 35)
Linux/5.19.13-arch1-1 x86_64 GNU/Linux
WindowManager: BSPWM

Benutzeravatar
Meillo
Moderator
Beiträge: 8781
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: kurzer Script für Lottozahlen

Beitrag von Meillo » 13.10.2020 23:05:59

tHoRax hat geschrieben: ↑ zum Beitrag ↑
13.10.2020 22:56:38
@Meillo

Wow!
Das war wieder Mal super schnell von dir Meillo, danke!Die halbe Miete habe ich schon Mal! :)
Eigentlich sollte der Script alle "Daily Million" Ziehungen seit 2012 beinhalten zum Vergleich für meine Lotto-Aktivitäten :)
Weitere Ziehungen der früheren Jahre waren unten auf der Website mit den Jahreszahlen.
Dazu im Script die dritte Zeile umschreiben:

Code: Alles auswählen

url="$1"
Und dann das Script so aufrufen:

Code: Alles auswählen

for i in `seq 2012 2020`; do
    ./script "https://www.irishlottery.com/daily-million-archive-$i"
done
Use ed once in a while!

tHoRax
Beiträge: 560
Registriert: 22.12.2014 17:23:26

Re: kurzer Script für Lottozahlen

Beitrag von tHoRax » 13.10.2020 23:15:29

Danke nochmals Meillo für deine Hilfestellung! :hail:
/ASUS-F751S/ Intel Pentium N3710 @ 2.560Ghz
VGA compatible controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller (rev 35)
Linux/5.19.13-arch1-1 x86_64 GNU/Linux
WindowManager: BSPWM

tHoRax
Beiträge: 560
Registriert: 22.12.2014 17:23:26

Re: kurzer Script für Lottozahlen

Beitrag von tHoRax » 15.10.2021 19:17:40

hallo meillo,
brauche wieder deine Hilfe und zwar funktioniert dein Script nicht mehr auf der o.a Website, um mir die irischen Lottozahlen runterzuladen, wahrscheinlich haben sie intern ihre Links geändert.
Könntest du evtl. deinen Script um diese Links oder was auch immer, ein klein wenig modifizeren?
Danke und freundlichen Gruß
/ASUS-F751S/ Intel Pentium N3710 @ 2.560Ghz
VGA compatible controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller (rev 35)
Linux/5.19.13-arch1-1 x86_64 GNU/Linux
WindowManager: BSPWM

Benutzeravatar
Meillo
Moderator
Beiträge: 8781
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: kurzer Script für Lottozahlen

Beitrag von Meillo » 15.10.2021 20:38:53

tHoRax hat geschrieben: ↑ zum Beitrag ↑
15.10.2021 19:17:40
hallo meillo,
brauche wieder deine Hilfe und zwar funktioniert dein Script nicht mehr auf der o.a Website, um mir die irischen Lottozahlen runterzuladen, wahrscheinlich haben sie intern ihre Links geändert.
Nein, die sperren inzwischen nur wget ... vielleicht hast du dein Script zu oft benutzt ;-) oder andere crawlen die Seite zu haeufig.

Es funktioniert wenn du einen anderen User-Agent setzt. Hinter `wget' musst du dazu noch diese Option einfuegen:

Code: Alles auswählen

-U 'Mozilla/5.0 (X11; Linux i686; rv:10.0) Gecko/20100101 Firefox/10.0'
(Ich habe mir einfach irgendeinen User-Agent-String aus dem Internet kopiert. Der funktioniert.)

Schaffst du das?
Use ed once in a while!

Benutzeravatar
paedubucher
Beiträge: 850
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: kurzer Script für Lottozahlen

Beitrag von paedubucher » 15.10.2021 21:52:23

Evtl. liesse sich das ganze mit Debianpup etwas vereinfachen? Damit lässt sich HTML parsen statt als blosser Text verarbeiten. Beispiel:

Code: Alles auswählen

curl -H "User-Agent: Mozilla/5.0 (X11; Linux i686; rv:10.0) Gecko/20100101 Firefox/10.0" https://www.irishlottery.com/daily-million-archive | pup 'ul.balls'
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

tHoRax
Beiträge: 560
Registriert: 22.12.2014 17:23:26

Re: kurzer Script für Lottozahlen

Beitrag von tHoRax » 15.10.2021 23:17:09

Wie soll man auch darauf kommen, dass diese verrückten Iren :) einen User-Agent dazwischen schalten?
Wieder was dazu gelernt :)
/ASUS-F751S/ Intel Pentium N3710 @ 2.560Ghz
VGA compatible controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller (rev 35)
Linux/5.19.13-arch1-1 x86_64 GNU/Linux
WindowManager: BSPWM

Benutzeravatar
paedubucher
Beiträge: 850
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: kurzer Script für Lottozahlen

Beitrag von paedubucher » 16.10.2021 10:32:21

tHoRax hat geschrieben: ↑ zum Beitrag ↑
15.10.2021 23:17:09
Wie soll man auch darauf kommen, dass diese verrückten Iren :) einen User-Agent dazwischen schalten?
Wieder was dazu gelernt :)
Die wollen halt bösartige Hacker vom Hacken abhalten! Den User Agent auf den Google Bot umzustellen hat auch oftmals interessante Auswirkungen, indem man damit etwa durch Paywalls hindurchblicken kann.
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

Benutzeravatar
Meillo
Moderator
Beiträge: 8781
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: kurzer Script für Lottozahlen

Beitrag von Meillo » 16.10.2021 11:23:12

paedubucher hat geschrieben: ↑ zum Beitrag ↑
16.10.2021 10:32:21
Den User Agent auf den Google Bot umzustellen hat auch oftmals interessante Auswirkungen, indem man damit etwa durch Paywalls hindurchblicken kann.
Interessant Idee ...


Willst du eigentlich mit pup noch ein ganzes Script fuer den Anwendungsfall schreiben?
Use ed once in a while!

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: kurzer Script für Lottozahlen

Beitrag von inne » 16.10.2021 11:55:06

Meillo hat geschrieben: ↑ zum Beitrag ↑
16.10.2021 11:23:12
paedubucher hat geschrieben: ↑ zum Beitrag ↑
16.10.2021 10:32:21
Den User Agent auf den Google Bot umzustellen hat auch oftmals interessante Auswirkungen, indem man damit etwa durch Paywalls hindurchblicken kann.
Interessant Idee ...
Richtig gute Idee.
Kann man damit auch die "Ich akzeptire Cookies Banner" /wegskripten/? Das würde mich hier gerade richitg gut weiter bringen. Vielen Dank @paedubucher!

Benutzeravatar
paedubucher
Beiträge: 850
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: kurzer Script für Lottozahlen

Beitrag von paedubucher » 16.10.2021 13:57:25

Meillo hat geschrieben: ↑ zum Beitrag ↑
16.10.2021 11:23:12
paedubucher hat geschrieben: ↑ zum Beitrag ↑
16.10.2021 10:32:21
Den User Agent auf den Google Bot umzustellen hat auch oftmals interessante Auswirkungen, indem man damit etwa durch Paywalls hindurchblicken kann.
Interessant Idee ...


Willst du eigentlich mit pup noch ein ganzes Script fuer den Anwendungsfall schreiben?
Wäre eine gute Übung und würde einen interessanten Vergleich ermöglichen. Ich werde das gelegentlich noch versuchen.
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

Benutzeravatar
Meillo
Moderator
Beiträge: 8781
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: kurzer Script für Lottozahlen

Beitrag von Meillo » 16.10.2021 19:07:23

paedubucher hat geschrieben: ↑ zum Beitrag ↑
16.10.2021 13:57:25
Meillo hat geschrieben: ↑ zum Beitrag ↑
16.10.2021 11:23:12
Willst du eigentlich mit pup noch ein ganzes Script fuer den Anwendungsfall schreiben?
Wäre eine gute Übung und würde einen interessanten Vergleich ermöglichen. Ich werde das gelegentlich noch versuchen.
:THX:
Use ed once in a while!

Benutzeravatar
paedubucher
Beiträge: 850
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: kurzer Script für Lottozahlen

Beitrag von paedubucher » 16.10.2021 19:48:44

Leider ist pup nicht ganz so mächtig wie jq, doch mit mehreren Schritten bringt man schon etwas hin:

Code: Alles auswählen

#!/usr/bin/bash

url='https://www.irishlottery.com/daily-million-archive'
agent='Mozilla/5.0 (X11; Linux x86_64; rv:93.0) Gecko/20100101 Firefox/93.0'

curl -H "User-Agent: ${agent}" "${url}" >lottery.html

date_pat='[A-Z]{1}[a-z]+ [0-9]{1,2}[a-z]{2} [0-9]+'
time_pat='[0-9]{1,2}:[0-9]{1,2}[a-z]{2}'
pup -f lottery.html 'tr th a text{}' | grep -E -o "${date_pat}" >dates.txt
pup -f lottery.html 'tr th a text{}' | grep -E -o "${time_pat}" >times.txt
pup -f lottery.html 'tr ul.balls text{}' | grep -E -o '[0-9]+' >balls.txt

paste -d ' ' dates.txt times.txt > datetimes.txt
offset=1
while read -r result_date
do
    balls=$(tail -n +$offset balls.txt | head -n 6 | tr '\n' ' ')
    offset=$(expr $offset + 6)
    zball=$(tail -n +$offset balls.txt | head -n 1)
    offset=$(expr $offset + 1)
    echo -e "${result_date}\t${balls}\tZz:${zball}"
done <datetimes.txt
Das ganze Datums- und Zeitformat ist leider nicht so schön, d.h. man müsste es noch etwas zurechtrücken, damit man es mit date parsen und schöner formatiert ausgeben könnte. Aber funktionieren tut es schon einmal.
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

Benutzeravatar
paedubucher
Beiträge: 850
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: kurzer Script für Lottozahlen

Beitrag von paedubucher » 16.10.2021 20:54:24

Die Verwendung von pup erinnerte mich daran, dass ich mal eine Go-Library namens htmlsqueeze geschrieben habe, um Selektoren auf HTML-Dokumente anzuwenden. Ich habe jetzt ein kleines Programm daraus gebastelt:

Code: Alles auswählen

package main

import (
	"fmt"
	"log"
	"net/http"
	"regexp"
	"strconv"
	"strings"
	"time"

	hs "github.com/patrickbucher/htmlsqueeze"
	"golang.org/x/net/html"
)

const (
	lotteryURL = "https://www.irishlottery.com/daily-million-archive"
	userAgent  = "Mozilla/5.0 (X11; Linux x86_64; rv:93.0) Gecko/20100101 Firefox/93.0"

	dateInputFmt  = "2006 January 2 3:04 pm"
	dateOutputFmt = "02.01.2006 15:04"
)

var (
	datePat = regexp.MustCompile(`^([A-Z][a-z]+) ([0-9]{1,2})[a-z]{2} ([0-9]{4})`)
	timePat = regexp.MustCompile(`([0-9]{1,2}):([0-9]{2})([ap]m)`)
)

func main() {
	doc, err := getDocument(lotteryURL, userAgent)
	if err != nil {
		log.Fatal(err)
	}

	tableRowMatcher := [][]hs.Predicate{
		[]hs.Predicate{hs.TagMatcher("tr")},
	}
	datetimeMatcher := [][]hs.Predicate{
		[]hs.Predicate{hs.TagMatcher("th")},
		[]hs.Predicate{hs.TagMatcher("a")},
	}
	ballsMatcher := [][]hs.Predicate{
		[]hs.Predicate{hs.TagMatcher("td")},
		[]hs.Predicate{hs.TagMatcher("ul")},
		[]hs.Predicate{
			hs.TagMatcher("li"),
		},
	}
	nodes := hs.Apply(doc, tableRowMatcher)
	for _, node := range nodes {
		datetime := hs.Squeeze(node, datetimeMatcher, hs.ExtractChildText)
		if len(datetime) < 1 {
			continue
		}
		raw := strings.TrimSpace(datetime[0])
		dateFormatted := reformatDate(raw)
		fmt.Printf("%s ", dateFormatted)
		balls := toIntSlice(hs.Squeeze(node, ballsMatcher, hs.ExtractChildrenTexts))
		if len(balls) != 7 {
			continue
		}
		for _, ball := range balls[:6] {
			fmt.Printf("%2d ", ball)
		}
		fmt.Printf("Zz: %2d\n", balls[6])
	}
}

func toIntSlice(values []string) []int {
	numbers := make([]int, 0)
	for _, val := range values {
		v, err := strconv.Atoi(val)
		if err == nil {
			numbers = append(numbers, v)
		}
	}
	return numbers
}

func reformatDate(rawDate string) string {
	dateFields := datePat.FindStringSubmatch(rawDate)
	timeFields := timePat.FindStringSubmatch(rawDate)
	month := dateFields[1]
	day := dateFields[2]
	year := dateFields[3]
	hour := timeFields[1]
	minute := timeFields[2]
	phase := timeFields[3]
	dateStr := fmt.Sprintf("%s %s %s %s:%s %s", year, month, day, hour, minute, phase)
	parsed, err := time.Parse(dateInputFmt, dateStr)
	if err != nil {
		return ""
	}
	formatted := parsed.Format(dateOutputFmt)
	return formatted
}

func getDocument(url, agent string) (*html.Node, error) {
	client := &http.Client{}
	req, err := http.NewRequest("GET", url, nil)
	if err != nil {
		return nil, fmt.Errorf("prepare GET %s: %v", url, err)
	}
	req.Header.Set("User-Agent", agent)
	resp, err := client.Do(req)
	if err != nil {
		return nil, fmt.Errorf("perform GET %s: %v", url, err)
	}
	defer resp.Body.Close()
	body, err := html.Parse(resp.Body)
	if err != nil {
		return nil, fmt.Errorf("parse HTML of %s: %v", url, err)
	}
	return body, nil
}
Die Ausgabe sieht recht ordentlich aus:

Code: Alles auswählen

16.10.2021 14:00 10 15 18 20 26 36 Zz:  1
15.10.2021 21:00  7 13 15 17 19 39 Zz: 20
15.10.2021 14:00  1  8  9 22 31 39 Zz:  5
14.10.2021 21:00  4  5 13 20 27 37 Zz: 28
14.10.2021 14:00  3  7 22 26 33 35 Zz: 30
Natürlich könnte man das Programm noch erweitern, indem man etwa Datumsangaben als Parameter zulassen würde.
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

tHoRax
Beiträge: 560
Registriert: 22.12.2014 17:23:26

Re: kurzer Script für Lottozahlen

Beitrag von tHoRax » 16.10.2021 21:43:02

Wow! :)
Wusste gar nicht, dass sich so viele ausser mir sich mit dem Glücksspiel befassen, aller Achtung! :)
@paedubucher
Danke für die Unterstützung.
/ASUS-F751S/ Intel Pentium N3710 @ 2.560Ghz
VGA compatible controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller (rev 35)
Linux/5.19.13-arch1-1 x86_64 GNU/Linux
WindowManager: BSPWM

Antworten