{"id":19701332,"url":"https://github.com/ddamato/deltazeus","last_synced_at":"2026-06-07T22:34:14.062Z","repository":{"id":42299041,"uuid":"236134785","full_name":"ddamato/deltazeus","owner":"ddamato","description":"Changing the weather","archived":false,"fork":false,"pushed_at":"2025-09-16T16:31:17.000Z","size":1095,"stargazers_count":1,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-16T19:17:15.900Z","etag":null,"topics":["feed","feed-link","serverless","weather"],"latest_commit_sha":null,"homepage":"https://deltazeus.com","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ddamato.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-01-25T06:32:10.000Z","updated_at":"2025-09-16T16:31:21.000Z","dependencies_parsed_at":"2025-08-30T13:08:15.345Z","dependency_job_id":"a663a613-9a5b-49ed-bc0a-51855f92c498","html_url":"https://github.com/ddamato/deltazeus","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ddamato/deltazeus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddamato%2Fdeltazeus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddamato%2Fdeltazeus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddamato%2Fdeltazeus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddamato%2Fdeltazeus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ddamato","download_url":"https://codeload.github.com/ddamato/deltazeus/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddamato%2Fdeltazeus/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34041087,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-07T02:00:07.652Z","response_time":124,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["feed","feed-link","serverless","weather"],"created_at":"2024-11-11T21:08:37.328Z","updated_at":"2026-06-07T22:34:14.057Z","avatar_url":"https://github.com/ddamato.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# deltazeus\n\n## API\n\n- `/api/location`, allows a user to enter a `q` param and returns an array of results which include a `lat`, `lon`, and `tzOffset`. After selected, this data is used to create or reference an existing `.xml` feed.\n- `/feeds`, a POST with the aforementioned data will either create or reference an existing feed, finally redirecting to the feed URL which should be subscribed in some service such as [IFTTT](https://ifttt.com/), [Zapier](https://zapier.com/), or any [RSS reader](https://en.wikipedia.org/wiki/Comparison_of_feed_aggregators).\n- `/feeds/\u003cfeedId\u003e`, a GET to an existing feed will show the `.xml` file of the feed at the `\u003cfeedId\u003e` composed as `lat_lon` with a single decimal place of precision for each.\n\n## Cron\n\nOn an hourly basis, the cron will:\n- Get a reference to all feeds where the location would be 5am.\n- If the feed has not been requested in 5 days, it is deleted.\n- If it is still active:\n  - We query yesterday and today's weather for that location.\n  - We compare Average Temperature, Maximum Wind Speed, Total Precipitation, Average Humidity, and UV Index between the days.\n  - If any of the differences are \"significant\" (determined by a lookup), entries are written into the related feeds.\n  \n## Track\n\nIn order to keep track of active feeds, helper functions are provided from `track.js`\n- `create(tzOffset, feedId)` is used on the `/feeds` POST request if the feed doesn't yet exist.\n- `update(feedId)` is used on each `/feeds/\u003cfeedId\u003e` request.\n- `get(tzOffset)` returns all of the feeds that match the given timezone offset. This is used for the cron.\n- `remove(feedId)` removes the feed from tracking. Occurs during the cron when determining which feeds are active.\n\n## FeedXml\n\nThe `FeedXml` constructor exported from `xml.js` handles all xml-related needs. When instantiated, storage is called which is why the call expects an `await`.\n\n```js\n// Throws if the feed doesn't exist.\nconst feed = await new FeedXml(feedId);\n```\n\nImportantly, there's two arguments here. The second argument is a flag that determines if we expect to create a feed if it doesn't exist. This is important since hitting the `/feeds/\u003cfeedId\u003e` also instantiates a `new FeedXml` and _could_ create a new file even if it wasn't meant to exist.\n\n```js\n// Create the feed if it doesn't exist.\nconst feed = await new FeedXml(feedId, true)\n```\n\nThe main methods used on the instance are:\n- `feed.xml` returns the XML string, used for responses.\n- `feed.addItem(item)` adds the item to the feed. This also writes the updated `feed.xml` into storage.\n- ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fddamato%2Fdeltazeus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fddamato%2Fdeltazeus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fddamato%2Fdeltazeus/lists"}