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
doneMenté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:
Valóban jót írsz, de én gépeltem (másoltam) rosszul. :-)
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:
Szóval a script lakhelye ez a könyvtár,
:-) 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.