topbanner_forum
  *

avatar image

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
  • Saturday December 14, 2024, 4:17 pm
  • Proudly celebrating 15+ years online.
  • Donate now to become a lifetime supporting member of the site and get a non-expiring license key for all of our programs.
  • donate

Author Topic: FARR mini weather report from wttr.in  (Read 6390 times)

Nod5

  • Supporting Member
  • Joined in 2006
  • **
  • Posts: 1,169
    • View Profile
    • Donate to Member
FARR mini weather report from wttr.in
« on: November 19, 2020, 11:55 AM »
Wttr is a fun and fast URL based command line weather report tool.
Background and syntax here https://github.com/chubin/wttr.in

This post describes how to show wttr weather as text directly in the FARR searchbox.

wttr.gif

Step 1. create a FARR alias
name: weather
regex: ^(weath|weat|wea)$
result: weather | appcap "C:\folder\FARR_weather_helper.exe"

Step 2. prepare helper AutoHotkey script
- Save code to C:\folder\FARR_weather_helper.ahk
- Modify the wttr URL in the code: which location? what data to show? language? extra text?
- Compile the script to an .exe file (necessary since FARR's appcap doesn't work if we run .ahk scripts uncompiled, it seems)
Code: Autohotkey [Select]
  1.  
  2. ; FARR_weather_helper.ahk
  3. ; 2020-11-19 by Nod5
  4. ; helper script to show weather from wttr.in in FARR searchbox
  5. ; wttr details and syntax at https://github.com/chubin/wttr.in
  6.  
  7. ; prepare wttr URL (must escape each % character with `)
  8. vUrl := "https://wttr.in/london?format=`%c+`%t+`%C"
  9. ; example output: ☀️ +9°C Sunny
  10.  
  11. ; download weather page to variable
  12. vString := urlDownloadToVar(vUrl)
  13.  
  14. ; replace FARR searchbox string with weather string via clipboard paste
  15. ; clipboard pastes all at once so won't trigger other aliases
  16. vBackup := ClipboardAll
  17. Clipboard := vString
  18. Send ^a^v
  19. sleep 500
  20. Clipboard := vBackup
  21. vBackup := ""
  22.  
  23.  
  24. ; function: dowload URL and return it as variable
  25. UrlDownloadToVar(url, raw :=0)
  26. {
  27.   ; prefix https:// if not found
  28.   if( !regExMatch(url,"i)https?://") )
  29.     url := "https://" url
  30.   try
  31.   {
  32.     hObject:=ComObjCreate("WinHttp.WinHttpRequest.5.1")
  33.     hObject.Open("GET",url)
  34.     hObject.Send()
  35.     return raw ? hObject.ResponseBody : hObject.ResponseText
  36.   }catch err{
  37.       MsgBox % err.message
  38.   }
  39.   return 0
  40. }

Alternatives
Here are some alternative ways to use wttr in FARR
  • Load the wttr URL as embedded webpage in FARR
  • Run a script to get the URL weather text and show as a FARR results line via appcapresults
  • Run a script to get the URL weather text and show it in FARR searchbox via FARR's command line parameter -search
But in all these three cases FARR does not show the unicode weather emoji correctly.
However wttr also has options for richer output formats such as multiline or even mapped weather reports as .png images, and that could probably look quite nice in FARR's HTML view.
« Last Edit: November 20, 2020, 08:30 AM by Nod5 »

skajfes

  • Honorary Member
  • Joined in 2008
  • **
  • Posts: 267
    • View Profile
    • Donate to Member
Re: FARR mini weather report from wttr.in
« Reply #1 on: November 24, 2020, 05:45 AM »
Cool idea, but wouldn't it be easier to have the weather be shown in the results?
something like an alias with htmlviewurl https://wttr.in/london?format=%c+%t+%C in the results?
It is impossible to make anything foolproof because fools are so ingenious.

Nod5

  • Supporting Member
  • Joined in 2006
  • **
  • Posts: 1,169
    • View Profile
    • Donate to Member
Re: FARR mini weather report from wttr.in
« Reply #2 on: November 24, 2020, 05:53 PM »
Cool idea, but wouldn't it be easier to have the weather be shown in the results?
something like an alias with htmlviewurl https://wttr.in/london?format=%c+%t+%C in the results?
Then the emoji did not show correctly when I tested it - see note at the end of my post. But works for only text/numbers.