Skip to content

Instantly share code, notes, and snippets.

@leoherzog
Created August 7, 2016 16:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save leoherzog/2c0db9d0dc711d7a6b2199f32851af28 to your computer and use it in GitHub Desktop.
Save leoherzog/2c0db9d0dc711d7a6b2199f32851af28 to your computer and use it in GitHub Desktop.
Muzei extension for Tasker that gets local weather photos from #ProjectWeather
Muzei Weather Wallpaper Updater v2 (39)
<Kill the task if Wi-Fi isn't connected and the "Wi-Fi Only" setting is on>
A1: Stop [ With Error:Off Task:Muzei Weather Wallpaper Updater v2 ] If [ %WIFII !~ *CONNECTION* & %WWWIFIONLY ~ true ]
<Kill the task if the battery is low and the "Don't run on low battery" setting is on>
A2: Stop [ With Error:Off Task:Muzei Weather Wallpaper Updater v2 ] If [ %BATT < 15 & %WWDONTRUNONLOWBATTERY ~ true ]
A3: Variable Set [ Name:%flickrapikey To:0952e1ceeeca7a0e1b3867533ba4beff Do Maths:Off Append:Off ]
<#ProjectWeather Flickr Group ID>
A4: Variable Set [ Name:%projectweathergroupid To:1463451@N25 Do Maths:Off Append:Off ]
A5: Get Location [ Source:Net Timeout (Seconds):15 Continue Task Immediately:Off Keep Tracking:Off ]
<Turn network LAT,LONG into two variables>
A6: Variable Split [ Name:%LOCN Splitter:, Delete Base:Off ]
<Change this to your Wunderground API Key>
A7: Variable Set [ Name:%WWFORECASTAPIKEY To:{Your Wunderground API Key} Do Maths:Off Append:Off ]
<Get the current weather condition at your location from Wunderground>
A8: AutoTools Json Read [ Configuration:Input Format: Json
Json: https://api.wunderground.com/api/%WWFORECASTAPIKEY/conditions/q/%LOCN.json
Fields: current_observation.icon
Sort Array Invert: false
Get Parent Values: false
Variable Name: forecastcondition
Separator: , Timeout (Seconds):60 ]
<There aren't many pictures that match "tstorms", so correct to "storms" if that is the condition>
A9: Variable Set [ Name:%forecastcondition To:storms Do Maths:Off Append:Off ] If [ %forecastcondition ~ tstorms ]
A10: Variable Set [ Name:%forecastconditionemoji To:☀️ Do Maths:Off Append:Off ] If [ %forecastcondition ~ *clear* | %forecastcondition ~ *sunny* ]
A11: Variable Set [ Name:%forecastconditionemoji To:☁️ Do Maths:Off Append:Off ] If [ %forecastcondition ~ *cloudy* | %forecastcondition ~ *hazy* ]
A12: Variable Set [ Name:%forecastconditionemoji To:🌤️ Do Maths:Off Append:Off ] If [ %forecastcondition ~ *partlysunny* | %forecastcondition ~ *mostlysunny* ]
A13: Variable Set [ Name:%forecastconditionemoji To:⛅ Do Maths:Off Append:Off ] If [ %forecastcondition ~ *partlycloudy* | %forecastcondition ~ *mostlycloudy* ]
A14: Variable Set [ Name:%forecastconditionemoji To:🌧️ Do Maths:Off Append:Off ] If [ %forecastcondition ~ *rain* | %forecastcondition ~ *sleet* ]
A15: Variable Set [ Name:%forecastconditionemoji To:🌩️ Do Maths:Off Append:Off ] If [ %forecastcondition ~ *storms* ]
A16: Variable Set [ Name:%forecastconditionemoji To:🌨️ Do Maths:Off Append:Off ] If [ %forecastcondition ~ *snow* | %forecastcondition ~ *flurries* ]
A17: Variable Set [ Name:%forecastconditionemoji To:🌫️ Do Maths:Off Append:Off ] If [ %forecastcondition ~ *wind* ]
A18: Variable Set [ Name:%forecastconditionemoji To:🌁 Do Maths:Off Append:Off ] If [ %forecastcondition ~ *fog* ]
A19: Variable Set [ Name:%forecastconditionemoji To:⛈️ Do Maths:Off Append:Off ] If [ %forecastconditionemoji !Set ]
<Search for photos around you that match the current weather from Flickr's #ProjectWeather group. Returns arrays of Photo IDs, Titles, Owners, and URLs.>
A20: AutoTools Json Read [ Configuration:Input Format: Json
Json: https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=%flickrapikey&group_id=%projectweathergroupid&text=%forecastcondition&lat=%LOCN1&lon=%LOCN2&radius=20&format=json&nojsoncallback=1&extras=url_l,url_o&sort=interestingness-desc
Fields: photos.photo.title(), photos.photo.id(), photos.photo.owner(), photos.photo.url_o(), photos.photo.url_l()
Sort Array Invert: false
Get Parent Values: false
Separator: , Timeout (Seconds):60 ]
<Every photo has an ID, so get the number of Photos by seeing how many IDs we have>
A21: Variable Set [ Name:%numberofphotos To:%photos_photo_id(#) Do Maths:Off Append:Off ]
<Format the subtitle for Muzei>
A22: Variable Set [ Name:%byline To:%numberofphotos local %forecastconditionemoji photos found Do Maths:Off Append:Off ]
<Format the subtitle for Muzei to say worldwide if there's no local ones>
A23: Variable Set [ Name:%byline To:🌎 %forecastcondition photos from around the world Do Maths:Off Append:Off ] If [ %numberofphotos = 0 ]
<If there aren't any local photos, run the Flickr search again, but for results not constrained by location>
A24: AutoTools Json Read [ Configuration:Input Format: Json
Json: https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=%flickrapikey&group_id=%projectweathergroupid&text=%forecastcondition&format=json&nojsoncallback=1&extras=url_l,url_o&sort=interestingness-desc
Fields: photos.photo.title(), photos.photo.id(), photos.photo.owner(), photos.photo.url_o(), photos.photo.url_l()
Sort Array Invert: false
Get Parent Values: false
Separator: , Timeout (Seconds):60 ] If [ %numberofphotos = 0 ]
<Grab the total number of photos from the new worldwide search, so we can loop through them below (in case it was 0 before)>
A25: Variable Set [ Name:%numberofphotos To:%photos_photo_id(#) Do Maths:Off Append:Off ]
<Build an array of Flickr Photo pages>
A26: For [ Variable:%index Items:1:%numberofphotos ]
<Assemble the website URL for the current photo...>
A27: Variable Set [ Name:%flickrphotourl To:https://www.flickr.com/photos/%photos_photo_owner(%index)/%photos_photo_id(%index) Do Maths:Off Append:Off ]
<...and add the URL a new array>
A28: Array Push [ Name:%photos_photo_flickrpage Position:%index Value:%flickrphotourl Fill Spaces:Off ]
A29: End For
<Build a new array of original file URLs>
A30: For [ Variable:%index Items:1:%numberofphotos ]
<Add the "original quality" URL if there is one...>
A31: Array Push [ Name:%photos_photo_url Position:%index Value:%photos_photo_url_o(%index) Fill Spaces:Off ] If [ %photos_photo_url_o(%index) Set ]
<...or the "high quality" version if there isn't>
A32: Array Push [ Name:%photos_photo_url Position:%index Value:%photos_photo_url_l(%index) Fill Spaces:Off ] If [ %photos_photo_url_o(%index) !Set ]
A33: End For
<Take all of the arrays and shuffle the order of the items, while still keeping the same order amongst them all>
A34: AutoTools Arrays [ Configuration:Input Arrays: %photos_photo_title(), %photos_photo_id(), %photos_photo_owner(), %photos_photo_url(), %photos_photo_flickrpage()
Vertical Mode: false
Separator: ,
Item Separator: ,
Input Is File: false
Names: photos_photo_title, photos_photo_id, photos_photo_owner, photos_photo_url, photos_photo_flickrpage
Output Variables Separator: ,
Sort Arrays: false
Invert: false
Randomize: true
Merge Arrays: false
Merged Array Name: atmergedarray
Unique: false
Exact: false
Regex: false
Case Insensitive: false
Contains All: false
Clear For Name: false
Clear For All: false Timeout (Seconds):60 ]
<Send the URL and metadata off to Muzei>
A35: AutoTools Muzei [ Configuration:Images: %photos_photo_url()
Titles: %photos_photo_title()
Subtexts: %byline
View URLs: %photos_photo_flickrpage()
Next Image: true
Schedule: 600 Timeout (Seconds):60 ]
<TaskerData sr="" dvi="1" tv="4.8u5m">
<Task sr="task39">
<cdate>1458152913165</cdate>
<edate>1470587793146</edate>
<id>39</id>
<nme>Muzei Weather Wallpaper Updater v2</nme>
<pri>100</pri>
<Kid sr="Kid">
<feat0>android.hardware.location.network:y</feat0>
<feat1>android.hardware.location:y</feat1>
<launchID>19</launchID>
<pkg>eqs.wdr.ynk</pkg>
<vnme>v2</vnme>
<vnum>3</vnum>
</Kid>
<Action sr="act0" ve="7">
<code>137</code>
<label>Kill the task if Wi-Fi isn't connected and the "Wi-Fi Only" setting is on</label>
<Int sr="arg0" val="0"/>
<Str sr="arg1" ve="3">Muzei Weather Wallpaper Updater v2</Str>
<ConditionList sr="if">
<bool0>And</bool0>
<Condition sr="c0" ve="3">
<lhs>%WIFII</lhs>
<op>3</op>
<rhs>*CONNECTION*</rhs>
</Condition>
<Condition sr="c1" ve="3">
<lhs>%WWWIFIONLY</lhs>
<op>2</op>
<rhs>true</rhs>
</Condition>
</ConditionList>
</Action>
<Action sr="act1" ve="7">
<code>137</code>
<label>Kill the task if the battery is low and the "Don't run on low battery" setting is on</label>
<Int sr="arg0" val="0"/>
<Str sr="arg1" ve="3">Muzei Weather Wallpaper Updater v2</Str>
<ConditionList sr="if">
<bool0>And</bool0>
<Condition sr="c0" ve="3">
<lhs>%BATT</lhs>
<op>6</op>
<rhs>15</rhs>
</Condition>
<Condition sr="c1" ve="3">
<lhs>%WWDONTRUNONLOWBATTERY</lhs>
<op>2</op>
<rhs>true</rhs>
</Condition>
</ConditionList>
</Action>
<Action sr="act10" ve="7">
<code>547</code>
<Str sr="arg0" ve="3">%forecastconditionemoji</Str>
<Str sr="arg1" ve="3">☁️</Str>
<Int sr="arg2" val="0"/>
<Int sr="arg3" val="0"/>
<ConditionList sr="if">
<bool0>Or</bool0>
<Condition sr="c0" ve="3">
<lhs>%forecastcondition</lhs>
<op>2</op>
<rhs>*cloudy*</rhs>
</Condition>
<Condition sr="c1" ve="3">
<lhs>%forecastcondition</lhs>
<op>2</op>
<rhs>*hazy*</rhs>
</Condition>
</ConditionList>
</Action>
<Action sr="act11" ve="7">
<code>547</code>
<Str sr="arg0" ve="3">%forecastconditionemoji</Str>
<Str sr="arg1" ve="3">🌤️</Str>
<Int sr="arg2" val="0"/>
<Int sr="arg3" val="0"/>
<ConditionList sr="if">
<bool0>Or</bool0>
<Condition sr="c0" ve="3">
<lhs>%forecastcondition</lhs>
<op>2</op>
<rhs>*partlysunny*</rhs>
</Condition>
<Condition sr="c1" ve="3">
<lhs>%forecastcondition</lhs>
<op>2</op>
<rhs>*mostlysunny*</rhs>
</Condition>
</ConditionList>
</Action>
<Action sr="act12" ve="7">
<code>547</code>
<Str sr="arg0" ve="3">%forecastconditionemoji</Str>
<Str sr="arg1" ve="3">⛅</Str>
<Int sr="arg2" val="0"/>
<Int sr="arg3" val="0"/>
<ConditionList sr="if">
<bool0>Or</bool0>
<Condition sr="c0" ve="3">
<lhs>%forecastcondition</lhs>
<op>2</op>
<rhs>*partlycloudy*</rhs>
</Condition>
<Condition sr="c1" ve="3">
<lhs>%forecastcondition</lhs>
<op>2</op>
<rhs>*mostlycloudy*</rhs>
</Condition>
</ConditionList>
</Action>
<Action sr="act13" ve="7">
<code>547</code>
<Str sr="arg0" ve="3">%forecastconditionemoji</Str>
<Str sr="arg1" ve="3">🌧️</Str>
<Int sr="arg2" val="0"/>
<Int sr="arg3" val="0"/>
<ConditionList sr="if">
<bool0>Or</bool0>
<Condition sr="c0" ve="3">
<lhs>%forecastcondition</lhs>
<op>2</op>
<rhs>*rain*</rhs>
</Condition>
<Condition sr="c1" ve="3">
<lhs>%forecastcondition</lhs>
<op>2</op>
<rhs>*sleet*</rhs>
</Condition>
</ConditionList>
</Action>
<Action sr="act14" ve="7">
<code>547</code>
<Str sr="arg0" ve="3">%forecastconditionemoji</Str>
<Str sr="arg1" ve="3">🌩️</Str>
<Int sr="arg2" val="0"/>
<Int sr="arg3" val="0"/>
<ConditionList sr="if">
<Condition sr="c0" ve="3">
<lhs>%forecastcondition</lhs>
<op>2</op>
<rhs>*storms*</rhs>
</Condition>
</ConditionList>
</Action>
<Action sr="act15" ve="7">
<code>547</code>
<Str sr="arg0" ve="3">%forecastconditionemoji</Str>
<Str sr="arg1" ve="3">🌨️</Str>
<Int sr="arg2" val="0"/>
<Int sr="arg3" val="0"/>
<ConditionList sr="if">
<bool0>Or</bool0>
<Condition sr="c0" ve="3">
<lhs>%forecastcondition</lhs>
<op>2</op>
<rhs>*snow*</rhs>
</Condition>
<Condition sr="c1" ve="3">
<lhs>%forecastcondition</lhs>
<op>2</op>
<rhs>*flurries*</rhs>
</Condition>
</ConditionList>
</Action>
<Action sr="act16" ve="7">
<code>547</code>
<Str sr="arg0" ve="3">%forecastconditionemoji</Str>
<Str sr="arg1" ve="3">🌫️</Str>
<Int sr="arg2" val="0"/>
<Int sr="arg3" val="0"/>
<ConditionList sr="if">
<Condition sr="c0" ve="3">
<lhs>%forecastcondition</lhs>
<op>2</op>
<rhs>*wind*</rhs>
</Condition>
</ConditionList>
</Action>
<Action sr="act17" ve="7">
<code>547</code>
<Str sr="arg0" ve="3">%forecastconditionemoji</Str>
<Str sr="arg1" ve="3">🌁</Str>
<Int sr="arg2" val="0"/>
<Int sr="arg3" val="0"/>
<ConditionList sr="if">
<Condition sr="c0" ve="3">
<lhs>%forecastcondition</lhs>
<op>2</op>
<rhs>*fog*</rhs>
</Condition>
</ConditionList>
</Action>
<Action sr="act18" ve="7">
<code>547</code>
<Str sr="arg0" ve="3">%forecastconditionemoji</Str>
<Str sr="arg1" ve="3">⛈️</Str>
<Int sr="arg2" val="0"/>
<Int sr="arg3" val="0"/>
<ConditionList sr="if">
<Condition sr="c0" ve="3">
<lhs>%forecastconditionemoji</lhs>
<op>13</op>
<rhs>fog</rhs>
</Condition>
</ConditionList>
</Action>
<Action sr="act19" ve="7">
<code>1446874931</code>
<label>Search for photos around you that match the current weather from Flickr's #ProjectWeather group. Returns arrays of Photo IDs, Titles, Owners, and URLs.</label>
<Bundle sr="arg0">
<Vals sr="val">
<Average>&lt;null&gt;</Average>
<Average-type>java.lang.String</Average-type>
<Field>photos.photo.title(), photos.photo.id(), photos.photo.owner(), photos.photo.url_o(), photos.photo.url_l()</Field>
<Field-type>java.lang.String</Field-type>
<FilterInvert>false</FilterInvert>
<FilterInvert-type>java.lang.Boolean</FilterInvert-type>
<GetParentValues>false</GetParentValues>
<GetParentValues-type>java.lang.Boolean</GetParentValues-type>
<InputFormat>0</InputFormat>
<InputFormat-type>java.lang.String</InputFormat-type>
<JoinOutputArray>&lt;null&gt;</JoinOutputArray>
<JoinOutputArray-type>java.lang.String</JoinOutputArray-type>
<Json>https://api.flickr.com/services/rest/?method=flickr.photos.search&amp;api_key=%flickrapikey&amp;group_id=%projectweathergroupid&amp;text=%forecastcondition&amp;lat=%LOCN1&amp;lon=%LOCN2&amp;radius=20&amp;format=json&amp;nojsoncallback=1&amp;extras=url_l,url_o&amp;sort=interestingness-desc</Json>
<Json-type>java.lang.String</Json-type>
<JsonRootVariable>&lt;null&gt;</JsonRootVariable>
<JsonRootVariable-type>java.lang.String</JsonRootVariable-type>
<MatchField>&lt;null&gt;</MatchField>
<MatchField-type>java.lang.String</MatchField-type>
<MatchValue>&lt;null&gt;</MatchValue>
<MatchValue-type>java.lang.String</MatchValue-type>
<MatchesCaseInsensitive>false</MatchesCaseInsensitive>
<MatchesCaseInsensitive-type>java.lang.Boolean</MatchesCaseInsensitive-type>
<MatchesContainsAll>false</MatchesContainsAll>
<MatchesContainsAll-type>java.lang.Boolean</MatchesContainsAll-type>
<MatchesExact>false</MatchesExact>
<MatchesExact-type>java.lang.Boolean</MatchesExact-type>
<MatchesRegex>false</MatchesRegex>
<MatchesRegex-type>java.lang.Boolean</MatchesRegex-type>
<Max>&lt;null&gt;</Max>
<Max-type>java.lang.String</Max-type>
<MaxResults>&lt;null&gt;</MaxResults>
<MaxResults-type>java.lang.String</MaxResults-type>
<Min>&lt;null&gt;</Min>
<Min-type>java.lang.String</Min-type>
<Query>&lt;null&gt;</Query>
<Query-type>java.lang.String</Query-type>
<Separator>,</Separator>
<Separator-type>java.lang.String</Separator-type>
<SimpleMode>false</SimpleMode>
<SimpleMode-type>java.lang.Boolean</SimpleMode-type>
<SortArrayInvert>false</SortArrayInvert>
<SortArrayInvert-type>java.lang.Boolean</SortArrayInvert-type>
<SortArrayKey>&lt;null&gt;</SortArrayKey>
<SortArrayKey-type>java.lang.String</SortArrayKey-type>
<SortArrayObjectKey>&lt;null&gt;</SortArrayObjectKey>
<SortArrayObjectKey-type>java.lang.String</SortArrayObjectKey-type>
<Sum>&lt;null&gt;</Sum>
<Sum-type>java.lang.String</Sum-type>
<VariableName>&lt;null&gt;</VariableName>
<VariableName-type>java.lang.String</VariableName-type>
<com.twofortyfouram.locale.intent.extra.BLURB>Input Format: Json
Json: https://api.flickr.com/services/rest/?method=flickr.photos.search&amp;api_key=%flickrapikey&amp;group_id=%projectweathergroupid&amp;text=%forecastcondition&amp;lat=%LOCN1&amp;lon=%LOCN2&amp;radius=20&amp;format=json&amp;nojsoncallback=1&amp;extras=url_l,url_o&amp;sort=interestingness-desc
Fields: photos.photo.title(), photos.photo.id(), photos.photo.owner(), photos.photo.url_o(), photos.photo.url_l()
Sort Array Invert: false
Get Parent Values: false
Separator: ,</com.twofortyfouram.locale.intent.extra.BLURB>
<com.twofortyfouram.locale.intent.extra.BLURB-type>java.lang.String</com.twofortyfouram.locale.intent.extra.BLURB-type>
<net.dinglisch.android.tasker.RELEVANT_VARIABLES>&lt;StringArray sr=""&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0&gt;%photos_photo_id()
Json Values
Values of the fields you got from the json text&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1&gt;%photos_photo_owner()
Json Values
Values of the fields you got from the json text&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES2&gt;%photos_photo_title()
Json Values
Values of the fields you got from the json text&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES2&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES3&gt;%photos_photo_url_l()
Json Values
Values of the fields you got from the json text&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES3&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES4&gt;%photos_photo_url_o()
Json Values
Values of the fields you got from the json text&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES4&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES5&gt;%err
Error Code
Only available if you select &amp;lt;b&amp;gt;Continue Task After Error&amp;lt;/b&amp;gt; and the action ends in error&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES5&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES6&gt;%errmsg
Error Message
Only available if you select &amp;lt;b&amp;gt;Continue Task After Error&amp;lt;/b&amp;gt; and the action ends in error&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES6&gt;&lt;/StringArray&gt;</net.dinglisch.android.tasker.RELEVANT_VARIABLES>
<net.dinglisch.android.tasker.RELEVANT_VARIABLES-type>[Ljava.lang.String;</net.dinglisch.android.tasker.RELEVANT_VARIABLES-type>
<net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS>Json Field Separator InputFormat plugininstanceid plugintypeid </net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS>
<net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS-type>java.lang.String</net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS-type>
<net.dinglisch.android.tasker.subbundled>true</net.dinglisch.android.tasker.subbundled>
<net.dinglisch.android.tasker.subbundled-type>java.lang.Boolean</net.dinglisch.android.tasker.subbundled-type>
<plugininstanceid>076f37fa-b9be-488a-801f-af5e97dd62a0</plugininstanceid>
<plugininstanceid-type>java.lang.String</plugininstanceid-type>
<plugintypeid>com.joaomgcd.autotools.intent.IntentJson</plugintypeid>
<plugintypeid-type>java.lang.String</plugintypeid-type>
</Vals>
</Bundle>
<Str sr="arg1" ve="3">com.joaomgcd.autotools</Str>
<Str sr="arg2" ve="3">com.joaomgcd.autotools.activity.ActivityConfigJson</Str>
<Int sr="arg3" val="60"/>
</Action>
<Action sr="act2" ve="7">
<code>547</code>
<Str sr="arg0" ve="3">%flickrapikey</Str>
<Str sr="arg1" ve="3">0952e1ceeeca7a0e1b3867533ba4beff</Str>
<Int sr="arg2" val="0"/>
<Int sr="arg3" val="0"/>
</Action>
<Action sr="act20" ve="7">
<code>547</code>
<label>Every photo has an ID, so get the number of Photos by seeing how many IDs we have</label>
<Str sr="arg0" ve="3">%numberofphotos</Str>
<Str sr="arg1" ve="3">%photos_photo_id(#)</Str>
<Int sr="arg2" val="0"/>
<Int sr="arg3" val="0"/>
</Action>
<Action sr="act21" ve="7">
<code>547</code>
<label>Format the subtitle for Muzei</label>
<Str sr="arg0" ve="3">%byline</Str>
<Str sr="arg1" ve="3">%numberofphotos local %forecastconditionemoji photos found</Str>
<Int sr="arg2" val="0"/>
<Int sr="arg3" val="0"/>
</Action>
<Action sr="act22" ve="7">
<code>547</code>
<label>Format the subtitle for Muzei to say worldwide if there's no local ones</label>
<Str sr="arg0" ve="3">%byline</Str>
<Str sr="arg1" ve="3">🌎 %forecastcondition photos from around the world</Str>
<Int sr="arg2" val="0"/>
<Int sr="arg3" val="0"/>
<ConditionList sr="if">
<Condition sr="c0" ve="3">
<lhs>%numberofphotos</lhs>
<op>8</op>
<rhs>0</rhs>
</Condition>
</ConditionList>
</Action>
<Action sr="act23" ve="7">
<code>1446874931</code>
<label>If there aren't any local photos, run the Flickr search again, but for results not constrained by location</label>
<Bundle sr="arg0">
<Vals sr="val">
<Average>&lt;null&gt;</Average>
<Average-type>java.lang.String</Average-type>
<Field>photos.photo.title(), photos.photo.id(), photos.photo.owner(), photos.photo.url_o(), photos.photo.url_l()</Field>
<Field-type>java.lang.String</Field-type>
<FilterInvert>false</FilterInvert>
<FilterInvert-type>java.lang.Boolean</FilterInvert-type>
<GetParentValues>false</GetParentValues>
<GetParentValues-type>java.lang.Boolean</GetParentValues-type>
<InputFormat>0</InputFormat>
<InputFormat-type>java.lang.String</InputFormat-type>
<JoinOutputArray>&lt;null&gt;</JoinOutputArray>
<JoinOutputArray-type>java.lang.String</JoinOutputArray-type>
<Json>https://api.flickr.com/services/rest/?method=flickr.photos.search&amp;api_key=%flickrapikey&amp;group_id=%projectweathergroupid&amp;text=%forecastcondition&amp;format=json&amp;nojsoncallback=1&amp;extras=url_l,url_o&amp;sort=interestingness-desc</Json>
<Json-type>java.lang.String</Json-type>
<JsonRootVariable>&lt;null&gt;</JsonRootVariable>
<JsonRootVariable-type>java.lang.String</JsonRootVariable-type>
<MatchField>&lt;null&gt;</MatchField>
<MatchField-type>java.lang.String</MatchField-type>
<MatchValue>&lt;null&gt;</MatchValue>
<MatchValue-type>java.lang.String</MatchValue-type>
<MatchesCaseInsensitive>false</MatchesCaseInsensitive>
<MatchesCaseInsensitive-type>java.lang.Boolean</MatchesCaseInsensitive-type>
<MatchesContainsAll>false</MatchesContainsAll>
<MatchesContainsAll-type>java.lang.Boolean</MatchesContainsAll-type>
<MatchesExact>false</MatchesExact>
<MatchesExact-type>java.lang.Boolean</MatchesExact-type>
<MatchesRegex>false</MatchesRegex>
<MatchesRegex-type>java.lang.Boolean</MatchesRegex-type>
<Max>&lt;null&gt;</Max>
<Max-type>java.lang.String</Max-type>
<MaxResults>&lt;null&gt;</MaxResults>
<MaxResults-type>java.lang.String</MaxResults-type>
<Min>&lt;null&gt;</Min>
<Min-type>java.lang.String</Min-type>
<Query>&lt;null&gt;</Query>
<Query-type>java.lang.String</Query-type>
<Separator>,</Separator>
<Separator-type>java.lang.String</Separator-type>
<SimpleMode>false</SimpleMode>
<SimpleMode-type>java.lang.Boolean</SimpleMode-type>
<SortArrayInvert>false</SortArrayInvert>
<SortArrayInvert-type>java.lang.Boolean</SortArrayInvert-type>
<SortArrayKey>&lt;null&gt;</SortArrayKey>
<SortArrayKey-type>java.lang.String</SortArrayKey-type>
<SortArrayObjectKey>&lt;null&gt;</SortArrayObjectKey>
<SortArrayObjectKey-type>java.lang.String</SortArrayObjectKey-type>
<Sum>&lt;null&gt;</Sum>
<Sum-type>java.lang.String</Sum-type>
<VariableName>&lt;null&gt;</VariableName>
<VariableName-type>java.lang.String</VariableName-type>
<com.twofortyfouram.locale.intent.extra.BLURB>Input Format: Json
Json: https://api.flickr.com/services/rest/?method=flickr.photos.search&amp;api_key=%flickrapikey&amp;group_id=%projectweathergroupid&amp;text=%forecastcondition&amp;format=json&amp;nojsoncallback=1&amp;extras=url_l,url_o&amp;sort=interestingness-desc
Fields: photos.photo.title(), photos.photo.id(), photos.photo.owner(), photos.photo.url_o(), photos.photo.url_l()
Sort Array Invert: false
Get Parent Values: false
Separator: ,</com.twofortyfouram.locale.intent.extra.BLURB>
<com.twofortyfouram.locale.intent.extra.BLURB-type>java.lang.String</com.twofortyfouram.locale.intent.extra.BLURB-type>
<net.dinglisch.android.tasker.RELEVANT_VARIABLES>&lt;StringArray sr=""&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0&gt;%photos_photo_id()
Json Values
Values of the fields you got from the json text&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1&gt;%photos_photo_owner()
Json Values
Values of the fields you got from the json text&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES2&gt;%photos_photo_title()
Json Values
Values of the fields you got from the json text&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES2&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES3&gt;%photos_photo_url_l()
Json Values
Values of the fields you got from the json text&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES3&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES4&gt;%photos_photo_url_o()
Json Values
Values of the fields you got from the json text&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES4&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES5&gt;%err
Error Code
Only available if you select &amp;lt;b&amp;gt;Continue Task After Error&amp;lt;/b&amp;gt; and the action ends in error&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES5&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES6&gt;%errmsg
Error Message
Only available if you select &amp;lt;b&amp;gt;Continue Task After Error&amp;lt;/b&amp;gt; and the action ends in error&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES6&gt;&lt;/StringArray&gt;</net.dinglisch.android.tasker.RELEVANT_VARIABLES>
<net.dinglisch.android.tasker.RELEVANT_VARIABLES-type>[Ljava.lang.String;</net.dinglisch.android.tasker.RELEVANT_VARIABLES-type>
<net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS>Json Field Separator InputFormat plugininstanceid plugintypeid </net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS>
<net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS-type>java.lang.String</net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS-type>
<net.dinglisch.android.tasker.subbundled>true</net.dinglisch.android.tasker.subbundled>
<net.dinglisch.android.tasker.subbundled-type>java.lang.Boolean</net.dinglisch.android.tasker.subbundled-type>
<plugininstanceid>076f37fa-b9be-488a-801f-af5e97dd62a0</plugininstanceid>
<plugininstanceid-type>java.lang.String</plugininstanceid-type>
<plugintypeid>com.joaomgcd.autotools.intent.IntentJson</plugintypeid>
<plugintypeid-type>java.lang.String</plugintypeid-type>
</Vals>
</Bundle>
<Str sr="arg1" ve="3">com.joaomgcd.autotools</Str>
<Str sr="arg2" ve="3">com.joaomgcd.autotools.activity.ActivityConfigJson</Str>
<Int sr="arg3" val="60"/>
<ConditionList sr="if">
<Condition sr="c0" ve="3">
<lhs>%numberofphotos</lhs>
<op>8</op>
<rhs>0</rhs>
</Condition>
</ConditionList>
</Action>
<Action sr="act24" ve="7">
<code>547</code>
<label>Grab the total number of photos from the new worldwide search, so we can loop through them below (in case it was 0 before)</label>
<Str sr="arg0" ve="3">%numberofphotos</Str>
<Str sr="arg1" ve="3">%photos_photo_id(#)</Str>
<Int sr="arg2" val="0"/>
<Int sr="arg3" val="0"/>
</Action>
<Action sr="act25" ve="7">
<code>39</code>
<label>Build an array of Flickr Photo pages</label>
<Str sr="arg0" ve="3">%index</Str>
<Str sr="arg1" ve="3">1:%numberofphotos</Str>
</Action>
<Action sr="act26" ve="7">
<code>547</code>
<label>Assemble the website URL for the current photo...</label>
<Str sr="arg0" ve="3">%flickrphotourl</Str>
<Str sr="arg1" ve="3">https://www.flickr.com/photos/%photos_photo_owner(%index)/%photos_photo_id(%index) </Str>
<Int sr="arg2" val="0"/>
<Int sr="arg3" val="0"/>
</Action>
<Action sr="act27" ve="7">
<code>355</code>
<label>...and add the URL a new array</label>
<Str sr="arg0" ve="3">%photos_photo_flickrpage</Str>
<Int sr="arg1">
<var>%index</var>
</Int>
<Str sr="arg2" ve="3">%flickrphotourl</Str>
<Int sr="arg3" val="0"/>
</Action>
<Action sr="act28" ve="7">
<code>40</code>
</Action>
<Action sr="act29" ve="7">
<code>39</code>
<label>Build a new array of original file URLs</label>
<Str sr="arg0" ve="3">%index</Str>
<Str sr="arg1" ve="3">1:%numberofphotos</Str>
</Action>
<Action sr="act3" ve="7">
<code>547</code>
<label>#ProjectWeather Flickr Group ID</label>
<Str sr="arg0" ve="3">%projectweathergroupid</Str>
<Str sr="arg1" ve="3">1463451@N25</Str>
<Int sr="arg2" val="0"/>
<Int sr="arg3" val="0"/>
</Action>
<Action sr="act30" ve="7">
<code>355</code>
<label>Add the "original quality" URL if there is one...</label>
<Str sr="arg0" ve="3">%photos_photo_url</Str>
<Int sr="arg1">
<var>%index</var>
</Int>
<Str sr="arg2" ve="3">%photos_photo_url_o(%index)</Str>
<Int sr="arg3" val="0"/>
<ConditionList sr="if">
<Condition sr="c0" ve="3">
<lhs>%photos_photo_url_o(%index)</lhs>
<op>12</op>
<rhs></rhs>
</Condition>
</ConditionList>
</Action>
<Action sr="act31" ve="7">
<code>355</code>
<label>...or the "high quality" version if there isn't</label>
<Str sr="arg0" ve="3">%photos_photo_url</Str>
<Int sr="arg1">
<var>%index</var>
</Int>
<Str sr="arg2" ve="3">%photos_photo_url_l(%index)</Str>
<Int sr="arg3" val="0"/>
<ConditionList sr="if">
<Condition sr="c0" ve="3">
<lhs>%photos_photo_url_o(%index)</lhs>
<op>13</op>
<rhs></rhs>
</Condition>
</ConditionList>
</Action>
<Action sr="act32" ve="7">
<code>40</code>
</Action>
<Action sr="act33" ve="7">
<code>1508929357</code>
<label>Take all of the arrays and shuffle the order of the items, while still keeping the same order amongst them all</label>
<Bundle sr="arg0">
<Vals sr="val">
<ArraysFilter>&lt;null&gt;</ArraysFilter>
<ArraysFilter-type>java.lang.String</ArraysFilter-type>
<ArraysItemSeparator>,</ArraysItemSeparator>
<ArraysItemSeparator-type>java.lang.String</ArraysItemSeparator-type>
<ArraysUnique>false</ArraysUnique>
<ArraysUnique-type>java.lang.Boolean</ArraysUnique-type>
<InputArraysMan>%photos_photo_title(), %photos_photo_id(), %photos_photo_owner(), %photos_photo_url(), %photos_photo_flickrpage()</InputArraysMan>
<InputArraysMan-type>java.lang.String</InputArraysMan-type>
<InputIsFile>false</InputIsFile>
<InputIsFile-type>java.lang.Boolean</InputIsFile-type>
<JoinMergedArrays>&lt;null&gt;</JoinMergedArrays>
<JoinMergedArrays-type>java.lang.String</JoinMergedArrays-type>
<JoinOutputArray>&lt;null&gt;</JoinOutputArray>
<JoinOutputArray-type>java.lang.String</JoinOutputArray-type>
<MatchesCaseInsensitive>false</MatchesCaseInsensitive>
<MatchesCaseInsensitive-type>java.lang.Boolean</MatchesCaseInsensitive-type>
<MatchesContainsAll>false</MatchesContainsAll>
<MatchesContainsAll-type>java.lang.Boolean</MatchesContainsAll-type>
<MatchesExact>false</MatchesExact>
<MatchesExact-type>java.lang.Boolean</MatchesExact-type>
<MatchesRegex>false</MatchesRegex>
<MatchesRegex-type>java.lang.Boolean</MatchesRegex-type>
<MergeArrays>false</MergeArrays>
<MergeArrays-type>java.lang.Boolean</MergeArrays-type>
<MergeFormat>&lt;null&gt;</MergeFormat>
<MergeFormat-type>java.lang.String</MergeFormat-type>
<MergedArrayJoiner>&lt;null&gt;</MergedArrayJoiner>
<MergedArrayJoiner-type>java.lang.String</MergedArrayJoiner-type>
<MergedArrayName>atmergedarray</MergedArrayName>
<MergedArrayName-type>java.lang.String</MergedArrayName-type>
<OnlyNewClearForAll>false</OnlyNewClearForAll>
<OnlyNewClearForAll-type>java.lang.Boolean</OnlyNewClearForAll-type>
<OnlyNewClearForName>false</OnlyNewClearForName>
<OnlyNewClearForName-type>java.lang.Boolean</OnlyNewClearForName-type>
<OnlyNewName>&lt;null&gt;</OnlyNewName>
<OnlyNewName-type>java.lang.String</OnlyNewName-type>
<OutputSeparator>, </OutputSeparator>
<OutputSeparator-type>java.lang.String</OutputSeparator-type>
<PopPosition>&lt;null&gt;</PopPosition>
<PopPosition-type>java.lang.String</PopPosition-type>
<Push>&lt;null&gt;</Push>
<Push-type>java.lang.String</Push-type>
<PushPosition>&lt;null&gt;</PushPosition>
<PushPosition-type>java.lang.String</PushPosition-type>
<Randomize>true</Randomize>
<Randomize-type>java.lang.Boolean</Randomize-type>
<Separator>, </Separator>
<Separator-type>java.lang.String</Separator-type>
<SortArraysInvertMan>false</SortArraysInvertMan>
<SortArraysInvertMan-type>java.lang.Boolean</SortArraysInvertMan-type>
<SortArraysMan>false</SortArraysMan>
<SortArraysMan-type>java.lang.Boolean</SortArraysMan-type>
<SortArraysOutputNamesMan>photos_photo_title, photos_photo_id, photos_photo_owner, photos_photo_url, photos_photo_flickrpage</SortArraysOutputNamesMan>
<SortArraysOutputNamesMan-type>java.lang.String</SortArraysOutputNamesMan-type>
<VerticalMode>false</VerticalMode>
<VerticalMode-type>java.lang.Boolean</VerticalMode-type>
<com.twofortyfouram.locale.intent.extra.BLURB>Input Arrays: %photos_photo_title(), %photos_photo_id(), %photos_photo_owner(), %photos_photo_url(), %photos_photo_flickrpage()
Vertical Mode: false
Separator: ,
Item Separator: ,
Input Is File: false
Names: photos_photo_title, photos_photo_id, photos_photo_owner, photos_photo_url, photos_photo_flickrpage
Output Variables Separator: ,
Sort Arrays: false
Invert: false
Randomize: true
Merge Arrays: false
Merged Array Name: atmergedarray
Unique: false
Exact: false
Regex: false
Case Insensitive: false
Contains All: false
Clear For Name: false
Clear For All: false</com.twofortyfouram.locale.intent.extra.BLURB>
<com.twofortyfouram.locale.intent.extra.BLURB-type>java.lang.String</com.twofortyfouram.locale.intent.extra.BLURB-type>
<net.dinglisch.android.tasker.RELEVANT_VARIABLES>&lt;StringArray sr=""&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0&gt;%photos_photo_flickrpage()
photos_photo_flickrpage
photos_photo_flickrpage&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1&gt;%photos_photo_id()
photos_photo_id
photos_photo_id&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES2&gt;%photos_photo_owner()
photos_photo_owner
photos_photo_owner&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES2&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES3&gt;%photos_photo_title()
photos_photo_title
photos_photo_title&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES3&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES4&gt;%photos_photo_url()
photos_photo_url
photos_photo_url&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES4&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES5&gt;%err
Error Code
Only available if you select &amp;lt;b&amp;gt;Continue Task After Error&amp;lt;/b&amp;gt; and the action ends in error&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES5&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES6&gt;%errmsg
Error Message
Only available if you select &amp;lt;b&amp;gt;Continue Task After Error&amp;lt;/b&amp;gt; and the action ends in error&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES6&gt;&lt;/StringArray&gt;</net.dinglisch.android.tasker.RELEVANT_VARIABLES>
<net.dinglisch.android.tasker.RELEVANT_VARIABLES-type>[Ljava.lang.String;</net.dinglisch.android.tasker.RELEVANT_VARIABLES-type>
<net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS>InputArraysMan SortArraysOutputNamesMan OutputSeparator Separator MergedArrayName ArraysItemSeparator plugininstanceid plugintypeid </net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS>
<net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS-type>java.lang.String</net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS-type>
<net.dinglisch.android.tasker.subbundled>true</net.dinglisch.android.tasker.subbundled>
<net.dinglisch.android.tasker.subbundled-type>java.lang.Boolean</net.dinglisch.android.tasker.subbundled-type>
<plugininstanceid>f92aa461-cc34-41f1-b86b-f91e11a7d222</plugininstanceid>
<plugininstanceid-type>java.lang.String</plugininstanceid-type>
<plugintypeid>com.joaomgcd.autotools.intent.IntentSortArrays</plugintypeid>
<plugintypeid-type>java.lang.String</plugintypeid-type>
</Vals>
</Bundle>
<Str sr="arg1" ve="3">com.joaomgcd.autotools</Str>
<Str sr="arg2" ve="3">com.joaomgcd.autotools.activity.ActivityConfigSortArrays</Str>
<Int sr="arg3" val="60"/>
</Action>
<Action sr="act34" ve="7">
<code>1906260443</code>
<label>Send the URL and metadata off to Muzei</label>
<Bundle sr="arg0">
<Vals sr="val">
<com.twofortyfouram.locale.intent.extra.BLURB>Images: %photos_photo_url()
Titles: %photos_photo_title()
Subtexts: %byline
View URLs: %photos_photo_flickrpage()
Next Image: true
Schedule: 600</com.twofortyfouram.locale.intent.extra.BLURB>
<com.twofortyfouram.locale.intent.extra.BLURB-type>java.lang.String</com.twofortyfouram.locale.intent.extra.BLURB-type>
<net.dinglisch.android.tasker.RELEVANT_VARIABLES>&lt;StringArray sr=""&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0&gt;%err
Error Code
Only available if you select &amp;lt;b&amp;gt;Continue Task After Error&amp;lt;/b&amp;gt; and the action ends in error&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1&gt;%errmsg
Error Message
Only available if you select &amp;lt;b&amp;gt;Continue Task After Error&amp;lt;/b&amp;gt; and the action ends in error&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1&gt;&lt;/StringArray&gt;</net.dinglisch.android.tasker.RELEVANT_VARIABLES>
<net.dinglisch.android.tasker.RELEVANT_VARIABLES-type>[Ljava.lang.String;</net.dinglisch.android.tasker.RELEVANT_VARIABLES-type>
<net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS>parameters plugininstanceid plugintypeid </net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS>
<net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS-type>java.lang.String</net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS-type>
<net.dinglisch.android.tasker.subbundled>true</net.dinglisch.android.tasker.subbundled>
<net.dinglisch.android.tasker.subbundled-type>java.lang.Boolean</net.dinglisch.android.tasker.subbundled-type>
<parameters>{"muzeiImages":"#§£§£§@VARIABLE#§£§£§@%photos_photo_url()#§£§£§@VARIABLE#§£§£§@","muzeiNextArtwork":true,"muzeiSchedule":"600","muzeiSubtexts":"#§£§£§@VARIABLE#§£§£§@%byline#§£§£§@VARIABLE#§£§£§@","muzeiTitles":"#§£§£§@VARIABLE#§£§£§@%photos_photo_title()#§£§£§@VARIABLE#§£§£§@","muzeiViewUrls":"#§£§£§@VARIABLE#§£§£§@%photos_photo_flickrpage()#§£§£§@VARIABLE#§£§£§@"}</parameters>
<parameters-type>java.lang.String</parameters-type>
<plugininstanceid>52a75ba3-a3eb-45f8-9076-45dcb7c46c63</plugininstanceid>
<plugininstanceid-type>java.lang.String</plugininstanceid-type>
<plugintypeid>com.joaomgcd.autotools.intent.IntentMuzei</plugintypeid>
<plugintypeid-type>java.lang.String</plugintypeid-type>
</Vals>
</Bundle>
<Str sr="arg1" ve="3">com.joaomgcd.autotools</Str>
<Str sr="arg2" ve="3">com.joaomgcd.autotools.activity.ActivityConfigMuzei</Str>
<Int sr="arg3" val="60"/>
</Action>
<Action sr="act4" ve="7">
<code>902</code>
<Int sr="arg0" val="1"/>
<Int sr="arg1" val="15"/>
<Int sr="arg2" val="0"/>
<Int sr="arg3" val="0"/>
</Action>
<Action sr="act5" ve="7">
<code>590</code>
<label>Turn network LAT,LONG into two variables</label>
<Str sr="arg0" ve="3">%LOCN</Str>
<Str sr="arg1" ve="3">,</Str>
<Int sr="arg2" val="0"/>
</Action>
<Action sr="act6" ve="7">
<code>547</code>
<label>Change this to your Wunderground API Key</label>
<Str sr="arg0" ve="3">%WWFORECASTAPIKEY</Str>
<Str sr="arg1" ve="3">{Your Wunderground API Key}</Str>
<Int sr="arg2" val="0"/>
<Int sr="arg3" val="0"/>
</Action>
<Action sr="act7" ve="7">
<code>1446874931</code>
<label>Get the current weather condition at your location from Wunderground</label>
<Bundle sr="arg0">
<Vals sr="val">
<Average>&lt;null&gt;</Average>
<Average-type>java.lang.String</Average-type>
<Field>current_observation.icon</Field>
<Field-type>java.lang.String</Field-type>
<FilterInvert>false</FilterInvert>
<FilterInvert-type>java.lang.Boolean</FilterInvert-type>
<GetParentValues>false</GetParentValues>
<GetParentValues-type>java.lang.Boolean</GetParentValues-type>
<InputFormat>0</InputFormat>
<InputFormat-type>java.lang.String</InputFormat-type>
<JoinOutputArray>&lt;null&gt;</JoinOutputArray>
<JoinOutputArray-type>java.lang.String</JoinOutputArray-type>
<Json>https://api.wunderground.com/api/%WWFORECASTAPIKEY/conditions/q/%LOCN.json</Json>
<Json-type>java.lang.String</Json-type>
<JsonRootVariable>&lt;null&gt;</JsonRootVariable>
<JsonRootVariable-type>java.lang.String</JsonRootVariable-type>
<MatchField>&lt;null&gt;</MatchField>
<MatchField-type>java.lang.String</MatchField-type>
<MatchValue>&lt;null&gt;</MatchValue>
<MatchValue-type>java.lang.String</MatchValue-type>
<MatchesCaseInsensitive>false</MatchesCaseInsensitive>
<MatchesCaseInsensitive-type>java.lang.Boolean</MatchesCaseInsensitive-type>
<MatchesContainsAll>false</MatchesContainsAll>
<MatchesContainsAll-type>java.lang.Boolean</MatchesContainsAll-type>
<MatchesExact>false</MatchesExact>
<MatchesExact-type>java.lang.Boolean</MatchesExact-type>
<MatchesRegex>false</MatchesRegex>
<MatchesRegex-type>java.lang.Boolean</MatchesRegex-type>
<Max>&lt;null&gt;</Max>
<Max-type>java.lang.String</Max-type>
<MaxResults>&lt;null&gt;</MaxResults>
<MaxResults-type>java.lang.String</MaxResults-type>
<Min>&lt;null&gt;</Min>
<Min-type>java.lang.String</Min-type>
<Query>&lt;null&gt;</Query>
<Query-type>java.lang.String</Query-type>
<Separator>,</Separator>
<Separator-type>java.lang.String</Separator-type>
<SimpleMode>false</SimpleMode>
<SimpleMode-type>java.lang.Boolean</SimpleMode-type>
<SortArrayInvert>false</SortArrayInvert>
<SortArrayInvert-type>java.lang.Boolean</SortArrayInvert-type>
<SortArrayKey>&lt;null&gt;</SortArrayKey>
<SortArrayKey-type>java.lang.String</SortArrayKey-type>
<SortArrayObjectKey>&lt;null&gt;</SortArrayObjectKey>
<SortArrayObjectKey-type>java.lang.String</SortArrayObjectKey-type>
<Sum>&lt;null&gt;</Sum>
<Sum-type>java.lang.String</Sum-type>
<VariableName>forecastcondition</VariableName>
<VariableName-type>java.lang.String</VariableName-type>
<com.twofortyfouram.locale.intent.extra.BLURB>Input Format: Json
Json: https://api.wunderground.com/api/%WWFORECASTAPIKEY/conditions/q/%LOCN.json
Fields: current_observation.icon
Sort Array Invert: false
Get Parent Values: false
Variable Name: forecastcondition
Separator: ,</com.twofortyfouram.locale.intent.extra.BLURB>
<com.twofortyfouram.locale.intent.extra.BLURB-type>java.lang.String</com.twofortyfouram.locale.intent.extra.BLURB-type>
<net.dinglisch.android.tasker.RELEVANT_VARIABLES>&lt;StringArray sr=""&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0&gt;%forecastcondition
Json Values
Values of the fields you got from the json text&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1&gt;%err
Error Code
Only available if you select &amp;lt;b&amp;gt;Continue Task After Error&amp;lt;/b&amp;gt; and the action ends in error&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1&gt;&lt;_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES2&gt;%errmsg
Error Message
Only available if you select &amp;lt;b&amp;gt;Continue Task After Error&amp;lt;/b&amp;gt; and the action ends in error&lt;/_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES2&gt;&lt;/StringArray&gt;</net.dinglisch.android.tasker.RELEVANT_VARIABLES>
<net.dinglisch.android.tasker.RELEVANT_VARIABLES-type>[Ljava.lang.String;</net.dinglisch.android.tasker.RELEVANT_VARIABLES-type>
<net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS>Json Field VariableName Separator InputFormat plugininstanceid plugintypeid </net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS>
<net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS-type>java.lang.String</net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS-type>
<net.dinglisch.android.tasker.subbundled>true</net.dinglisch.android.tasker.subbundled>
<net.dinglisch.android.tasker.subbundled-type>java.lang.Boolean</net.dinglisch.android.tasker.subbundled-type>
<plugininstanceid>c29bd9dd-53ee-47cb-839b-871a1c3c5e90</plugininstanceid>
<plugininstanceid-type>java.lang.String</plugininstanceid-type>
<plugintypeid>com.joaomgcd.autotools.intent.IntentJson</plugintypeid>
<plugintypeid-type>java.lang.String</plugintypeid-type>
</Vals>
</Bundle>
<Str sr="arg1" ve="3">com.joaomgcd.autotools</Str>
<Str sr="arg2" ve="3">com.joaomgcd.autotools.activity.ActivityConfigJson</Str>
<Int sr="arg3" val="60"/>
</Action>
<Action sr="act8" ve="7">
<code>547</code>
<label>There aren't many pictures that match "tstorms", so correct to "storms" if that is the condition</label>
<Str sr="arg0" ve="3">%forecastcondition</Str>
<Str sr="arg1" ve="3">storms</Str>
<Int sr="arg2" val="0"/>
<Int sr="arg3" val="0"/>
<ConditionList sr="if">
<Condition sr="c0" ve="3">
<lhs>%forecastcondition</lhs>
<op>2</op>
<rhs>tstorms</rhs>
</Condition>
</ConditionList>
</Action>
<Action sr="act9" ve="7">
<code>547</code>
<Str sr="arg0" ve="3">%forecastconditionemoji</Str>
<Str sr="arg1" ve="3">☀️</Str>
<Int sr="arg2" val="0"/>
<Int sr="arg3" val="0"/>
<ConditionList sr="if">
<bool0>Or</bool0>
<Condition sr="c0" ve="3">
<lhs>%forecastcondition</lhs>
<op>2</op>
<rhs>*clear*</rhs>
</Condition>
<Condition sr="c1" ve="3">
<lhs>%forecastcondition</lhs>
<op>2</op>
<rhs>*sunny*</rhs>
</Condition>
</ConditionList>
</Action>
</Task>
</TaskerData>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment