mirror of
https://github.com/kmein/niveum
synced 2026-03-16 10:11:08 +01:00
Packaged 14 scripts from .bin/ into packages/ with proper dependency declarations (writers.writeDashBin/writeBashBin/writePython3Bin): - 256color → two56color (terminal color chart) - avesta.sed → avesta (Avestan transliteration) - bvg.sh → bvg (Berlin transit disruptions) - unicode → charinfo (Unicode character info) - chunk-pdf → chunk-pdf (split PDFs by page count) - csv2json → csv2json (CSV to JSON converter) - fix-sd.sh → fix-sd (exFAT SD card recovery, improved output handling) - json2csv → json2csv (JSON to CSV converter) - mp3player-write → mp3player-write (audio conversion for MP3 players) - mushakkil.sh → mushakkil (Arabic diacritization) - nix-haddock-index → nix-haddock-index (GHC Haddock index generator) - pdf-ocr.sh → pdf-ocr (OCR PDFs via tesseract) - prospekte.sh → prospekte (German supermarket flyer browser) - readme → readme (GitHub README as man page) All added to overlay and packages output. .bin/ directory removed.
78 lines
2.1 KiB
Nix
78 lines
2.1 KiB
Nix
# Browse and view German supermarket flyers (Lidl, Aldi, REWE, Kaufland, Netto)
|
|
{
|
|
writers,
|
|
curl,
|
|
jq,
|
|
fzf,
|
|
zathura,
|
|
coreutils,
|
|
htmlq,
|
|
gnugrep,
|
|
gnused,
|
|
lib,
|
|
}:
|
|
writers.writeDashBin "prospekte" ''
|
|
export PATH=${lib.makeBinPath [ curl jq fzf zathura coreutils htmlq gnugrep gnused ]}:$PATH
|
|
|
|
lidl() {
|
|
echo LIDL
|
|
curl -sSL 'https://endpoints.lidl-flyer.com/v3/region-overview/lidl/de-DE/0.json' \
|
|
| jq -r '
|
|
.categories
|
|
| map(select(.name == "Filial-Angebote") | .subcategories | map(.flyers))
|
|
| flatten
|
|
| flatten
|
|
| .[]
|
|
| .pdfUrl
|
|
'
|
|
}
|
|
|
|
aldi_nord() {
|
|
echo ALDI nord
|
|
echo 'https://magazine.aldi-nord.de/aldi-nord/aldi-aktuell/GetPDF.ashx'
|
|
echo 'https://magazine.aldi-nord.de/aldi-nord/aldi-vorschau/GetPDF.ashx'
|
|
}
|
|
|
|
rewe_berlin() {
|
|
store_id=662366923
|
|
publisher_id=1062
|
|
|
|
echo REWE
|
|
curl -sSL "https://www.bonialserviceswidget.de/de/stores/$store_id/brochures?storeId=$store_id&publisherId=$publisher_id" | while read -r brochure_id; do
|
|
curl -sSL "https://www.bonialserviceswidget.de/de/v5/brochureDetails/$brochure_id?publisherId=$publisher_id" | jq -r .pdfUrl
|
|
done
|
|
}
|
|
|
|
kaufland() {
|
|
region_code=8920
|
|
echo KAUFLAND
|
|
curl -sSL https://filiale.kaufland.de/prospekte.html | htmlq --attribute href '.flyer a' | grep -Eo 'DE_de_KDZ[^/]*' | sed "s/_3000_/_''${region_code}_/" | while read -r flyer_id; do
|
|
curl -sSL "https://endpoints.leaflets.kaufland.com/v3/$flyer_id/flyer.json?regionCode=$region_code" | jq -r .flyer.pdfUrl
|
|
done
|
|
}
|
|
|
|
netto_schwarz() {
|
|
echo 'NETTO (schwarz)'
|
|
curl -sSL 'https://squid-api.tjek.com/v2/catalogs?dealer_ids=90f2VL&order_by=created' \
|
|
| jq -r '.[] | .id' \
|
|
| while read -r flyer_id; do
|
|
curl -sSL "https://squid-api.tjek.com/v2/catalogs/$flyer_id/download" \
|
|
| jq -r .pdf_url
|
|
done
|
|
}
|
|
|
|
dir="$(mktemp -d)"
|
|
trap 'rm -rf "$dir"' EXIT
|
|
|
|
prospekt_url="$( (
|
|
lidl
|
|
aldi_nord
|
|
rewe_berlin
|
|
kaufland
|
|
netto_schwarz
|
|
) | fzf)"
|
|
|
|
curl -sSL "$prospekt_url" -o "$dir/prospekt.pdf"
|
|
zathura "$dir/prospekt.pdf"
|
|
''
|