- Linus Söderlind
- Medlem ●
- Stockholm
Hur ser /tmp/tv.html ut om du öppnar den i lynx? Eller om du som jag gör i skriptet låter lynx tolka till stdout.
/usr/local/bin/lynx /tmp/tv.html eller /usr/local/bin/lynx -dump /tmp/tv.html
[edit] Eller så kan det vara som garda säger. tack!
Hur ser /tmp/tv.html ut om du öppnar den i lynx? Eller om du som jag gör i skriptet låter lynx tolka till stdout.
ser ut såhär:
SVT1 00.20 Seriestart: Med mördarens ögon 00.20-01.15 TV3 00.55 LA Dragnet (precis börjat) 00.55-01.55 TV4 00.15 En bädd av rosor 00.15-01.45 TV4+ 00.45 Batman 00.45-01.10 KANAL5 00.33 Jay Leno Show 00.33-01.30 ZTV 00.15 The Shield 00.15-01.10
Ser inte så trevligt ut... Ser det likadant ut om du öppnar filen i en 'vanlig' browser?
Och vilken version av lynx använder du? Jag tänkte på att om du uppdaterat bash så har du nog dragit ner lynx också.. Jag får det att fungera med 2.8.5dev (den som jag länkar till på hemsidan).
Bra att det löste sig!
Efter att ha sovit på problemet med: bad interpreter: No such file or directory så har jag kommit fram till att det inte har med bash eller sh att göra. Jag har en första generationens iBook, ett ljusblått dasslock, den har bland annat bara 800x600 skärm så jag använde min PC för att göra hemsidan. Jag skrev dock skripten på Macen för att kunna testköra och så. Men jag gjorde mindre ändringar i skripten på PC:n. Det skulle jag inte gjort, inte med den editorn som jag använda iaf.
Som de flesta känner till är det skillnad på radsluten i en textfil skriven i Unix och en i Windows. Det som hände var att när jag gjorde ändringar i Windows så ändrades alla radbrytningar till windowsformat vilket varken Mac OS X eller Linux gillade. Nu är felet rättat och det programmet finns inte kvar på hårddisken.
Läxan som jag lärde mig är att alltid använda en textredigerare som klarar att hantera Unixformat på textfiler och se till att använd den funktionen.
Jag låter #!/bin/sh stå kvar om någon mot förmodan inte skulle ha bash installerat.
Ops
Som jag skrivit på hemsidan så sätt refresh ganska högt. Jag har satt den till att uppdatera var 5:e minut (300 s).
Jag uppdaterar hemsidan med en varning. Tack för infon!
oerhört nice, jag har fått det att fungera!
Nu undrar jag om det finns någon möjlighet att kolla andra mailboxar dit mina mail sorterrass vid nedladdning? Eller om jag har scripteditorn öppen hur tar jag reda på vilka variabler jag har att tillgå så jag kan pilla lite med det själv? Referensbibiliotek av något slag..
Vad har du satt refresh till i GeekTools inställningar? Det du anger är sekunder.
Det är liten vits att sätta det mycket högre än vad Mail själv kollar mailen.
Gjorde en ny version av mitt script. Det optimerar inte koden på något sätt utan handlar enbart om att få snyggare formatering på det som det som scriptet skriver ut, samt att den nu sorterar dem i omvänd ordning.
global finalOutput set finalOutput to "" on padString(theString, theLength) set theCount to count of theString if (theCount is greater than (theLength)) then set theString to ((characters 1 thru (theLength - 3) of theString) as string) & "..." end if set theCount to count of theString set thePadding to theLength - theCount if (thePadding is greater than 0) then set thePaddingString to "" repeat thePadding times set thePaddingString to thePaddingString & " " end repeat set returnValue to theString & thePaddingString else set returnValue to theString end if return returnValue end padString tell application "Mail" set everymail to every message of inbox set today to current date repeat with eachmail in everymail if read status of eachmail is false then set fromSender to extract name from sender of eachmail set fromPadSender to my padString(fromSender, 15) set fromSubject to subject of eachmail set fromPadSubject to my padString(fromSubject, 30) set fromDate to date sent of eachmail set fromWeekDay to weekday of fromDate as string if (date string of today is equal to date string of fromDate) then set fromWeekDay to "Today" if (date string of (today - 1 * days) is equal to date string of fromDate) then set fromWeekDay to "Yesterday" set fromPadWeekDay to my padString(fromWeekDay, 9) set fromDay to day of fromDate as integer if (fromDay is less than 10) then set fromDay to "0" & fromDay set fromMonth to month of fromDate as integer if (fromMonth is less than 10) then set fromMonth to "0" & fromMonth set fromYear to year of fromDate as integer set fromDateString to fromPadWeekDay & " " & fromYear & "/" & fromMonth & "/" & fromDay as string set finalOutput to fromPadSender & "|" & fromPadSubject & "|" & fromDateString & " " & finalOutput end if end repeat end tell return finalOutput
Notera att scriptet ska anropas med följande för att få åäö att funka:
osascript sökvägtillscriptet/namnpåscript.scpt|iconv -f utf-8 -t ucs-2-internal
Som svar på frågan om man kan kolla andra mailboxar så är svaret ja. Det är raden:
set everymail to every message of inbox
som styr vilken mailbox som scriptet kollar i, skriv 'junk' istället för inbox och ni fattar vad som händer. (Har inte provat om det ska vara citattecken runt namnet eller inte, men det märker ni). Det borde inte heller vara några problem att göra en lista med olika mailboxar och loopa igenom dessa, men eftersom jag inte har något behov av det själv så orkar jag inte fixa det just nu, kanske återkommer med en version till av scriptet.
GeekTool rules! Har precis betällt en ny PowerBook 15" och nu har jag ju stenkoll på var den befinner sig:
#!/bin/sh url="" lynx="/usr/local/bin/lynx" tempfile="/tmp/pb.html" if [ ! -e $lynx ]; then echo "Lynx is not installed!" exit 1 fi if [ -z $url ]; then echo "Please set the url variable in this script to the Shipment Status URL" exit 2 fi curl -s -A "Mozilla/4.0" $url | sed -e "s/<img\([^>]*\)>//g" > $tempfile $lynx -dump $tempfile
Det är bara att beställa en PB på Apple Store och testa.
För att de som inte är vana att pilla med Script Editorn ska slippa det så lägger jag upp en zip med mina två script. (Det som visar antal olästa mail samt det som visar avsändare,ämne och datum snyggt formaterat)
Ett tips är att om man använder båda scripten så stoppa Geektool efter att man har gjort alla inställningar som man vill och sen starta Geektool igen. Då får man dem synkade så att de uppdateras samtidigt. Det är lite irriterande att de uppdaterar sig vid olika tidpunker.
Syrran blev riktigt avundsjuk när hon såg mitt skrivbord med tv-kanalerna på...! Hon har ofrivilligt blivit PC ägare, så hon undrade om det finns något liknade till windows. Någon som vet?
Fanns något som hette active desktop där man kunde lägga in ett fönster i skrivbordet där man kunde visa en del av skrivbordet. högerklicka på skrivbordet så kanske det dyker upp eller så skall man in och starta det någonstans.. Jag tror iförsig inte det finns på XP, men värt att kolla.
global finalOutput
set finalOutput to ""
tell application "Mail"
set everymail to every message of inbox
repeat with eachmail in everymail
if read status of eachmail is false then
set fromSender to extract name from sender of eachmail
set fromSubject to subject of eachmail
set finalOutput to finalOutput & fromSender & " | " & fromSubject & "
"
end if
end repeat
end tell
return finalOutput
Helrätt.
Men om man vill köra entourage istället för Mail ?
Hur ser det ut då ?
/ d
Det ska gå att göra för entourage också... Jag kollade lite på det, men tyvärr så verkar det inte finnas något sätt att översätta det direkt och eftersom jag själv inte använder entourage så är det tveksamt om jag orkar göra det... Men man vet ju aldrig om jag får en massa tid över eller så.
(Jag har en lösning för Mail.app om man vill kolla efter mail i andra mailboxar än Inbox, men den är långsam, om man är intresserad så hör av er.)
/Måns
Angående tv.sh: Jag har ställt in så den visar kommande program, om jag dock vill att pågående program ska vara i fet stil, hur gör jag i scriptet då?
Det går tyvärr inte. GeekTool stöder inte det.
Det enda man skulle kunna göra är att dela upp scriptet i två script och sätta fet stil på den ena i teckensnitts inställningarna i GeekTool.
Jag har knåpat ihop en hemsida till några små skript som jag använder till GeekTool.
De är:
tv.sh
Ett skript som hämtar tv tider från tvprogram.nu. Det använder sig av en cookie och klarar många fler kanaler än tv.py. Kan vara lite svår att få att fungera men jag tror att informationen i filen skall räcka. Fråga annars.
radio.sh
Ett skript som hämtar info om vilken låt som spelas på sr's webradio just nu, snart och nyss. fungerar med: P3 Svea, P3 Street, P3 Rockster, P3 Star, SR Klassiskt, SR Sverige och SR X.
rss.sh
Läser en rss fil och visar <title>-taggarna
iTunes.nowplaying.scpt
Ett Applescript som visar vad iTunes spelar just nu...
Läs mer på hemsidan.
Har ni frågor/kommentarer eller tips på fler små skript till GeekTool? Posta på!
Klaga inte på hemsidans utseende bara, är inte så hemma på hemsidesnickrande...
rss scriptet funkar alldeles utmärkt!
Dock går inte iTunes scriptet att ladda ner. Kommer vidare till en sida med massa script text fast med en massa frågetecken ????
Kanske ska vara så?
rss scriptet funkar alldeles utmärkt!
Dock går inte iTunes scriptet att ladda ner. Kommer vidare till en sida med massa script text fast med en massa frågetecken ????
Kanske ska vara så?
Höger/ctlr-klicka och välj spara som så skall det fungera.
Ursäkta att jag inte svarat tidigare men jag missade mailet som talade om att du skrivit i den här tråden.
Höger/ctlr-klicka och välj spara som så skall det fungera.
Ursäkta att jag inte svarat tidigare men jag missade mailet som talade om att du skrivit i den här tråden.
Det är ingen fara.
Tackar!
Behöver lite hjälp igen... Nu har tvprogram.nu börjat ha en liten röstning på programmen, så det står rösta upp rösta ner efter vissa program. Kan någon kunnig ta bort detta? Tack!
$lynx -dump -width=110 $tempfile | sed -e '/[0-9][0-9].[0-9][0-9]-[0-9][0-9].[0-9][0-9]/d' -e 's/^ //g' -e '/^$/d' -e '/^[A-Z]/i\
Lägg till följande till raden som hämtar html-filen:
-e 's/alt=/alt="" /g'
så att det ser ut nått sånt här:
curl -s -A "Mozilla/4.0" -b "tvpkaka3=$cookie" -m 30 $url | fgrep -A 1 tvprogram\ nu\ klockan | sed -e '/tvprogram nu klockan/d' -e 's/href=/ /g' -e 's/alt=/alt="" /g' > $tempfile
Lägg till följande till raden som hämtar html-filen:
-e 's/alt=/alt="" /g'
så att det ser ut nått sånt här:
curl -s -A "Mozilla/4.0" -b "tvpkaka3=$cookie" -m 30 $url | fgrep -A 1 tvprogram\ nu\ klockan | sed -e '/tvprogram nu klockan/d' -e 's/href=/ /g' -e 's/alt=/alt="" /g' > $tempfile
Kanon, tack! Smart att ta bort alt-texten, så långt tänkte inte jag...
Har ni frågor/kommentarer eller tips på fler små skript till GeekTool? Posta på!
Jag undrar om du skulle kunna fixa ihop ett script som är kompitabelt med GeekTool som visar in/ut nätverkstafiken. Är det möjligt?
Jag undrar om du skulle kunna fixa ihop ett script som är kompitabelt med GeekTool som visar in/ut nätverkstafiken. Är det möjligt?
#!/bin/bash interface="en0" tempfile="/tmp/nettraffic" slask=$(netstat -I $interface -bn | awk '$11 == 0 {print $7" "$10}') down=$(echo $slask | awk '{print $1}') up=$(echo $slask | awk '{print $2}') time=$(date +"%s") down_old=$(cat $tempfile | awk '{print $1}') up_old=$(cat $tempfile | awk '{print $2}') time_old=$(cat $tempfile | awk '{print $3}') echo "$slask $time"> $tempfile let time=time-time_old let down=(down-down_old)/time/128 let up=(up-up_old)/time/128 echo "up: "$up "kb/s down: "$down "kb/s" exit 0
Kanske inte den snyggaste lösningen men jag slängde ihop den lite snabbt. Lägger upp en mer kommenterad version när jag får tid. Ändra bara interface till det nätverksinterface (kort) som du vill få info om. Skriv ifconfig i Terminalen för att se vilka namn som finns.
Efter att ha läst manualsidan för osascript (man osascript) så skall man inte använda -e om du skickar med en fil, -e skall endast användas när du skickar med en rad av applescript.
T ex: osascript -e "say \"iTunes is now playing!\""
Jag vet inte varför jag skrev som jag gjorde tidigare, Apple kanske har stramat upp osascript med någon av uppdateringarna de senaste halvåret?
Så för att få det att funka så skippa -e och skriv bara osascript /Users/Henke/ITunes.nowplaying.scpt. Om det fortfarande inte fungerar öppna Systemmedelanden (Console), ligger i Verktygsprogram (Utillities). console.log borde öppnas automatiskt, om inte tryck command-shift-O. Dit skriver de flesta program sina felmedelanden så även osascript när det körs via GeekTool.
/Linus