

{"id":3022,"date":"2014-09-14T20:10:20","date_gmt":"2014-09-15T01:10:20","guid":{"rendered":"http:\/\/rud.is\/b\/?p=3022"},"modified":"2018-03-07T16:44:24","modified_gmt":"2018-03-07T21:44:24","slug":"an-alfred-os-x-workflow-for-weather-underground-personal-weather-station-pws-data","status":"publish","type":"post","link":"https:\/\/rud.is\/b\/2014\/09\/14\/an-alfred-os-x-workflow-for-weather-underground-personal-weather-station-pws-data\/","title":{"rendered":"An Alfred (OS X) Workflow for Weather Underground Personal Weather Station (PWS) Data"},"content":{"rendered":"<p>I&#8217;ve operated a [Weather Underground](http:\/\/www.wunderground.com\/) [Personal Weather Station](http:\/\/www.wunderground.com\/weatherstation\/about.asp) (PWS) [[KMEBERWI7](http:\/\/www.wunderground.com\/personal-weather-station\/dashboard?ID=KMEBERWI7#history)] off-and-on (hardware issues notwithstanding) for as long as I can remember, and I thought it was about time to finally do an Alfred\u2194PWS mashup. My personal requirements were quite modest:<\/p>\n<p>&#8211; 5 reading history (including most current)<br \/>\n&#8211; Ability to copy all the current day&#8217;s readings as CSV<br \/>\n&#8211; Quickly get to my PWS data w\/o a bookmark<\/p>\n<p>[Alfred](http:\/\/www.alfredapp.com\/) makes all this possible via customized workflows that support many scripting environments, including Python. Here&#8217;s a quick preview before going into the details:<\/p>\n<p><center><a href=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2014\/09\/pws-alfred-results.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"3024\" data-permalink=\"https:\/\/rud.is\/b\/2014\/09\/14\/an-alfred-os-x-workflow-for-weather-underground-personal-weather-station-pws-data\/pws-alfred-results\/\" data-orig-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2014\/09\/pws-alfred-results.png?fit=500%2C296&amp;ssl=1\" data-orig-size=\"500,296\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"pws-alfred-results\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2014\/09\/pws-alfred-results.png?fit=300%2C177&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2014\/09\/pws-alfred-results.png?fit=500%2C296&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2014\/09\/pws-alfred-results.png?resize=500%2C296&#038;ssl=1\" alt=\"pws-alfred-results\" width=\"500\" height=\"296\" class=\"aligncenter size-full wp-image-3024\" srcset=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2014\/09\/pws-alfred-results.png?w=500&amp;ssl=1 500w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2014\/09\/pws-alfred-results.png?resize=150%2C88&amp;ssl=1 150w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2014\/09\/pws-alfred-results.png?resize=300%2C177&amp;ssl=1 300w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><\/center><\/p>\n<p>It&#8217;s a fairly simple workflow:<\/p>\n<p>&#8211; Grab today&#8217;s &#8220;raw&#8221; data (and clean it up)<br \/>\n&#8211; Select the last 5 entries<br \/>\n&#8211; Connect a URL action and use the full CSV as clipboard contents for any copy action<\/p>\n<p>The full Python code is below and [on github](https:\/\/github.com\/hrbrmstr\/alfred-pws), and you can hit that github link or [Packal](http:\/\/www.packal.org\/workflow\/pws-history) for the compiled workflow. It&#8217;s been tested on Mavericks, but more eyes are always welcome.<\/p>\n<p>Customizing the workflow for your own\/favorite PWS is as simple as changing the `station` variable. <\/p>\n<p>There&#8217;s plenty of room for improvement, including<\/p>\n<p>&#8211; performing a background download of the PWS data<br \/>\n&#8211; using a sparkline graph as the icon<br \/>\n&#8211; customizing which data fields are returned<br \/>\n&#8211; providing commands to get\/set your\/favorite PWS<br \/>\n&#8211; providing options for the &#8220;copy&#8221; return type (currently CSV, but potentially XML or JSON)<\/p>\n<p>Don&#8217;t hesitate to post issues or pull requests and check back for updates (as I&#8217;m sure some of those improvements will be making their way into the workflow).<\/p>\n<pre lang=\"python\">import re\r\nimport csv\r\nimport sys\r\nimport datetime\r\nfrom lib import requests\r\nfrom workflow import Workflow, web\r\nfrom StringIO import StringIO\r\n\r\n# retrieve today's history for station \"X\"\r\n\r\ndef get_wx_data(station):\r\n\r\n  tdy = datetime.datetime.today()\r\n    \r\n  # construct the URL for \"today\"\r\n  url = 'http:\/\/www.wunderground.com\/weatherstation\/WXDailyHistory.asp?ID=%s&day=%d&month=%d&year=%d&graphspan=day&format=1' % (station, tdy.day, tdy.month, tdy.year)\r\n    \r\n  r = web.get(url) # get the data\r\n     \r\n  r.raise_for_status() # report any errors\r\n    \r\n  return(re.sub(\"\\n\\n\", \"\\n\", re.sub(\"^\\n|<br>\", \"\", r.text))) # clean up the output & pass it back to main control\r\n\r\n\r\n# main workflow control\r\n\r\ndef main(wf):\r\n\r\n  station = \"KMEBERWI7\" # change to use your own\/favorite station\r\n\r\n  resp = get_wx_data(station)\r\n\r\n  # only want last 5 readings, change this to whatever you want\r\n  max = 5\r\n\r\n  i=0\r\n  for row in reversed(list(csv.reader(StringIO(resp)))):\r\n    wf.add_item(title=row[0] + \" | \" + row[1] + \"F | \" + row[3] + \"in | \" + row[8] + \"%\", \r\n                subtitle=station, # so you know where you're getting data from\r\n                arg=station, # passed as query to URL action - http:\/\/www.wunderground.com\/personal-weather-station\/dashboard?ID={query}#history\r\n                valid=True, # it can be opened in the browser\r\n                icon=\"\/System\/Library\/CoreServices\/CoreTypes.bundle\/Contents\/Resources\/ToolbarInfo.icns\", # info icon\r\n                copytext=resp) # get the whole CSV file in a copy\r\n    if (i==max): break\r\n    i += 1\r\n\r\n  # output to alfred\r\n\r\n  wf.send_feedback()\r\n\r\nif __name__ == u\"__main__\":\r\n  wf = Workflow()\r\n  sys.exit(wf.run(main))<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve operated a [Weather Underground](http:\/\/www.wunderground.com\/) [Personal Weather Station](http:\/\/www.wunderground.com\/weatherstation\/about.asp) (PWS) [[KMEBERWI7](http:\/\/www.wunderground.com\/personal-weather-station\/dashboard?ID=KMEBERWI7#history)] off-and-on (hardware issues notwithstanding) for as long as I can remember, and I thought it was about time to finally do an Alfred\u2194PWS mashup. My personal requirements were quite modest: &#8211; 5 reading history (including most current) &#8211; Ability to copy all the current day&#8217;s [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":3,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":""},"categories":[89,663,717,12,680],"tags":[810],"class_list":["post-3022","post","type-post","status-publish","format-standard","hentry","category-alfred","category-apple","category-mavericks","category-os-x","category-weather","tag-post"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>An Alfred (OS X) Workflow for Weather Underground Personal Weather Station (PWS) Data - rud.is<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/rud.is\/b\/2014\/09\/14\/an-alfred-os-x-workflow-for-weather-underground-personal-weather-station-pws-data\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"An Alfred (OS X) Workflow for Weather Underground Personal Weather Station (PWS) Data - rud.is\" \/>\n<meta property=\"og:description\" content=\"I&#8217;ve operated a [Weather Underground](http:\/\/www.wunderground.com\/) [Personal Weather Station](http:\/\/www.wunderground.com\/weatherstation\/about.asp) (PWS) [[KMEBERWI7](http:\/\/www.wunderground.com\/personal-weather-station\/dashboard?ID=KMEBERWI7#history)] off-and-on (hardware issues notwithstanding) for as long as I can remember, and I thought it was about time to finally do an Alfred\u2194PWS mashup. My personal requirements were quite modest: &#8211; 5 reading history (including most current) &#8211; Ability to copy all the current day&#8217;s [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/rud.is\/b\/2014\/09\/14\/an-alfred-os-x-workflow-for-weather-underground-personal-weather-station-pws-data\/\" \/>\n<meta property=\"og:site_name\" content=\"rud.is\" \/>\n<meta property=\"article:published_time\" content=\"2014-09-15T01:10:20+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-03-07T21:44:24+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/rud.is\/b\/wp-content\/uploads\/2014\/09\/pws-alfred-results.png\" \/>\n<meta name=\"author\" content=\"hrbrmstr\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"hrbrmstr\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/rud.is\/b\/2014\/09\/14\/an-alfred-os-x-workflow-for-weather-underground-personal-weather-station-pws-data\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/rud.is\/b\/2014\/09\/14\/an-alfred-os-x-workflow-for-weather-underground-personal-weather-station-pws-data\/\"},\"author\":{\"name\":\"hrbrmstr\",\"@id\":\"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886\"},\"headline\":\"An Alfred (OS X) Workflow for Weather Underground Personal Weather Station (PWS) Data\",\"datePublished\":\"2014-09-15T01:10:20+00:00\",\"dateModified\":\"2018-03-07T21:44:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/rud.is\/b\/2014\/09\/14\/an-alfred-os-x-workflow-for-weather-underground-personal-weather-station-pws-data\/\"},\"wordCount\":318,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886\"},\"image\":{\"@id\":\"https:\/\/rud.is\/b\/2014\/09\/14\/an-alfred-os-x-workflow-for-weather-underground-personal-weather-station-pws-data\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/rud.is\/b\/wp-content\/uploads\/2014\/09\/pws-alfred-results.png\",\"keywords\":[\"post\"],\"articleSection\":[\"Alfred\",\"Apple\",\"Mavericks\",\"OS X\",\"Weather\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/rud.is\/b\/2014\/09\/14\/an-alfred-os-x-workflow-for-weather-underground-personal-weather-station-pws-data\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/rud.is\/b\/2014\/09\/14\/an-alfred-os-x-workflow-for-weather-underground-personal-weather-station-pws-data\/\",\"url\":\"https:\/\/rud.is\/b\/2014\/09\/14\/an-alfred-os-x-workflow-for-weather-underground-personal-weather-station-pws-data\/\",\"name\":\"An Alfred (OS X) Workflow for Weather Underground Personal Weather Station (PWS) Data - rud.is\",\"isPartOf\":{\"@id\":\"https:\/\/rud.is\/b\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/rud.is\/b\/2014\/09\/14\/an-alfred-os-x-workflow-for-weather-underground-personal-weather-station-pws-data\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/rud.is\/b\/2014\/09\/14\/an-alfred-os-x-workflow-for-weather-underground-personal-weather-station-pws-data\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/rud.is\/b\/wp-content\/uploads\/2014\/09\/pws-alfred-results.png\",\"datePublished\":\"2014-09-15T01:10:20+00:00\",\"dateModified\":\"2018-03-07T21:44:24+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/rud.is\/b\/2014\/09\/14\/an-alfred-os-x-workflow-for-weather-underground-personal-weather-station-pws-data\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/rud.is\/b\/2014\/09\/14\/an-alfred-os-x-workflow-for-weather-underground-personal-weather-station-pws-data\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/rud.is\/b\/2014\/09\/14\/an-alfred-os-x-workflow-for-weather-underground-personal-weather-station-pws-data\/#primaryimage\",\"url\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2014\/09\/pws-alfred-results.png?fit=500%2C296&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2014\/09\/pws-alfred-results.png?fit=500%2C296&ssl=1\",\"width\":500,\"height\":296},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/rud.is\/b\/2014\/09\/14\/an-alfred-os-x-workflow-for-weather-underground-personal-weather-station-pws-data\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/rud.is\/b\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"An Alfred (OS X) Workflow for Weather Underground Personal Weather Station (PWS) Data\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/rud.is\/b\/#website\",\"url\":\"https:\/\/rud.is\/b\/\",\"name\":\"rud.is\",\"description\":\"&quot;In God we trust. All others must bring data&quot;\",\"publisher\":{\"@id\":\"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/rud.is\/b\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886\",\"name\":\"hrbrmstr\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1\",\"url\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1\",\"width\":460,\"height\":460,\"caption\":\"hrbrmstr\"},\"logo\":{\"@id\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1\"},\"description\":\"Don't look at me\u2026I do what he does \u2014 just slower. #rstats avuncular \u2022 ?Resistance Fighter \u2022 Cook \u2022 Christian \u2022 [Master] Chef des Donn\u00e9es de S\u00e9curit\u00e9 @ @rapid7\",\"sameAs\":[\"http:\/\/rud.is\"],\"url\":\"https:\/\/rud.is\/b\/author\/hrbrmstr\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"An Alfred (OS X) Workflow for Weather Underground Personal Weather Station (PWS) Data - rud.is","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/rud.is\/b\/2014\/09\/14\/an-alfred-os-x-workflow-for-weather-underground-personal-weather-station-pws-data\/","og_locale":"en_US","og_type":"article","og_title":"An Alfred (OS X) Workflow for Weather Underground Personal Weather Station (PWS) Data - rud.is","og_description":"I&#8217;ve operated a [Weather Underground](http:\/\/www.wunderground.com\/) [Personal Weather Station](http:\/\/www.wunderground.com\/weatherstation\/about.asp) (PWS) [[KMEBERWI7](http:\/\/www.wunderground.com\/personal-weather-station\/dashboard?ID=KMEBERWI7#history)] off-and-on (hardware issues notwithstanding) for as long as I can remember, and I thought it was about time to finally do an Alfred\u2194PWS mashup. My personal requirements were quite modest: &#8211; 5 reading history (including most current) &#8211; Ability to copy all the current day&#8217;s [&hellip;]","og_url":"https:\/\/rud.is\/b\/2014\/09\/14\/an-alfred-os-x-workflow-for-weather-underground-personal-weather-station-pws-data\/","og_site_name":"rud.is","article_published_time":"2014-09-15T01:10:20+00:00","article_modified_time":"2018-03-07T21:44:24+00:00","og_image":[{"url":"https:\/\/rud.is\/b\/wp-content\/uploads\/2014\/09\/pws-alfred-results.png","type":"","width":"","height":""}],"author":"hrbrmstr","twitter_card":"summary_large_image","twitter_misc":{"Written by":"hrbrmstr","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/rud.is\/b\/2014\/09\/14\/an-alfred-os-x-workflow-for-weather-underground-personal-weather-station-pws-data\/#article","isPartOf":{"@id":"https:\/\/rud.is\/b\/2014\/09\/14\/an-alfred-os-x-workflow-for-weather-underground-personal-weather-station-pws-data\/"},"author":{"name":"hrbrmstr","@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"headline":"An Alfred (OS X) Workflow for Weather Underground Personal Weather Station (PWS) Data","datePublished":"2014-09-15T01:10:20+00:00","dateModified":"2018-03-07T21:44:24+00:00","mainEntityOfPage":{"@id":"https:\/\/rud.is\/b\/2014\/09\/14\/an-alfred-os-x-workflow-for-weather-underground-personal-weather-station-pws-data\/"},"wordCount":318,"commentCount":1,"publisher":{"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"image":{"@id":"https:\/\/rud.is\/b\/2014\/09\/14\/an-alfred-os-x-workflow-for-weather-underground-personal-weather-station-pws-data\/#primaryimage"},"thumbnailUrl":"https:\/\/rud.is\/b\/wp-content\/uploads\/2014\/09\/pws-alfred-results.png","keywords":["post"],"articleSection":["Alfred","Apple","Mavericks","OS X","Weather"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/rud.is\/b\/2014\/09\/14\/an-alfred-os-x-workflow-for-weather-underground-personal-weather-station-pws-data\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/rud.is\/b\/2014\/09\/14\/an-alfred-os-x-workflow-for-weather-underground-personal-weather-station-pws-data\/","url":"https:\/\/rud.is\/b\/2014\/09\/14\/an-alfred-os-x-workflow-for-weather-underground-personal-weather-station-pws-data\/","name":"An Alfred (OS X) Workflow for Weather Underground Personal Weather Station (PWS) Data - rud.is","isPartOf":{"@id":"https:\/\/rud.is\/b\/#website"},"primaryImageOfPage":{"@id":"https:\/\/rud.is\/b\/2014\/09\/14\/an-alfred-os-x-workflow-for-weather-underground-personal-weather-station-pws-data\/#primaryimage"},"image":{"@id":"https:\/\/rud.is\/b\/2014\/09\/14\/an-alfred-os-x-workflow-for-weather-underground-personal-weather-station-pws-data\/#primaryimage"},"thumbnailUrl":"https:\/\/rud.is\/b\/wp-content\/uploads\/2014\/09\/pws-alfred-results.png","datePublished":"2014-09-15T01:10:20+00:00","dateModified":"2018-03-07T21:44:24+00:00","breadcrumb":{"@id":"https:\/\/rud.is\/b\/2014\/09\/14\/an-alfred-os-x-workflow-for-weather-underground-personal-weather-station-pws-data\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/rud.is\/b\/2014\/09\/14\/an-alfred-os-x-workflow-for-weather-underground-personal-weather-station-pws-data\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/rud.is\/b\/2014\/09\/14\/an-alfred-os-x-workflow-for-weather-underground-personal-weather-station-pws-data\/#primaryimage","url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2014\/09\/pws-alfred-results.png?fit=500%2C296&ssl=1","contentUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2014\/09\/pws-alfred-results.png?fit=500%2C296&ssl=1","width":500,"height":296},{"@type":"BreadcrumbList","@id":"https:\/\/rud.is\/b\/2014\/09\/14\/an-alfred-os-x-workflow-for-weather-underground-personal-weather-station-pws-data\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/rud.is\/b\/"},{"@type":"ListItem","position":2,"name":"An Alfred (OS X) Workflow for Weather Underground Personal Weather Station (PWS) Data"}]},{"@type":"WebSite","@id":"https:\/\/rud.is\/b\/#website","url":"https:\/\/rud.is\/b\/","name":"rud.is","description":"&quot;In God we trust. All others must bring data&quot;","publisher":{"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/rud.is\/b\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886","name":"hrbrmstr","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","contentUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","width":460,"height":460,"caption":"hrbrmstr"},"logo":{"@id":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1"},"description":"Don't look at me\u2026I do what he does \u2014 just slower. #rstats avuncular \u2022 ?Resistance Fighter \u2022 Cook \u2022 Christian \u2022 [Master] Chef des Donn\u00e9es de S\u00e9curit\u00e9 @ @rapid7","sameAs":["http:\/\/rud.is"],"url":"https:\/\/rud.is\/b\/author\/hrbrmstr\/"}]}},"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p23idr-MK","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":820,"url":"https:\/\/rud.is\/b\/2012\/02\/12\/two-alfred-extension-for-retrieving-ip-address-information\/","url_meta":{"origin":3022,"position":0},"title":"Two Alfred Extensions For Retrieving IP Address Information","author":"hrbrmstr","date":"2012-02-12","format":false,"excerpt":"I've been an unapologetic Alfred user since @hatlessec recommended it and have recently been cobbling together quick shell scripts that make life a bit easier. The following ones - lip & rip - copy your local & remote IP addresses (respectively) to your clipboard and also display a Growl message\u2026","rel":"","context":"In &quot;Alfred&quot;","block_context":{"text":"Alfred","link":"https:\/\/rud.is\/b\/category\/alfred\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":763,"url":"https:\/\/rud.is\/b\/2012\/01\/07\/getting-things-done-a-cobblers-tale\/","url_meta":{"origin":3022,"position":1},"title":"Getting Things Done : A Cobbler&#8217;s Tale","author":"hrbrmstr","date":"2012-01-07","format":false,"excerpt":"Starting sometime mid-year in 2011, I began having more 'stuff' to do than even my eidetic memory could help with. It's not that I forgot things, per se, but the ability to mentally recall and prioritize work, family, personal and other tasks finally required some external assistance and I resolved\u2026","rel":"","context":"In &quot;GTD&quot;","block_context":{"text":"GTD","link":"https:\/\/rud.is\/b\/category\/gtd\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2637,"url":"https:\/\/rud.is\/b\/2013\/09\/08\/rforecastio-simple-r-package-to-access-forecast-io-weather-data\/","url_meta":{"origin":3022,"position":2},"title":"Rforecastio &#8211; Simple R Package To Access forecast.io Weather Data","author":"hrbrmstr","date":"2013-09-08","format":false,"excerpt":"It doesn't get much better for me than when I can combine R and weather data in new ways. I've got something brewing with my Nest thermostat and needed to get some current wx readings plus forecast data. I could have chosen a number of different sources or API's but\u2026","rel":"","context":"In &quot;Development&quot;","block_context":{"text":"Development","link":"https:\/\/rud.is\/b\/category\/development\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2878,"url":"https:\/\/rud.is\/b\/2014\/01\/10\/change-the-default-shell-action-in-rstudio-for-os-x\/","url_meta":{"origin":3022,"position":3},"title":"Change The Default &#8220;Shell&#8230;&#8221; Action In RStudio for OS X","author":"hrbrmstr","date":"2014-01-10","format":false,"excerpt":"RStudio is my R development environment of choice and I work primarily on\/in Mac OS X. While it's great that Apple provides a built-in Terminal application, I prefer to use [iTerm 2](http:\/\/www.iterm2.com\/#\/section\/home) when I need to do work at a shell. The fine folks at RStudio provide a handy `Shell`\u2026\u2026","rel":"","context":"In &quot;Apple&quot;","block_context":{"text":"Apple","link":"https:\/\/rud.is\/b\/category\/apple\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":4772,"url":"https:\/\/rud.is\/b\/2016\/12\/22\/pipes-everywhere\/","url_meta":{"origin":3022,"position":4},"title":"Pipes (%>%) Everywhere","author":"hrbrmstr","date":"2016-12-22","format":false,"excerpt":"An R user asked a question regarding whether it's possible to have the RStudio pipe (%>%) shortcut (Cmd-Shift-M) available in other macOS applications. If you're using Alfred then you can use this workflow for said task (IIRC this requires an Alfred license which is reasonably cheap). When you add it\u2026","rel":"","context":"In &quot;Alfred&quot;","block_context":{"text":"Alfred","link":"https:\/\/rud.is\/b\/category\/alfred\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3127,"url":"https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/","url_meta":{"origin":3022,"position":5},"title":"Visualizing Historical &#038; Most-likely First Snowfall Dates for U.S. Regions","author":"hrbrmstr","date":"2014-11-26","format":false,"excerpt":"UPDATE: You can now run this as a local Shiny app by entering shiny::runGist(\"95ec24c1b0cb433a76a5\", launch.browser=TRUE) at an R prompt (provided all the dependent libraries (below) are installed) or use it interactively over at Shiny Apps. The impending arrival of the first real snowfall of the year in my part of\u2026","rel":"","context":"In &quot;Charts &amp; Graphs&quot;","block_context":{"text":"Charts &amp; Graphs","link":"https:\/\/rud.is\/b\/category\/charts-graphs\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/3022","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/comments?post=3022"}],"version-history":[{"count":0,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/3022\/revisions"}],"wp:attachment":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/media?parent=3022"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/categories?post=3022"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/tags?post=3022"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}