Aviseringar
Rensa alla

Conky (Linux) + Um = Sant?


Åtta

KID_IS_BACK:

Ska filer sparas över flera körningar är väl ändå ~/.det-coola-um-scriptet eller liknande ganska givet?

Så tänkte jag också, men jag tänkte att det kanske fanns ett annat, bättre sätt. Hur som helst så lär jag säkert sätta mig att pyssla med det där inatt, om ingen annan tänkt göra det.


   
SvaraCitera
Åtta

Någon får gärna titta och testa så att det här fungerar som det ska. Jag är alldeles för trött för att tänka ordentligt just nu, så jag tror att jag kallar det för en natt nu. Jag har endast testat litegrann, så jag skulle bli djupt förvånad om allting funkar såsom jag hade tänkt.

#!/bin/bash
# Ungdomar.se script
#
# Detta script skriver ut hur många PM, Bloggkommentarer, gästboksinlägg, etc.
# som är olästa.
#-------------------------------------------------

# Write your username and password here. Needs to be urlencoded.
# http://lajm.eu/emil/dump/stringfunctions.php
MY_USERNAME=username
MY_PASSWORD=password
REFRESH_TIME=100 #allowed age for um.htm in seconds
TEMP_DIR=~/.umscript

# No editing beyond this point.
#-------------------------------------------------

#Checks to see if TEMP_DIR exists and is writable.
dirCheck ()
{
if [ ! -d "$TEMP_DIR" ]; then
mkdir $TEMP_DIR
fi
if [ ! -w "$TEMP_DIR" ]; then
echo "$TEMP_DIR is not writable. Run chmod a+w $TEMP_DIR as root."; exit 1;
fi
}

fileDownloader()
{
if [ -e "$TEMP_DIR/um.htm" ]; then #check if um.htm exists
#if um.htm's timestamp is less than current timestamp - $REFRESH_TIME
if [ "$(date -r $TEMP_DIR +%s)" -lt "$(($(date +%s) - $REFRESH_TIME))" ]; then
rm um.htm
wget --quiet --save-cookies kakburk --keep-session-cookies --post-data $LOGIN_DATA --user-agent 'Firefox' -O um.htm http://ungdomar.se/index.php
fi
else
wget --quiet --save-cookies kakburk --keep-session-cookies --post-data $LOGIN_DATA --user-agent 'Firefox' -O um.htm http://ungdomar.se/index.php
fi
}

# Extracts the number of unread posts/comments, appends empty strings and
# prints the result
getNumber ()
{
case "$1" in
pm)
# Extract the number of PM:s
PM_NUMBER=`cat um.htm | LANG=sv_SE.iso88591 sed -n 's/.*ol.st.*pm.*count..\([0-9]*\).*/\1/p'`
echo "${PM_NUMBER:=0}"
;;
blog)
# Extract the number of blog comments
BLOGG_NUMBER=`cat um.htm | LANG=sv_SE.iso88591 sed -n 's/.*bloggkommentar.*count..\([0-9]*\).*/\1/p'`
echo "${BLOGG_NUMBER:=0}"
;;
quotes)
# Extracts the number of forum comments
FORUM_NUMBER=`cat um.htm | LANG=sv_SE.iso88591 sed -n 's/.*forumkommentar.*count..\([0-9]*\).*/\1/p'`
echo "${FORUM_NUMBER:=0}"
;;
comments)
# Extract the number of image comments
IMAGE_NUMBER=`cat um.htm | LANG=sv_SE.iso88591 sed -n 's/.*albumkommentar.*count..\([0-9]*\).*/\1/p'`
echo "${IMAGE_NUMBER:=0}"
;;
guestbook)
#Extract the number of guestbook posts
GUESTBOOK_NUMBER=`cat um.htm | LANG=sv_SE.iso88591 sed -n 's/.*g.stbok.*count..\([0-9]*\).*/\1/p'`
echo "${GUESTBOOK_NUMBER:=0}"
;;
subscribed)
# Extract the number of unread subscribed threads
SUBSCRIBED_NUMBER=`cat um.htm | LANG=sv_SE.iso88591 sed -n 's/.*bevakade.*count..\([0-9]*\).*/\1/p'`
echo "${SUBSCRIBED_NUMBER:=0}"
;;
*)
echo $"Usage: $0 {pm|blog|quotes|comments|guestbook|subscribed}"
exit 1
esac
}

#-------------------------------------------------

LOGIN_DATA="action=login&login_nick=$MY_USERNAME&login_pwd=$MY_PASSWORD"

dirCheck

# Changes working directory to TEMP_DIR
cd $TEMP_DIR

# Downloads the first page you get when you log in
fileDownloader

# Extract the number of unread posts/comments
getNumber $1

   
SvaraCitera
Gifted
Ämnesstartare
#if um.htm's timestamp is less than current timestamp - $REFRESH_TIME
if [ "$(date -r $TEMP_DIR +%s)" -lt "$(($(date +%s) - $REFRESH_TIME))" ]; then
rm um.htm
wget --quiet --save-cookies kakburk --keep-session-cookies --post-data $LOGIN_DATA --user-agent 'Firefox' -O um.htm http://ungdomar.se/index.php

är lite skumt. När väljer du att använda redan existerande fil? Hmm, vid närmare eftertanke tror jag att jag hänger med, men det ser "fult" ut att ha två identiska wget-rader.


   
SvaraCitera
Åtta

Gifted:

är lite skumt. När väljer du att använda redan existerande fil?

Först hade jag bara tänkt kolla huruvida den existerande um.htm var för gammal eller ej, men sen kom jag på att det inte skulle funka om um.htm inte fanns ö.h.t. Därför är jag tvungen att först kolla om um.htm finns. Om den gör det så kollas timestamp för att se om den är för gammal. Om den är för gammal så tas den bort och laddas sedan ned igen (visste inte om wget helt enkelt skrev över den gamla filen. Gör den det så kan vi ta bort rm um.htm.) Om den inte är för gammal så händer ingenting, utan skriptet går istället vidare till att använda sig av getNumber och läsa den um.htm som finns. Slutligen, om um.htm inte finns ö.h.t. så skippar vi timestamp-kollen och går istället direkt till att ladda ned filen.

fileDownloader()
{
if [ -e "$TEMP_DIR/um.htm" ]; then #check if um.htm exists
#if um.htm's timestamp is less than current timestamp - $REFRESH_TIME
if [ "$(date -r $TEMP_DIR +%s)" -lt "$(($(date +%s) - $REFRESH_TIME))" ]; then
rm um.htm
wget --quiet --save-cookies kakburk --keep-session-cookies --post-data $LOGIN_DATA --user-agent 'Firefox' -O um.htm http://ungdomar.se/index.php
fi
else
wget --quiet --save-cookies kakburk --keep-session-cookies --post-data $LOGIN_DATA --user-agent 'Firefox' -O um.htm http://ungdomar.se/index.php
fi
}

   
SvaraCitera
Gifted
Ämnesstartare

Åtta:

fileDownloader()

Ah, jo, förstod det. Tänkte att det kanske går att göra ngn refactoring, så att man slipper ha två likadana rader, typ i stil med

IF um.htm INTE existerar ELLER um.htm är för gammal THEN
wget ny fil
ELSE
gör inget

detta är möjligt om ELLER är kortslutande, dvs. om första uttrycket är sant, testa inte ens uttryck nummer 2, utan kör på direkt.

vilket skulle vara lite sexigare.


   
SvaraCitera
Åtta

Gifted:

detta är möjligt om ELLER är kortslutande, dvs. om första uttrycket är sant, testa inte ens uttryck nummer 2, utan kör på direkt.

Jag provade, och det verkar inte vara kortslutande, eller så har jag gjort något fel.

fileDownloader()
{
if [ -e "$TEMP_DIR/um.htm" ] || [ "$(date -r $TEMP_DIR +%s)" -lt "$(($(date +%s) - $REFRESH_TIME))" ]; then
wget --quiet --save-cookies kakburk --keep-session-cookies --post-data $LOGIN_DATA --user-agent 'Firefox' -O um.htm http://ungdomar.se/index.php
fi
}

   
SvaraCitera
Gifted
Ämnesstartare

Åtta:

fileDownloader()

hmm. man kanske kan göra på ett annat sätt...


   
SvaraCitera
Åtta

Gifted:

hmm. man kanske kan göra på ett annat sätt...

Jag tror att det var jag som hade missat ett utropstecken i mitt första test, huruvida um.htm existerar. Det här verkar fungera.

fileDownloader()
{
if [ ! -e "$TEMP_DIR/um.htm" ] || [ "$(date -r $TEMP_DIR +%s)" -lt "$(($(date +%s) - $REFRESH_TIME))" ]; then
wget --quiet --save-cookies kakburk --keep-session-cookies --post-data $LOGIN_DATA --user-agent 'Firefox' -O um.htm http://ungdomar.se/index.php
fi
}

   
SvaraCitera
Gifted
Ämnesstartare

Åtta:

Det här verkar fungera.

Najs!


   
SvaraCitera
Åtta

Uppdaterade skriptet för att ta hand om anmälningar också. Vet dock inte huruvida det fungerar när det är mer än en anmälan inne.

#!/bin/bash
# Ungdomar.se script
#
# Detta script skriver ut hur många PM, Bloggkommentarer, gästboksinlägg, etc.
# som är olästa.
#-------------------------------------------------

# Write your username and password here. Needs to be urlencoded.
# http://lajm.eu/emil/dump/stringfunctions.php
MY_USERNAME=username
MY_PASSWORD=password
REFRESH_TIME=100 #allowed age for um.htm in seconds
TEMP_DIR=~/.umscript

# No editing beyond this point.
#-------------------------------------------------

#Checks to see if TEMP_DIR exists and is writable.
dirCheck ()
{
if [ ! -d "$TEMP_DIR" ]; then
mkdir $TEMP_DIR
fi
if [ ! -w "$TEMP_DIR" ]; then
echo "$TEMP_DIR is not writable. Run chmod a+w $TEMP_DIR as root."; exit 1;
fi
}

fileDownloader()
{
#Check if um.htm exists, and if it does check if
# um.htm's timestamp is less than current timestamp - $REFRESH_TIME
if [ ! -e "$TEMP_DIR/um.htm" ] || [ "$(date -r $TEMP_DIR +%s)" -lt "$(($(date +%s) - $REFRESH_TIME))" ]; then
wget --quiet --save-cookies kakburk --keep-session-cookies --post-data $LOGIN_DATA --user-agent 'Firefox' -O um.htm http://ungdomar.se/index.php
fi
}

# Extracts the number of unread posts/comments, appends empty strings and
# prints the result
getNumber ()
{
case "$1" in
pm)
# Extract the number of PM:s
PM_NUMBER=`cat um.htm | LANG=sv_SE.iso88591 sed -n 's/.*ol.st.*pm.*count..\([0-9]*\).*/\1/p'`
echo "${PM_NUMBER:=0}"
;;
blog)
# Extract the number of blog comments
BLOGG_NUMBER=`cat um.htm | LANG=sv_SE.iso88591 sed -n 's/.*bloggkommentar.*count..\([0-9]*\).*/\1/p'`
echo "${BLOGG_NUMBER:=0}"
;;
quotes)
# Extracts the number of forum comments
FORUM_NUMBER=`cat um.htm | LANG=sv_SE.iso88591 sed -n 's/.*forumkommentar.*count..\([0-9]*\).*/\1/p'`
echo "${FORUM_NUMBER:=0}"
;;
comments)
# Extract the number of image comments
IMAGE_NUMBER=`cat um.htm | LANG=sv_SE.iso88591 sed -n 's/.*albumkommentar.*count..\([0-9]*\).*/\1/p'`
echo "${IMAGE_NUMBER:=0}"
;;
guestbook)
#Extract the number of guestbook posts
GUESTBOOK_NUMBER=`cat um.htm | LANG=sv_SE.iso88591 sed -n 's/.*g.stbok.*count..\([0-9]*\).*/\1/p'`
echo "${GUESTBOOK_NUMBER:=0}"
;;
subscribed)
# Extract the number of unread subscribed threads
SUBSCRIBED_NUMBER=`cat um.htm | LANG=sv_SE.iso88591 sed -n 's/.*bevakade.*count..\([0-9]*\).*/\1/p'`
echo "${SUBSCRIBED_NUMBER:=0}"
;;
reports)
# Extract the number of reported posts
#(only usable for moderators!)
REPORTS_NUMBER=`cat um.htm | LANG=sv_SE.iso88591 sed -n 's/.*anm.lan.*count..\([0-9]*\).*/\1/p'`
echo "${REPORTS_NUMBER:=0}"
;;
*)
echo $"Usage: $0 {pm|blog|quotes|comments|guestbook|subscribed}"
exit 1
esac
}

#-------------------------------------------------

LOGIN_DATA="action=login&login_nick=$MY_USERNAME&login_pwd=$MY_PASSWORD"

dirCheck

# Changes working directory to TEMP_DIR
cd $TEMP_DIR

# Downloads the first page you get when you log in
fileDownloader

# Extract the number of unread posts/comments
getNumber $1

   
SvaraCitera

Tråden låst på grund av inaktivitet


   
SvaraCitera