From 2eb41c2b509ddd1bd7955e870c7c1ec6912838b9 Mon Sep 17 00:00:00 2001 From: Yibo Date: Thu, 2 Feb 2017 06:09:38 -0500 Subject: [PATCH] Initial commit --- .gitignore | 29 +++ README.md | 14 ++ src/2EE2D13E-E479-467D-99DE-44CBBC0F286A.png | Bin 0 -> 15041 bytes src/696B119B-EF74-41B2-B41A-8F3C29EE8311.png | Bin 0 -> 15041 bytes src/aqi.py | 98 ++++++++++ src/aqi_index_scale_color/Good.png | Bin 0 -> 359 bytes src/aqi_index_scale_color/Hazardous.png | Bin 0 -> 359 bytes src/aqi_index_scale_color/Moderate.png | Bin 0 -> 359 bytes .../Unhealthy For Sensitive Group.png | Bin 0 -> 359 bytes src/aqi_index_scale_color/Unhealthy.png | Bin 0 -> 359 bytes src/aqi_index_scale_color/Very Unhealthy.png | Bin 0 -> 359 bytes src/aqistation.py | 117 +++++++++++ src/config.py | 1 + src/icon.png | Bin 0 -> 15041 bytes src/info.plist | 185 ++++++++++++++++++ 15 files changed, 444 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 src/2EE2D13E-E479-467D-99DE-44CBBC0F286A.png create mode 100644 src/696B119B-EF74-41B2-B41A-8F3C29EE8311.png create mode 100644 src/aqi.py create mode 100644 src/aqi_index_scale_color/Good.png create mode 100644 src/aqi_index_scale_color/Hazardous.png create mode 100644 src/aqi_index_scale_color/Moderate.png create mode 100644 src/aqi_index_scale_color/Unhealthy For Sensitive Group.png create mode 100644 src/aqi_index_scale_color/Unhealthy.png create mode 100644 src/aqi_index_scale_color/Very Unhealthy.png create mode 100755 src/aqistation.py create mode 100644 src/config.py create mode 100644 src/icon.png create mode 100644 src/info.plist diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..786ec95 --- /dev/null +++ b/.gitignore @@ -0,0 +1,29 @@ +*.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +#stations cache database +.sqlite diff --git a/README.md b/README.md new file mode 100644 index 0000000..b632b09 --- /dev/null +++ b/README.md @@ -0,0 +1,14 @@ +# AQI Alfred Workflow + +## Setup +- Get your own aqicn.org token at (http://aqicn.org/data-platform/token/)[http://aqicn.org/data-platform/token/] +- In AQI Alfred Workflow's script filter, replace ```API_KEY``` with the token you got + +## Use +- ```aqi```: get current city's AQI + +- ```aqistation ``` to get AQI of all stations containing + +- While focused on the item + - ```Shift```: preview the AQI page + - ```Enter```: go to the AQI page diff --git a/src/2EE2D13E-E479-467D-99DE-44CBBC0F286A.png b/src/2EE2D13E-E479-467D-99DE-44CBBC0F286A.png new file mode 100644 index 0000000000000000000000000000000000000000..df4ed4db9b82fd830a1337a35ef593697fe18cdd GIT binary patch literal 15041 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 literal 0 HcmV?d00001 diff --git a/src/696B119B-EF74-41B2-B41A-8F3C29EE8311.png b/src/696B119B-EF74-41B2-B41A-8F3C29EE8311.png new file mode 100644 index 0000000000000000000000000000000000000000..df4ed4db9b82fd830a1337a35ef593697fe18cdd GIT binary patch literal 15041 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 literal 0 HcmV?d00001 diff --git a/src/aqi.py b/src/aqi.py new file mode 100644 index 0000000..5ad9746 --- /dev/null +++ b/src/aqi.py @@ -0,0 +1,98 @@ +import sys +import json +import requests +import requests_cache + +API_KEY = sys.argv[1] + +items = [] + +def get_aqi_by_ip(): + url_format = 'https://api.waqi.info/feed/here/?token={0}' + url = url_format.format(API_KEY) + + with requests_cache.disabled(): + response = requests.get(url) + + if response.json()['status'] == 'ok': + data = response.json()['data'] + + aqi_index = data['aqi'] + update_time = data['time']['s'] + timezone = data['time']['tz'] + url = data['city']['url'] + city_name = data['city']['name'] + + if aqi_index != '-': + aqi_result = [aqi_index, update_time, timezone, url, city_name] + else: + aqi_result = [0, update_time, timezone, url, city_name] + return aqi_result + else: + print(json.dumps({"items": [{"title": "Error", "subtitle": data}]})) + +def main(): + requests_cache.install_cache( + 'stations_cache', + backend='sqlite', + expire_after=1296000 + ) + + aqi_result = get_aqi_by_ip() + + aqi_index = aqi_result[0] + aqi_description = get_aqi_description(aqi_index) + + update_time = aqi_result[1] + timezone = aqi_result[2] + url = aqi_result[3] + city_name = aqi_result[4] + + #To-DO: UnicodeEncodeError station_name + # title = "[{0}] {1}".format(str(aqi_index), station_name) + + title = str(aqi_index) + " @ " + city_name + + subtitle = "{0}, {1} GMT{2}"\ + .format(aqi_description, update_time, timezone) + + icon = {"type": "png", "path": "aqi_index_scale_color/"\ + + aqi_description + ".png"} + + add_item(title, subtitle, icon, url) + + alfred_item_string = {"items": items} + print(json.dumps(alfred_item_string)) + + +def get_aqi_description(aqi_index): + if aqi_index < 51: + return 'Good' + elif aqi_index < 101 and aqi_index > 50: + return 'Moderate' + elif aqi_index < 151 and aqi_index > 100: + return 'Unhealthy For Sensitive Group' + elif aqi_index < 201 and aqi_index > 150: + return 'Unhealthy' + elif aqi_index < 251 and aqi_index > 200: + return 'Very Unhealthy' + elif aqi_index < 300 and aqi_index > 250: + return 'Hazardous' + + +def add_item(title, subtitle, icon, url): + item = { + "uid": 'aqi', + "title": title, + "subtitle": subtitle, + "icon": icon, + "quicklookurl": url, + "valid": True, + "arg": url + } + items.append(item) + return item + + +if __name__ == '__main__': + main() diff --git a/src/aqi_index_scale_color/Good.png b/src/aqi_index_scale_color/Good.png new file mode 100644 index 0000000000000000000000000000000000000000..648420d2a216ee658dcf6bbad51c2457b60990fb GIT binary patch literal 359 zcmeAS@N?(olHy`uVBq!ia0y~yVAKI&MrNRh^JW<{AjKBo6XL4W6%0g2wZ8WNMK}vQ zB8wRq_>O=u<5X=vX`miBney(Cmr$6PuqOBHr4^iU zjiPZc6Xt06cKz2r<{@+c;W<|(pm8AZ=U(jj@V(!^x-Or6FHLiG%{R5@yUe_1U!J$@ zX;4X6vNl_`$nuR6-X|4Xf{OIiUhmUx$yjq}e$rRlsWp+B|&$dcklc@chXTL)+m&<))UG;6B!@s^QGwS&C!hA{GlgKl(-kkq+V(-+u xxn955+=yMiI_~!`rQ*w{zs!Yrg5iUG4dZlcjW5PWeoX=idAjPt! literal 0 HcmV?d00001 diff --git a/src/aqi_index_scale_color/Hazardous.png b/src/aqi_index_scale_color/Hazardous.png new file mode 100644 index 0000000000000000000000000000000000000000..de051170cfdf48c8d7a5bd8ee5291a804677b2f4 GIT binary patch literal 359 zcmeAS@N?(olHy`uVBq!ia0y~yVAKI&MrNRh^JW<{AjKBo6XKf5AO%GHF_FbU5zYb+ z5Y2Z4gc+x5^GO5suzR{VhGaCpy=0xotSHj@klBs%sK}IehrEQs#Dq1uXD_YbjB6B) zdzmmt!?)|d_Aw8c`w!2#G69VPfj{?R&xh~*{?&E)?0adNt82cgJ>O;KHT&|sWlw`j z!jiSwvPG6}l<+>O*b-Evr}lcEc1y;ZL-Uiq+9t35lk&5Y`{s{L^LZOlDVbF(%oyjb~}lkCY~IXjQ%tZ|P%?zUV_wp^;(r#iB|ePh_$!ZmZ> zDlD_pF@LsI>Y7CD-#q&rin(0w8|$iX`yBrDZJANWrx)f+;+{mFnf2!UuM>Nx-p%#; uz2-*j^3`#_e<>ATKK*4b#1jl3>}wdOTWfqVKJsf4NXXOG&t;ucLK6V943f(L literal 0 HcmV?d00001 diff --git a/src/aqi_index_scale_color/Moderate.png b/src/aqi_index_scale_color/Moderate.png new file mode 100644 index 0000000000000000000000000000000000000000..488c08122057ccb568ed5737fbe5a7c4f7400dbd GIT binary patch literal 359 zcmeAS@N?(olHy`uVBq!ia0y~yVAKI&MrNRh^JW<{AjKBo6XN>!rUnq1M$6v=if|Tq zL>4nJ@ErkR#;MwT(m*}zo-U3d8I5l*S?4h;inKmtcH=xMGUeSNFQG6oVNLGYODj0z z8b#w?Cd|?B?fS2M%tPk>!*i}oK;uB*&%N05;d{S-bzMIDUYh3Wnr~{)cbR$3zC3T) z)1Z>DWNo%=k>wjDyiY2&1QqG2z22wYlCkE{{G_k8$*cdQ{H)}@`D4?3pVe#5yZYFQ zMa!R_A-VCvEBk31bC1;Atc?mUR(|Frd-7M#&f__2+@p`XEmxB*m#X%uj%;t=81}Ys z&D^&N%j|T_pKX=8CQepy6W3Lhkt!rX4LWNh53@WCy{4ny*dBu#NMfQ xbG?4Axe>d3b=>b?O2wB?f0+yM1j7gW8pi3?8efc${F($3@^tlcS?83{1OUQ?mKOj3 literal 0 HcmV?d00001 diff --git a/src/aqi_index_scale_color/Unhealthy For Sensitive Group.png b/src/aqi_index_scale_color/Unhealthy For Sensitive Group.png new file mode 100644 index 0000000000000000000000000000000000000000..1e10050aa4a486851dd718c6b46e6b1a3d6e0f2c GIT binary patch literal 359 zcmeAS@N?(olHy`uVBq!ia0y~yVAKI&MrNRh^JW<{AjKBo6XN=#T^)!xW;qxFMK}vQ zB8wRq_>O=u<5X=vX`miBney(Cmr$6PuqOBHr4^iU zjiPZc6Xt06cKz2r<{@+c;W<|(pm8AZ=U(jj@V(!^x-Or6FHLiG%{R5@yUe_1U!J$@ zX;4X6vNl_`$nuR6-X|4Xf{OIiUhmUx$yjq}e$rRlsWp+B|&$dcklc@chXTL)+m&<))UG;6B!@s^QGwS&C!hA{GlgKl(-kkq+V(-+u xxn955+=yMiI_~!`rQ*w{zs!Yrg5iUG4dZlcjW5PWeoX=idAjO=u<5X=vX`miBney(Cmr$6PuqOBHr4^iU zjiPZc6Xt06cKz2r<{@+c;W<|(pm8AZ=U(jj@V(!^x-Or6FHLiG%{R5@yUe_1U!J$@ zX;4X6vNl_`$nuR6-X|4Xf{OIiUhmUx$yjq}e$rRlsWp+B|&$dcklc@chXTL)+m&<))UG;6B!@s^QGwS&C!hA{GlgKl(-kkq+V(-+u xxn955+=yMiI_~!`rQ*w{zs!Yrg5iUG4dZlcjW5PWeoX=idAj 50: + return 'Moderate' + elif aqi_index < 151 and aqi_index > 100: + return 'Unhealthy For Sensitive Group' + elif aqi_index < 201 and aqi_index > 150: + return 'Unhealthy' + elif aqi_index < 251 and aqi_index > 200: + return 'Very Unhealthy' + elif aqi_index < 300 and aqi_index > 250: + return 'Hazardous' + + +def add_item(title, subtitle, icon, url): + item = { + "title": title, + "subtitle": subtitle, + "icon": icon, + "quicklookurl": url, + "valid": True, + "arg": url + } + items.append(item) + return item + + +if __name__ == '__main__': + main() diff --git a/src/config.py b/src/config.py new file mode 100644 index 0000000..0933d1e --- /dev/null +++ b/src/config.py @@ -0,0 +1 @@ +API_KEY = 'eca2ecd094bbe2b5dabfa2ea201ea9cd577f0403' diff --git a/src/icon.png b/src/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..df4ed4db9b82fd830a1337a35ef593697fe18cdd GIT binary patch literal 15041 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 literal 0 HcmV?d00001 diff --git a/src/info.plist b/src/info.plist new file mode 100644 index 0000000..c5c8672 --- /dev/null +++ b/src/info.plist @@ -0,0 +1,185 @@ + + + + + bundleid + yibo.alfredworkflow.aqi + category + Tools + connections + + 2EE2D13E-E479-467D-99DE-44CBBC0F286A + + + destinationuid + 774C99D4-62DA-4290-9F14-23BE1BC8DA2A + modifiers + 0 + modifiersubtext + + vitoclose + + + + 696B119B-EF74-41B2-B41A-8F3C29EE8311 + + + destinationuid + 774C99D4-62DA-4290-9F14-23BE1BC8DA2A + modifiers + 0 + modifiersubtext + + vitoclose + + + + + createdby + yibo.xu.dev@gmail.com + description + Get AQI stations' current AQI + disabled + + name + Air Quality Index + objects + + + config + + alfredfiltersresults + + argumenttype + 0 + escaping + 0 + keyword + aqistation + queuedelaycustom + 2 + queuedelayimmediatelyinitially + + queuedelaymode + 2 + queuemode + 2 + runningsubtext + Getting current AQI of station name containing '{query}'... + script + python aqistation.py "{query}" "API_KEY" + scriptargtype + 0 + scriptfile + + subtext + + title + AQI + type + 5 + withspace + + + type + alfred.workflow.input.scriptfilter + uid + 2EE2D13E-E479-467D-99DE-44CBBC0F286A + version + 2 + + + config + + browser + + spaces + + url + {query} + utf8 + + + type + alfred.workflow.action.openurl + uid + 774C99D4-62DA-4290-9F14-23BE1BC8DA2A + version + 1 + + + config + + alfredfiltersresults + + argumenttype + 2 + escaping + 0 + keyword + aqi + queuedelaycustom + 2 + queuedelayimmediatelyinitially + + queuedelaymode + 2 + queuemode + 2 + runningsubtext + Getting current city's AQI... + script + python aqi.py "API_KEY" + scriptargtype + 0 + scriptfile + + subtext + Get current city's AQI + title + AQI + type + 5 + withspace + + + type + alfred.workflow.input.scriptfilter + uid + 696B119B-EF74-41B2-B41A-8F3C29EE8311 + version + 2 + + + readme + + uidata + + 2EE2D13E-E479-467D-99DE-44CBBC0F286A + + xpos + 30 + ypos + 50 + + 696B119B-EF74-41B2-B41A-8F3C29EE8311 + + xpos + 30 + ypos + 220 + + 774C99D4-62DA-4290-9F14-23BE1BC8DA2A + + xpos + 310 + ypos + 130 + + + version + 0.1.0 + webaddress + + +