Igény mutatkozott a friss hozzászólásokat jelző alkalmazásra, így megpróbáltam ezt a témát körbejárni, a „problémára” megoldást találni. A jelenlegi megoldás kicsit gyerekcipőben jár, azaz „mindössze” egy script-ről van szó, amely elvégzi a feladatot. Mindazonáltal értem, van és volt értelme a megoldás keresni, hiszen a Linux Mint Magyar Közösség weboldalra, a belépés nélkül nem mindig látszanak azonnal a legfrissebb hozzászólások. Ennek oka egyrészt az, hogy a friss hozzászólások csak belépett felhasználónál jelennek meg azonnal a „Friss” oldalon, belépés nélkül azonban a megjelenés kicsit késleltetve van. Egyik oka ennek technikai, informatikai. A másik ok egy érthető cél, hogy a regisztrált felhasználók számát növeljük, gyakorlatiasabban megfogalmazva, hogy a felhasználók lépjenek be a fórumra, szóljanak hozzá minél többet (és lehetőleg hasznosat) és ne csak kívülről tekintsék meg a fórumot, a blogokat, tehát lehetőleg maradandó dolgot ... alkossanak.
A script-nek először is célszerű egy munkakönyvtárat létrehozni:
mkdir -p /home/$USER/bin/monitorURL/work/
Először is létrehozod a saját könyvtáradban a bin könyvtárat, majd azon belül a script lakhelyét, a monitorURL könyvtárat, majd ezen belül a különbség fájlokat tároló work könyvtárat. Az mkdir parancs (make directory / könyvtár létrehozás) p kapcsolója biztosítja azt, ha az elérési útban egy-egy könyvtár még nem létezik, akkor az mkdir ezzel nem foglalkozik (nem dob hibaüzenetet), hanem létrehozza a teljes könyvtárfát, azaz a teljes elérési út létrejön, az összes új könyvtárral együtt.
A script létrehozása és megnyitása szerkesztésre:
nano /home/$USER/bin/monitorURL/MonitorChangesOnaWebpage.sh
A korábbi könyvtár elnevezések egyediek, mint például a script neve is: MonitorChangesOnaWebpage.sh
Választhatsz más nevet is.
A script szöveges tartalma:
#!/bin/bash #-------------------------------------------------------------------------------- # Monitors the changes in a webpage # # To run it: # ./monitorwebpage.sh http://www.thewebpage.io mywebpage # where `http://www.thewebpage.io` is the address of the page you want to follow, # and mywebpage a suffix (default: page), needed if you monitor multiple pages at once. # -> The program checks the website every 15 minutes (timing can be changed), # and if there is a change, opens the new webpage. # # # # NOTES: # # This script works with Ubuntu; # On a Mac, replace "xdg-open" by "open" # # Source of some of the code: # http://bhfsteve.blogspot.fr/2013/03/monitoring-web-page-for-changes-using.html # And this script source: https://trucastuces.wordpress.com/2017/04/21/monitor-changes-on-a-webpage/ #-------------------------------------------------------------------------------- # URL to monitor is entered as input URL="$1" # The second argument is optional, it is a suffix for the webpage # if we want to monitor multiple webpages at once # SUFF=${2:-page} # Error message if not argument is supplied if [[ -z "$*" ]] ; then echo "Error: you need to enter a webpage as argument! (don't forget http://)" exit 0 fi echo "Monitoring "${URL} chmod -R 774 /home/$USER/bin/monitorURL/work/ chmod -R 664 /home/$USER/bin/monitorURL/work/* cd /home/$USER/bin/monitorURL/work/ # Initialization: download the webpage once to create old.html # curl ${URL} -L --compressed -s > old${SUFF}.html curl ${URL} -L --compressed -s > old.html for (( ; ; )); do # (Infinite loop) # Change the name of new.html into old.html, # and erase potential error messages (2> /dev/null) # mv new${SUFF}.html old${SUFF}.html 2> /dev/null mv new.html old.html 2> /dev/null # Print time at which the page is checked THEDATE="$(date)" echo "Last checked: ${THEDATE}" # Download the webpage # curl ${URL} -L --compressed -s > new${SUFF}.html curl ${URL} -L --compressed -s > new.html # -L means that we follow potential redirections # --compressed compresses, # -s for quiet mode, # and save the output in new.html. # Compare the two versions # DIFF_OUTPUT="$(diff new${SUFF}.html old${SUFF}.html)" DIFF_OUTPUT="$(diff new.html old.html)" # If there are differences: if [ "${DIFF_OUTPUT}" != "" ]; then # open the webpage URL="$1" xdg-open ${URL} continue fi # Then wait for 15 minutes before checking the website again # Then wait for 20 seconds before checking the website again # sleep 15m sleep 20s done
Mentés és kilépés a nano szövegszerkesztőből:
Ctrl + O, majd Enter és
Ctrl + X
A parancsfájlt (script) futtathatóvá kell tenni, hogy indíthasd:
chmod +x /home/$USER/bin/monitorURL/MonitorChangesOnaWebpage.sh
Nyitsz egy terminált, és belépsz a könyvtárba, ahol a script-tet létrehoztad:
cd /home/$USER/bin/monitorURL/
És így indítod a script-tet:
./MonitorChangesOnaWebpage.sh https://linuxmint.hu/tracker
Az URL-nek benne kell lennie a parancsban. Ha nincs ott, akkor figyelmeztetést kapsz:
"Error: you need to enter a webpage as argument! (don't forget http://)"
Ha új hozzászólás érkezik, akkor arról értesítve leszel. Az történik, hogy a böngésződ a
oldalon nyílik meg, azaz, a Friss hozzászólásoknál.
Ha az oldalra
-- be vagy lépve, akkor azonnal és közvetlenül nyitható meg a hozzászólás,
-- nem vagy belépve, akkor a hozzászólásra reagáláshoz előbb be kell lépned.
A script jelenleg nem alkalmas arra a feladatra, hogy pontosan az új hozzászóláshoz vigyen.
Enjoy :-)
Forrás:
https://trucastuces.wordpress.com/2017/04/21/monitor-changes-on-a-webpage/
http://bhfsteve.blogspot.fr/2013/03/monitoring-web-page-for-changes-using.html
Működés
A figyeléshez a megnyitott terminál szükséges, de a háttérbe is lehet küldeni a munkafolyamatot. Utóbbi témával később esetleg még foglalkozom. ... de például az egyik, forrásként szereplő blogban említett nohup parancs
nohup ./MonitorChangesOnaWebpage.sh https://linuxmint.hu/tracker &
az egyik megoldás lehet.
Folytassuk ...
Mindez kb. így néz ki (ezt látod a terminálban a helyes működés esetén):
./MonitorChangesOnaWebpage.sh https://linuxmint.hu/tracker Monitoring https://linuxmint.hu/tracker Last checked: 2019. márc. 5., kedd, 10:46:57 CET Last checked: 2019. márc. 5., kedd, 10:47:17 CET Last checked: 2019. márc. 5., kedd, 10:47:38 CET Last checked: 2019. márc. 5., kedd, 10:47:58 CET Last checked: 2019. márc. 5., kedd, 10:48:18 CET Last checked: 2019. márc. 5., kedd, 10:48:38 CET Last checked: 2019. márc. 5., kedd, 10:48:58 CET Last checked: 2019. márc. 5., kedd, 10:49:18 CET Last checked: 2019. márc. 5., kedd, 10:49:38 CET Last checked: 2019. márc. 5., kedd, 10:49:58 CET ...
A script a Linux Mint honlap friss hozzászólásainak figyelésére alkalmas, más honlap figyeléséhez (vélhetően) át kell alakítani.
A Cinnamon alkalmazásként elérhető hasonló feladatot ellátó alkalmazás inkább a nemzetközi honlap hozzászólásainak figyelésére alkalmas. Habár, nem kizárt, azzal is meg lehet oldani mindezt.
Magyarázat(ok)
-- ha a kiemelt sor elől eltávolítod a kommentet (#), akkor csak egyszer fut le a script, azaz egy friss hozzászólás jelez és aztán kilép (ahogy ezt az „# if we want” kezdetű magyarázat is mondja)
# The second argument is optional, it is a suffix for the webpage # if we want to monitor multiple webpages at once # SUFF=${2:-page}
... a kapcsolódó beállításokat kommenteltem (#). És alattuk létrehoztam egy új megfelelőséget, a SUFFIX nélkül.
Ezeket a sorokat kommenteltem, azaz magyarázatba tettem:
# curl ${URL} -L --compressed -s > old${SUFF}.html
# mv new${SUFF}.html old${SUFF}.html 2> /dev/null
# curl ${URL} -L --compressed -s > new${SUFF}.html
# DIFF_OUTPUT="$(diff new${SUFF}.html old${SUFF}.html)"
És alattuk létrehoztam egy új megfelelőséget, a korábban kikapcsolt, azaz kommentelt SUFFIX nélkül.
Szerkesztettem a két vizsgálat között eltelt időt (a korábbi 15 percről 20 másodperc időtartamra) és ezt az eredeti megjegyzés alatt új megjegyzésben le is írtam:
# Then wait for 15 minutes before checking the website again # Then wait for 20 seconds before checking the website again # sleep 15m sleep 20s done
Fontos
Ezt a két sort kihagyhatod a parancsfájlból (vagy akár benne is hagyhatod):
chmod -R 774 /home/$USER/bin/monitorURL/work/ chmod -R 664 /home/$USER/bin/monitorURL/work/*
Korábban arra gyanakodtam, hogy hiányzó jogok miatt áll le a script (és erre írtam a fentieket), de nem ez volt a leállás oka, hanem az, hogy az „xdg-open ${URL}” sor után szereplő break kifejezést a continue kifejezésre kellett cserélni. A „break” biztosítja azt, hogy az alapértelmezett böngésződ csak egyszer nyílik meg, és nem végtelen alkalommal.
Hozzászólások
Köszi
Beküldte balacy -
Értékelés:
Már rég kerestem ilyent, a Steve blogjában lévőt használtam egy ideig.
Egy elírás van szerintem:
"Nyitsz egy terminált, és belépsz a munkakönyvtárba:
cd /home/$USER/bin/monitorURL/"
Ez helyesen:
cd /home/$USER/bin/monitorURL/work/
És ez a válaszom jó olt tesznek is. Müködik :)
Köszi
Beküldte kimarite -
Értékelés:
A script valójában a work könyvtárat tartalmazó könyvtár felett van egy könyvtárral, és javítom is majd a leírást. Úgyhogy -tulajdonképpen - én is köszönöm. A.változó két fájl van szándékosan a work könyvtárban csak. Az eredeti script mellé kerülnének amúgy a HTM fájlok. Mármint az ötlet források szerint.
Valami GUI is kéne. Esetleg ötlet? ... utána valami közös Creative Commons licenc a script-re.
Köszi
Beküldte kimarite -
Értékelés:
:-) ami persze, a lényegen nem változtat, hogy így is és amúgy is működik mindez.
Két, három napja említettem a scriptet itt, de egy másik bejegyzésnél. Aztán jegeltem, és ma foglalkoztam ezzel ismét. Őszintén szólva, megkevert egy barátom magyarázata, hogy a "break" miért is kell. Leírtam a blogban, miért. Így csak később próbáltam egész mást, akár kihagyni ezt. Mármint, saját ötletként. Most akkor, a barátomat is megemlítem, inkább név szerint, mert nemrég egyszer a szakmáját említettem, és egyszer ő is megemlítette a keresztnevem valamely hasonló segítős dologgal kapcsolatban (más weboldalon). Tehát Feri segített. Az Open Source lényege -amúgy is- a csoport munka!
nohup
Beküldte kimarite -
Értékelés:
Ha a nohup alkalmazással használod a script-tet, azaz a folyamatot a háttérbe küldöd.
Az indítás módja:
Látod a folyamat PID számát,
és még ezt is.
Megnyomod: Ctrl + C
Ezzel visszakapod a felhasználói prompt-tot.
De akár előtte vagy utána nyugodtan bezárhatod a terminál ablakot, a folyamat futni fog a háttérben.
Bármikor ránézhetsz, fut-e a folyamat, ha nyitsz egy terminált:
Igen.
A prompt-tot szintén ugyanúgy kapod vissza: Ctrl + C
A folyamat tovább fut a háttérben.
Ha leállítanád a folyamatot ...
Megkeresed a folyamat PID-jét:
(PID: Process ID)
... a kiemelt szám az, vagyis az első (a kimenetben)
Kilövöd, azaz leállítod,
... kimenet nincs, visszatér a prompt.
Ez azt jelenti, minden rendben.
A teszt parancs
ezt mondja,
és a számláló is megállt öt perce.
Megint: Ctrl + C
Megállítottuk a folyamatot.