Hämta info från en hemsida med applescript

Tråden skapades och har fått 4 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Varberg
  • 2009-11-30 22:21

Jag har precis satt ihop min första applescript-app!
Det är ett litet hjälpmedel när man handlar på ebay, och räknar ut vad moms och tull hamnar på innan varan är i sverige!
Här är koden:

set Dollar to 7
set Pris to text returned of (display dialog "Pris i USD" default answer "0" with title "Ebay Calculator")
set Frakt to text returned of (display dialog "Frakt i USD" default answer "0" with title "Ebay Calculator")
set TullLista to {"Bildelar", "Elektronik"}
set TullVal to (choose from list TullLista with title "Ebay Calculator" default items "Bildelar")
if TullVal contains "Bildelar" then set Tull to 1.045
if TullVal contains "Elektronik" then set Tull to 1.12
display dialog "1 USD = " & Dollar & "kr

Pris: $" & Pris & "
Frakt: $" & Frakt & "
Total: $" & Pris + Frakt & "

Pris i sverige:
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Pris utan tull och moms: " & Pris + Frakt * Dollar & "kr
Pris med tull och moms: " & Pris + Frakt * Dollar * Tull * 1.25 & "kr" with title "Ebay Calculator"

Nu skulle jag vilja hämta variabeln Dollar från www.dollarn.nu
Någon som har något tips på hur man löser detta?

Förutom kommandot som läser av html-koden för en öppen webbsida i Safari, så beskrivs tekniken, att leta efter viss text på sidan, bland annat i denna tråd:

http://www.99.se/filemaker/267799-importera-vcard-till-filemaker.html

Där handlar det visserligen om Filemaker, men hur man löser problemet, finns i den tråden.

Så här heter det:

tell application "Safari"
set theSource to source of document 1

end tell

Det petar in hela html-koden i variabeln theSource.

  • Medlem
  • Varberg
  • 2009-12-01 22:28

Det funkar ju perfekt....
Jag satte bara till
set URL of document 1 to "http://www.dollarn.nu" och en liten delay
Men jag skulle ju vilja öppna safari i ett nytt dolt fönster och sedan stänga detta fönster när man har hämtat sourcen.... hur löser man detta?

  • Medlem
  • 2009-12-01 23:41

Grymt! Jag har funderat lite i samma banor fast i ett annat sammanhang.

-- © Per Ljunghall 2009
-- Baron@99.se

set myBackupUrls to {"mms://wm-live.sr.se/SR-P1-High", "mms://wm-live.sr.se/SR-P2-High", "mms://wm-live.sr.se/SR-P2-Low", "mms://wm-live.sr.se/SR-P2musik-High", "mms://wm-live.sr.se/SR-P3-High", "mms://wm-live.sr.se/SR-Radiosporten-High", "mms://wm-live.sr.se/SR-SRKlassiskt-High", "mms://wm-live.sr.se/SR-SRAtlas-High", "mms://wm-live.sr.se/SR-SRVarlden-High", "mms://wm-live.sr.se/SR-DinGata-High", "mms://wm-live.sr.se/SR-P3Rockster-High", "mms://wm-live.sr.se/SR-P3Star-High", "mms://wm-live.sr.se/SR-P3Street-High", "mms://wm-live.sr.se/SR-P3Svea-High", "mms://wm-live.sr.se/SR-Metropol-High", "mms://wm-live.sr.se/SR-SRMinnen-High"}

property myList : {}
property myLinks : {}
set myLinksHigh to {}
set myLinksLow to {}
tell application "Safari"
	make document
	set URL of document 1 to "http://www.sr.se/sida/artikel.aspx?ProgramId=..."
	repeat 60 times
		delay 1
		try
			set mySource to source of document 1
			set myList to {}
			set myLinks to {}
			repeat with I from 1 to count paragraphs of mySource
				if paragraph I of mySource contains "<a href=\"mms://wm-live.sr.se" then
					set end of myList to paragraph I of mySource
				end if
			end repeat
			repeat with L from 1 to count myList
				if ((characters 1 thru 8 of item L of myList) as string) is "<a href=" then
					set myItem to ((characters 10 thru -1 of item L of myList) as string)
					repeat with R from 1 to count characters of myItem
						if character R of myItem is "\"" then
							set myItem to ((characters 1 thru (R - 1) of myItem) as string)
							exit repeat
						end if
					end repeat
					if myItem contains "-High" then
						set end of myLinksHigh to myItem
					else if myItem contains "-Low" then
						set end of myLinksLow to myItem
					end if
				end if
			end repeat
			set myLinks to {"Bredband:"} & myLinksHigh & {"", "Modem:"} & myLinksLow
			exit repeat
		on error
			set myLinks to myBackupUrls
		end try
	end repeat
	close document 1
end tell

if myLinks is {} then
	set myUrls to myBackupUrls
else
	set myUrls to myLinks
end if

set myChoice to choose from list myUrls with prompt "Välj ljudström:"
if myChoice is false then
	return
else if item 1 of myChoice is in {"", "Bredband:", "Modem:"} then
	display alert "Ogiltigt val. Försök igen, men klicka på en länk nästa gång."
else
	try
		tell application "QuickTime Player"
			try
				close windows
			end try
			open URL (item 1 of myChoice)
		end tell
	on error
		display dialog "Quicktime kunde inte ta emot länken ”" & myChoice & "” på grund av ett okänt fel."
	end try
end if

Skriptet kollar en webbsida på sveriges radio och skrapar upp länkar som sedan petas in i en dialog varifrån man pekar ut vilken ström man vill lyssna på i Quicktime Player. Tidigare hårdkodade jag in länkarna, men det behövs ju inte nu! (Jag hårdkodar in backuplänkar för det fall Safari inte kan ta ut något från SR-sidan.)

1
Bevaka tråden