wolandmaster / dijnet-dump Goto Github PK
View Code? Open in Web Editor NEWLicense: Apache License 2.0
License: Apache License 2.0
Szia,
macOS 10.12 alatt a login nem működik, nem találja meg az adott stringet a wget-tel letöltött htmlben. Kicsit mókoltam vele és kisült, hogy a html latin2-ben jön le. On-the-fly konvertálva (iconv) utf8-ra simán működött.
IroNiQ
Cygwin mkdir nem tudja a mappát létrehozni, ha a szolgáltató neve pont (.) karakterre végződik.
Példa: FV Zrt.
Workaround: TARGET_FOLDERben a ${PROVIDER} végére odabiggyesztünk valamilyen karaktert.
Vélhetően megváltozott a módi, ahogy a díjnet a számlákat listázza, mert már nincsenek <a>
linkek a táblázat celláiban, hanem onclick
attribútumokat tesznek a cellákra. A számlákra mutató linkek és a végső letöltőlinkek nem változtak, az a része működik, csak éppen nem jutott el odáig.
Nekem ezzel a módosítással működött:
diff --git a/dijnet-dump.sh b/dijnet-dump.sh
index 4bbce3b..2cfaa9e 100755
--- a/dijnet-dump.sh
+++ b/dijnet-dump.sh
@@ -75,8 +75,9 @@ echo "${PROVIDERS}" | grep -o "value" | wc -w
for ID in $(echo "${PROVIDERS}" | xpath '//option/@value' | sed 's/value="\([^"]*\)"/\1 /g'); do
PROVIDER=$(echo "${PROVIDERS}" | xpath "//option[@value=${ID}]/text()" | sed 's/&\([a-zA-Z]\)[a-zA-Z]*;/\1/g')
INVOICES=$(dijnet "control/szamla_search_submit" "vfw_form=szamla_search_submit&vfw_coll=szamla_search_params&szlaszolgid=${ID}" \
- | xpath '//table[contains(@class, "szamla_table")]/tbody/tr/td[1]/a/@href' \
- | sed 's/href="\([^"]*\)"/\1 /g;s/\&/\&/g;s/\/ekonto\/control\///g')
+ | xpath '//table[contains(@class, "szamla_table")]/tbody/tr/td[1]/@onclick' \
+ | sed 's/onclick="xt_cell_click(this,.//g;s/.)"//g;s/\&/\&/g;s/\/ekonto\/control\///g')
+
INVOICE_COUNT=$(echo "${INVOICES}" | wc -w)
INVOICE_INDEX=1
for INVOICE in ${INVOICES}; do
szia, evek ota boldog hasznaloja vagyok ennek a remek eszkoznek, halas koszonet erte:).
sajnos iden nem igazan boldogulok.
szamlak letoltese kozben, NEM mindig ugyanott, elszall a kovetkezo keppen:
@login03:~/dijnet_foutca/dijnet-dump$ ./dijnet-dump.sh
login... OK
query service providers... 6
hint: install "pv" package for a nice progress bar
download "Vodafone Cégcsoport", total: 11, current: 4ERROR: not able to select invoice
neha rogton az elso szamlanal, neha a 4-iknel, neha a masodik szolgaltatonal.
csak nalam van problema?
a kornyezet vmi egyetemi linux cluster node-ja, szoval lehet nem a leg up-to-date-ebb, de tavaly mukodott.
dijnet dump a latest masterrol jon.
koszonom elore is ha megnezed!
login... ERROR: login failed
Befejeződött
Ezt kapom, gondolom azért mert megint variáltak rajta, valaki megtudná nézni mi baja?
Egyes célkönyvtárakban találtam sok kiterjesztés nélküli szamla_pdf?1111, szamla_teho_pdf?1111 meg teho_all_pdf?1111 állományokat, amik mind HTML állományok. Gondolom a wget szedheti le és utána nem került kitörlésre, mert szamla.pdf, teho.pdf és teho_all.pdf állományok is vannak, tehát úgy tűnik letölti őket. Ezért gondolom, hogy csak PDF letöltés után nem került törlésre. Nem mindegyik könyvtárban van, nem találtam ránézésre összefüggést miért van vagy miért nincs.
Nem működik macOS-en a bejelentkezés, hiába próbálok ki bármit:
Monarakh:dijnet-dump segabor$ ./dijnet-dump.sh -d ********
password: *******
login...
ERROR: login failed ()
Ugyanez működik Linux alól. Erős a gyanúm, hogy esetünkben a sed
-del lesz a gond, mivel ez sem ugyanaz (Linux vs BSD). Mindjárt feltelepítek egy GNU sed-et macOS-re és kipróbálom azzal.
Hali!
Megint valami gondja van :( (évekig működik, aztán behal)
login... HTTP/1.1 406 Not Acceptable
Date: Thu, 11 Aug 2022 08:51:28 GMT
Content-Type: text/html
Content-Length: 156
Connection: close
Server: HTTP-Server
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Referrer-Policy: strict-origin
Strict-Transport-Security: max-age=31536000
Front-End-Https: on
Set-Cookie: HAPROXY_SESSION=as11|YvTDE; path=/; HttpOnly; Secure
ERROR: login failed ()
OpenWrt es LEDE alatt vannak hibak:
unaccent
, ezert ekezetes mappakba kerulnek a letoltott szamlak, de a letoltes alapvetoen mukodik.invoice_data
kiolvasasa, ezert nem sikerul osszerakni a TARGET_FOLDER
-t, igy nem tolt le semmit.busybox
-os sed
nem boldogul az utf-8
-al es persze gnu sed nincs a repo-ban.$ ./dijnet-dump.sh X
password:
login... OK
query service providers... 1
Log vége:
- grep -c sopts.add
- command -v pv
- sed -n 's/.var ropts\s=\s*[(.)];./\1/;s/},\s*{/}\n{/gp'
- read -r PROVIDER_JSON
- rm /tmp/tmp.71UZxKEgMZ
A
sed -n 's/.var ropts\s=\s*[(.)];./\1/;s/},\s*{/}\n{/gp'
nem stimmel rá, Ezek az értékek (az ügyfélszámokat kinulláztam):
var sopts = new Set();
sopts.add('\''Vodafone C.gcsoport'\'');
ropts = [{"aliasnev":"UPC (0000000000)","szlaszolgnev":"Vodafone C.gcsoport","regszolgid":000000000,"ugyfelazon":"0000000000","statusgrp":40,"szolgid":210,"alias":"UPC"}];
Az unaccent funkció bevezetése óta a letöltések ékezetes és ékezet mentes módon is megtalálhatóak. Jó lenne, ha lenne olyan opció, hogy az ékezetes megoldás maradjon, így a korábbi letöltésekhez kerülnének az újabbak (és engem nem zavarnak az ékezetek :) ).
macOS Catalinán a következő hibát dobja a szkript:
login... Warning: Failed to set locale category LC_NUMERIC to en_HU.
Warning: Failed to set locale category LC_TIME to en_HU.
Warning: Failed to set locale category LC_COLLATE to en_HU.
Warning: Failed to set locale category LC_MONETARY to en_HU.
Warning: Failed to set locale category LC_MESSAGES to en_HU.
OK
query service providers... ./dijnet-dump.sh: line 74: readarray: command not found
ERROR: not able to detect service providers
Terminated: 15
Monarakh:dijnet-dump segabor$ Warning: Failed to set locale category LC_NUMERIC to en_HU.
Warning: Failed to set locale category LC_TIME to en_HU.
Warning: Failed to set locale category LC_COLLATE to en_HU.
Warning: Failed to set locale category LC_MONETARY to en_HU.
Warning: Failed to set locale category LC_MESSAGES to en_HU.
Ebből nekem az jött le, hogy a readarray
beépített parancs nem része a macOS-en telepített bash-nek. Mint kiderült, ez egy bash 4-es újítás, ami Mac-en nincs, mert megállt a 3.2.57(1)-release
verziónál.
Letöltendő fájlok nemcsak az adott számla "Letöltés" fülén vannak, hanem pl. az "Információ" fül alatt.
Ezeket is szeretném archiválni. Köszönöm!
Példa 1:
FV Zrt. számlák "Információ" fülén (control/szamla_info#tab_szamla_info) a "Terhelési összesítő hátoldala" dokumentum (/control/teho_info_pdf).
Példa 2:
Telekom szolgáltató esetén a "Hívásrészletező" fülén (control/szamla_reszletek#tab_szamla_reszletek) a csatolmány (/control/hivasreszletezo_csv)
Build libxml2-utils
in the Dockerfile (in a builder) instead of using a hardcoded ipk
binary.
A UX ;) jegyében, a script futás előtt ellenőrizhetné a szükséges külső programok meglétét.
Ma le akartam tölteni a számláim és kilép a program, 'ERROR: not able to detect service providers' szöveggel die-ol. Amire jutottam, hogy az ekonto/control/szamla_search oldalt ha böngészőben nyitom meg, akkor benne van a szolgáltatólista és a sopts.add sorok, viszont a script futtatásakor, a debug kimenetben semmi ilyen sincs benne, ezért a hiba. A böngésző agent-et megnézem és bemásoltam a konfigurációba, tehát azonos a böngésző és a script esetén. Esetleg dinamikusan tölthetik be a listát?
A csatolt képen látszik, hogy a kiadott ESC szekvenciák nem értelmezettek, mert a
Line 63 in 1a3cd5e
xargs
után álló echo
parancs nem a bash beépített függvénye, hanem helyette a macOS / BSD alapértelmezett /bin/echo
parancsa hívódik meg, az pedig nem tud mit kezdeni a színekkel.
Kedves fejlesztők!
Az én rendszeremen a git-es kódok egy könyvtárban vannak tárolva, és a helyi bin
könyvtáramban linkekkel mutatok a kellő rendszerességgel futtatott kódokra.
A pillanatnyi master változathoz az alábbi javítást javasolnám, hogy ilyen esetekben megtalálja a helyes könyvtárat:
21c21
< pushd . >/dev/null && cd "$(dirname "$(readlink -f "$1")")" && pwd -P && popd >/dev/null
---
> pushd . >/dev/null && cd "$(dirname "$1")" && pwd -P && popd >/dev/null
Azonban Cygwin-es környezetben azt látom a neten, hogy többeknek problémája van a readlink
-el.
A StackOverflow-ról ezt a megoldást látom alkalmasnak: csak a Windows-os ágat definiálva + a fenti readlink
csak az egyéb (*
) rendszereknél alkalmazva.
Köszönettel:
Gyuri
Felraktam ezt:
sudo apt-get install libxml2-utils
Viszont futtatáskor ez a hibaüzenet jön, és nem tölti le a számlákat. Történt valami változás dijnet oldalán az elmúlt 4 hónapban?
www.dijnet.hu (www.dijnet.hu) feloldása… 91.198.198.5
Csatlakozás a következőhöz: www.dijnet.hu (www.dijnet.hu)[91.198.198.5]:443… kapcsolódva.
HTTP kérés elküldve, várakozás válaszra… 200 OK
Hossz: nincs megadva [text/html]
Mentés ide: „STDOUT”
- [ <=> ] 14,56K --.-KB/s in 0s
2019-04-06 13:19:17 (56,3 MB/s) -- szabványos kimenetre mentve [14908]
OK
query service providers... --2019-04-06 13:19:17-- https://www.dijnet.hu/ekonto/control/szamla_search
www.dijnet.hu (www.dijnet.hu) feloldása… 91.198.198.5
Csatlakozás a következőhöz: www.dijnet.hu (www.dijnet.hu)[91.198.198.5]:443… kapcsolódva.
HTTP kérés elküldve, várakozás válaszra… 200 OK
Hossz: nincs megadva [text/html]
Mentés ide: „STDOUT”
- [ <=> ] 20,55K --.-KB/s in 0,001s
2019-04-06 13:19:18 (20,4 MB/s) -- szabványos kimenetre mentve [21043]
ERROR: not able to detect service providers
Befejeződött
helló, nálam a kurrens verzió ezt mondja:
login... OK
query service providers... ERROR: not able to detect service providers
Terminated
1 év után Synology DSM 6.2.2-re telepítettem ezeket a szükséges libraryket:
sudo ipkg install libxml2 libxslt
Login működik, de rögtön erre a hibára fut:
login... OK
query service providers... dijnet-dump.sh: line 74: syntax error near unexpected token `<'
dijnet-dump.sh: line 74: `readarray -t PROVIDERS < <(dijnet "control/szamla_search" | perl -lne '/sopts.add\(.(.+?).\)/ and print $1')'
Hiányzik esetleg még valami az libxml2 libxslt
-n kívül? Az 1 évvel ezelőtti fájlal ugyanez a hiba, de azt raspbianon futtattam, azóta az nyugdíjba vonult.
Currently, brew install "reinstall" already installed dependencies:
Step 16/21 : RUN printf '%s\n' '#!/bin/bash' 'PRODUCT_VERSION=$(awk -F"[<>]" "/ProductVersion/ { getline; print \$3 }" \' ' /usr/local/libexec/darling/System/Library/CoreServices/SystemVersion.plist)' '[[ "${PRODUCT_VERSION}" == "10.14" ]] && PRODUCT_NAME="mojave"' '[[ "${PRODUCT_VERSION}" == "10.15" ]] && PRODUCT_NAME="catalina"' '[[ "${PRODUCT_VERSION}" == "11.0" ]] && PRODUCT_NAME="big_sur"' '[[ -z "${PRODUCT_NAME}" ]] && echo "unknown macOS version" && exit 1' 'while (($#)); do' ' FORMULA=$(wget -qO- "https://formulae.brew.sh/api/formula/$1.json")' ' jq -r ".bottle.stable.files.${PRODUCT_NAME}.url" <<<"${FORMULA}" \' ' | xargs wget --show-progress --progress=bar:force -qO "$1.tar.gz"' ' tar --strip-components=2 -xf "$1.tar.gz" && rm "$1.tar.gz"' ' set -- "$@" $(jq -r ".dependencies | @tsv" <<<"${FORMULA}")' ' shift' 'done' > /usr/local/bin/brew_install && chmod a+x /usr/local/bin/brew_install && brew_install bash libxml2 wget
---> Running in bd3fba03aa63
bash.tar.gz 100%[===================>] 2.98M --.-KB/s in 0.06s
libxml2.tar.gz 100%[===================>] 2.43M --.-KB/s in 0.05s
wget.tar.gz 100%[===================>] 1.43M --.-KB/s in 0.09s
[email protected] 100%[===================>] 16.62M 51.1MB/s in 0.3s
readline.tar.gz 100%[===================>] 535.63K --.-KB/s in 0.01s
libidn2.tar.gz 100%[===================>] 233.29K --.-KB/s in 0.008s
[email protected] 100%[===================>] 5.39M --.-KB/s in 0.1s
gdbm.tar.gz 100%[===================>] 203.29K --.-KB/s in 0.007s
[email protected] 100%[===================>] 5.39M --.-KB/s in 0.1s
readline.tar.gz 100%[===================>] 535.63K --.-KB/s in 0.01s
sqlite.tar.gz 100%[===================>] 1.96M --.-KB/s in 0.05s
tcl-tk.tar.gz 100%[===================>] 8.50M 51.4MB/s in 0.2s
xz.tar.gz 100%[===================>] 386.79K --.-KB/s in 0.01s
gettext.tar.gz 100%[===================>] 8.55M 47.9MB/s in 0.2s
libunistring.tar.gz 100%[===================>] 1.39M --.-KB/s in 0.04s
readline.tar.gz 100%[===================>] 535.63K --.-KB/s in 0.01s
[email protected] 100%[===================>] 5.39M --.-KB/s in 0.1s
Removing intermediate container bd3fba03aa63
ha a file es konyvtar nevek elso resze a timestamp lenne valami fix es szabvanyos formatumban (pl 2020-06-08, iso-8601), akkor szepen sorban jonnenek a szamlak idorendben.
nem fontos, csak gondoltam bedobom az otletet.
"DFaktorhaz Zrt.", total: 7, current: 1ERROR: exit code not zero of command: INVOICE_COUNT=$(echo "${INVOICES}" | wc -w)
Terminated
Újabban a következő hibát produkálja a dijnet-dump
:
Monarakh:dijnet-dump segabor$ ./dijnet-dump.sh ****
readlink: illegal option -- f
usage: readlink [-n] [file ...]
password:
Úgy tűnik, a readlink -f
macOS-en (talán más BSD variánsokon is) nem értelmezhető. Egy másik projektnél nyitott hibajegyet követve kiderült, hogy stat -f
-fel működésre lehet bírni a szkriptet
Több gépen is kipróbáltam és mindenütt Login failed hibaüzenetet kapok.
Természetesen ellenőriztem és jó usernév-jelszót adtam meg.
Lehet, hogy egyedi az eset, de én több fiókot kezelek, ezért jó lenne, ha username szinten is készülne egy folder.
Egy sor módosítás, meg is csináltam, ha esetleg másnak is hasznos lehet, mehet a pull request (https://github.com/hobpet/dijnet-dump/pull/new/master), ha csak nekem hasznos, zárjátok le az issue-t.
Kiprobaltam az ujrairt kodot es ebben a pillanatban mukodik a letoltes, csak arra az aprosagra szeretnem felhivni a figyelmet, hogy idokozben a dijnet is megerkezett a 21. szazadba, es mar UTF-8 hibauzenetet kuld hibas bejelentkezeskor, es valoszinuleg maskor is. Igy az iconv kulon meghivasa mar nem szukseges, mert azzal egyutt ez lesz a hibauzenetbol:
ERROR: login failed (Sikertelen bejelentkezĂŠs. Ellenorizze adatait ĂŠs prĂłbĂĄlja Ăşjra!)
Sziasztok!
Újabban ezt a hibát mondja amikor próbálom letölteni a számlákat.
Semmi nem változott a beállításokon, ugyanazzal a loginnal böngészőből működik.
UserAgent stringet próbáltam módosítani de nem segít.
login...
ERROR: login failed ()
Most frissen lefutatva az eredmény az, hogy az upc nél talál 29 számlát ennek megcsinálja az UPC könyvtárat és létrehoz benne 29 üres könyvtárat szépen elnevezve. A telekom_mobilnál szintén. De csak üres könyvtárak vannak.
Elhasal mar a belepesnel, a wget a nagy semmivel ter vissza. HAPROXY_SESSION es JSESSIONID cookie azert van. Mersekelten ertem csak, hogy hogy mukodnek az ilyen login formok, igy segitseget kernek a debugolashoz.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.