Kod för att ta fram SL hållplatsnummer
Koden är i public domain. Den är testad senast 2010-08-12 2010-08-25, eller vad som framgår av listor med hållplatsnummer.
Kodsnuttarna anges nedan, samt som nedladdningsbara filer.
#!/bin/bash
rm info-unsorted.txt
# TODO : vissa filer släpps igenom här som plockas bort senare. Har inte orkat undersöka vad dessa filer innehåller ännu. :-)
# Se format-info.sh för detaljer.
for FILE in {0..9999}
do
if [ -e "tmp/$FILE.txt" ]
then
COUNT=`grep -c "\(flera\|finns inte i\|Ingen resa\)" "tmp/$FILE.txt"`
if [ "$COUNT" -eq 0 ]
then
# Otvetydig, giltig destination...
STOP=`grep p2w "tmp/$FILE.txt" | sed 's/.*?S=//' | sed 's/&Z=.*//'`
echo "$FILE : $STOP" >> info-unsorted.txt
fi
else
echo "Saknar en fil. Avbryter!"
exit 1
fi
done
#!/bin/bash
# Observera att det mycket av koden här finns på plats för att kringgå buggar i t.ex. html2text
cp info-sorted.txt info-format-prep1.txt
sed 's/$/<br>/' info-format-prep1.txt > info-format-prep2.txt
# Detta används för att få radbrytningar på rätt ställe med html2text
cp info-format-prep2.txt info-format-prep3.txt
sed 's/\s\+/ /g' info-format-prep2.txt > info-format-prep3.txt
# Ersätt mellanslag, tab etc. med enkla mellanslag
html2text info-format-prep3.txt > info-format-prep4.txt
cat info-format-prep4.txt | sed 's/\(/\(/g' | sed 's/\)/\)/g' > info-format-prep5.txt
# Ersätt parenteser
perl -e 'undef $/; $FILE = <>; $FILE =~ s/\n\(/\(/gs; print $FILE; $/ = "\n";' info-format-prep5.txt > info-format-prep6.txt
# Slå ihop rader där det behövs
sed 's/ ($//' info-format-prep6.txt > info-format-prep7.txt # Ta bort skräptecken
grep -v '^.*:$' info-format-prep7.txt > info-format-prep8.txt # Ta bort ogiltiga rader
# Ta fram den slutgiltiga filen
echo "Framtagen `date +%Y%m%d`" > info-formatted.txt
echo >> info-formatted.txt
cat info-format-prep8.txt >> info-formatted.txt
#!/bin/bash
#DEST="tce"
DEST="tcentralen" # ändrat 20100825 eftersom SL ändrade något (?)
if [ -d "tmp" ]
then
rm -f tmp/*.txt
rmdir tmp
fi
mkdir tmp
for i in {0..9999}
do
wget -O tmp/$i.txt "http://reseplanerare.sl.se/bin/query.exe/sn?REQ0JourneyStopsS0A=255&S=$i&REQ0JourneyStopsZ0A=255&Z=$DEST&start=yes&REQ0JourneyTime%3D%2B0%3A05"
sleep 1
done
#!/bin/bash
./add-info.sh
./sort-info.sh
./format-info.sh
run.sh :
#!/bin/bash
FILE="Nummer-`date +%Y%m%d`.txt"
if [ -e "$FILE" ]
then
echo "Filen existerar redan. Avbryter!"
exit 1
else
./get-nums.sh
./print-info.sh
./verify.sh
cp info-formatted.txt "$FILE"
echo "klar!"
fi
#!/bin/bash
sort -nk 1 info-unsorted.txt > info-sorted.txt
#!/bin/bash
#echo "$NUMBERS candidates"
#echo
A=`grep -c '^(' info-formatted.txt`
B=`grep -c ':$' info-formatted.txt`
C=`grep -c '^$' info-formatted.txt`
if [[ "$A" -eq 0 && "$B" -eq 0 && "$C" -eq 1 ]]
then
echo "Verifiering godkänd!"
echo
NUMBERS=$[`wc -l info-formatted.txt | awk '{print $1}'` - 2]
echo "$NUMBERS hållplatsnummer"
echo
else
echo "Verifiering EJ godkänd!"
echo
echo "$A"
echo "$B"
echo "$C"
fi
Summa rader: 123