{"id":18495383,"url":"https://github.com/victrme/racle-meteo","last_synced_at":"2025-08-14T00:19:06.212Z","repository":{"id":259410222,"uuid":"836807453","full_name":"victrme/racle-meteo","owner":"victrme","description":"This service cleverly transforms weather web pages into a usable (and free!) rest API","archived":false,"fork":false,"pushed_at":"2025-07-11T04:59:04.000Z","size":196,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-11T08:44:59.457Z","etag":null,"topics":["cloudflare-worker","deno","jsdoc","rest-api","weather"],"latest_commit_sha":null,"homepage":"https://racle-meteo.victr.workers.dev/","language":"TypeScript","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/victrme.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2024-08-01T15:44:10.000Z","updated_at":"2025-07-11T04:59:08.000Z","dependencies_parsed_at":"2024-10-25T06:23:36.782Z","dependency_job_id":"064ec3c5-873b-42a0-b820-4261e5644627","html_url":"https://github.com/victrme/racle-meteo","commit_stats":null,"previous_names":["victrme/racle-meteo"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/victrme/racle-meteo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/victrme%2Fracle-meteo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/victrme%2Fracle-meteo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/victrme%2Fracle-meteo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/victrme%2Fracle-meteo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/victrme","download_url":"https://codeload.github.com/victrme/racle-meteo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/victrme%2Fracle-meteo/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270338403,"owners_count":24567109,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-13T02:00:09.904Z","response_time":66,"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":["cloudflare-worker","deno","jsdoc","rest-api","weather"],"created_at":"2024-11-06T13:24:34.224Z","updated_at":"2025-08-14T00:19:06.167Z","avatar_url":"https://github.com/victrme.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Racle météo\n\nThis service cleverly transforms weather web pages into a usable (and free!) rest API. It uses [accuweather](https://accuweather.com) and/or\n[foreca](https://foreca.com) under the hood.\n\n- Sturdy: Uses other providers as fallback to guarentee a response if a provider becomes invalid\n- Flexible: Easy to update with strong typing and htmlparser2 as basic parser\n- Compatible: Pure typescript using deno and small dependencies means you can install it almost anywhere\n\n## Install\n\nDeploy a [Cloudflare Worker](https://developers.cloudflare.com/workers/) to start using your own racle-meteo. You do not need any API key.\nMigrating to another cloud provider or your own server will remove the automatic location.\n\nA slimmed-down version of [htmlparser2 10.0.0](https://github.com/fb55/htmlparser2/) is included. No dependency installation is needed.\n\n```bash\ndeno task dev\n# Task dev npx wrangler dev\n# ⎔ Starting local server...\n# [wrangler:inf] Ready on http://localhost:8787\n\ndeno task deploy\n# Task deploy npx wrangler deploy\n# Total Upload: 179.64 KiB / gzip: 60.84 KiB\n# Uploaded racle-meteo (25.80 sec)\n\ndeno task test\n# ok | 4 passed | 0 failed (3s)\n```\n\n## Use\n\nDefine a weather provider to start using the API.\n\n### Parameters\n\n| Parameter | Type                                      | Required | Description                                                                                                                                  |\n| --------- | ----------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------- |\n| provider  | accuweather, foreca, ~~weathercom~~, auto | required | Choose the weather provider. \"Auto\" returns \"simple\" data, specific providers returns all, see \"data\".                                       |\n| geo       | any                                       | optional | Geo returns a list of found locations.                                                                                                       |\n| query, q  | string                                    | optional | Matches a location based on your query. Best to use as \"City,CountryCode\". Adding \"query\" overrides \"lat\" \u0026 \"lon\" parameters.                |\n| lat       | string                                    | optional | Location latitude.                                                                                                                           |\n| lon       | string                                    | optional | Location longitude.                                                                                                                          |\n| lang      | string                                    | optional | English by default. Some languages are only available on accuweather, see language list below. Incorrect `lang` fallback to english.         |\n| unit      | C, F                                      | optional | Useful for accuweather or when using \"simple\" data. Foreca always returns celsius and farenheit.                                             |\n| data      | all, simple                               | optional | Select \"all\" to retrieve all the data from the provider's webpage. \"simple\" returns only data available for all providers. \"all\" by default. |\n| debug     | nodes, content                            | optional | Debugging \"nodes\" returns a list of found html tags. \"content\" shows strings collected before being manipulated.                             |\n\n## Response example\n\n### Query\n\n| provider | lang | unit | data   |\n| -------- | ---- | ---- | ------ |\n| foreca   | fr   | C    | simple |\n\n#### Response\n\n```jsonc\n{\n  \"meta\": {\n    \"url\": \"https://www.foreca.com/en/102988507/Paris\",\n    \"lang\": \"en\",\n    \"provider\": \"foreca\"\n  },\n  \"geo\": {\n    \"lat\": 48.853,\n    \"lon\": 2.348,\n    \"city\": \"Paris\",\n    \"country\": \"FR\"\n  },\n  \"now\": {\n    \"icon\": \"rain\",\n    \"description\": \"Overcast and rain\",\n    \"temp\": 13,\n    \"feels\": 13\n  },\n  \"sun\": {\n    \"rise\": [8, 7],\n    \"set\": [19, 5]\n  },\n  \"daily\": [\n    { \"time\": \"2024-10-12T11:00:00.000Z\", \"high\": 16, \"low\": 13 },\n    { \"time\": \"2024-10-13T11:00:00.000Z\", \"high\": 14, \"low\": 10 }\n    // ...\n  ]\n}\n```\n\n## Simple icon equivalences\n\n- Accuweather: https://developer.accuweather.com/weather-icons\n- Foreca: https://developer.foreca.com/resources\n\nAs a union:\n\n```plaintext\nclearsky | fewclouds | brokenclouds | overcastclouds | sunnyrain | lightrain | rain | thunderstorm | snow | mist\n```\n\nEquivalence between other providers:\n\n```jsonc\n{\n  \"clearsky\": {\n    \"accuweather\": \"1, 2, 33, 34\",\n    \"foreca\": \"d000, d100, n000, n100\"\n  },\n  \"fewclouds\": {\n    \"accuweather\": \"3, 4, 5, 35, 36, 37\",\n    \"foreca\": \"d200, d500, n200, n500\"\n  },\n  \"brokenclouds\": {\n    \"accuweather\": \"6, 7, 38\",\n    \"foreca\": \"d300, n300\"\n  },\n  \"overcastclouds\": {\n    \"accuweather\": \"8\",\n    \"foreca\": \"d400, n400\"\n  },\n  \"sunnyrain\": {\n    \"accuweather\": \"14, 17\",\n    \"foreca\": \"d210, n210\"\n  },\n  \"lightrain\": {\n    \"accuweather\": \"12, 13, 39\",\n    \"foreca\": \"d310, d410, d240, n310, n410, n240\"\n  },\n  \"rain\": {\n    \"accuweather\": \"18, 19, 29, 40\",\n    \"foreca\": \"d320, d420, d430, n320, n420, n430\"\n  },\n  \"thunderstorm\": {\n    \"accuweather\": \"15, 16, 41, 42\",\n    \"foreca\": \"d340, d440, n340, n440\"\n  },\n  \"snow\": {\n    \"accuweather\": \"20, 21, 22, 23, 24, 25, 26, 43, 44\",\n    \"foreca\": \"d221, d311, d411, d221, d321, d431, d212, d312, d412, d222, d322, d422, d432, n221, n311, n411, n221, n321, n431, n212, n312, n412, n222, n322, n422, n432\"\n  },\n  \"mist\": {\n    \"accuweather\": \"11\",\n    \"foreca\": \"d600, n600\"\n  }\n}\n```\n\n## Languages available\n\nLanguage codes are following the ISO-639 standard. A wrong language throws an error. Sanitized so that:\n\n- `lang` is case insensitive\n- `-` or `_` works\n- `pt` resolves to `pt-pt`\n- localization (-XX) is removed with `foreca`\n\n| code  | name                    | foreca | accuweather |\n| ----- | ----------------------- | ------ | ----------- |\n| en    | English                 | true   | true        |\n| es    | Español                 | true   | true        |\n| fr    | Français                | true   | true        |\n| da    | Dansk                   | true   | true        |\n| pt-pt | Português               |        | true        |\n| nl    | Nederlands              | true   | true        |\n| no    | Norsk                   |        | true        |\n| it    | Italiano                | true   | true        |\n| de    | Deutsch                 | true   | true        |\n| sv    | Svenska                 | true   | true        |\n| fi    | Suomi                   |        | true        |\n| zh-hk | 中文 (HK)               |        | true        |\n| zh-cn | 中文 (SIM)              |        | true        |\n| zh-tw | 中文 (Taiwan)           |        | true        |\n| es-ar | Español (Argentina)     |        | true        |\n| es-mx | Español (Latin America) |        | true        |\n| sk    | Slovenčinu              | true   | true        |\n| ro    | Romana                  | true   | true        |\n| cs    | Čeština                 | true   | true        |\n| hu    | Magyar                  | true   | true        |\n| pl    | Polski                  | true   | true        |\n| ca    | Català                  |        | true        |\n| pt-br | Português (Brazil)      |        | true        |\n| hi    | हिन्दी                   |        | true        |\n| ru    | русский                 | true   | true        |\n| ar    | عربي                    |        | true        |\n| el    | Ελληνικά                | true   | true        |\n| en-gb | English (UK)            |        | true        |\n| ja    | 日本語                  |        | true        |\n| ko    | 한국어                  |        | true        |\n| tr    | TÜRKÇE                  |        | true        |\n| fr-ca | Français (Canada)       |        | true        |\n| he    | עברית                   |        | true        |\n| sl    | Slovenski               |        | true        |\n| uk    | Українське              | true   | true        |\n| id    | Bahasa Indonesia        |        | true        |\n| bg    | български               | true   | true        |\n| et    | Eesti keeles            | true   | true        |\n| hr    | Hrvatski                | true   | true        |\n| kk    | Қазақша                 |        | true        |\n| lt    | Lietuvių                |        | true        |\n| lv    | Latviski                | true   | true        |\n| mk    | Македонски              |        | true        |\n| ms    | Bahasa Melayu           |        | true        |\n| tl    | Tagalog                 |        | true        |\n| sr    | Srpski                  |        | true        |\n| th    | ไทย                     |        | true        |\n| vi    | Tiếng Việt              |        | true        |\n| fa    | فارسی                   |        | true        |\n| bn    | বাংলা                     |        | true        |\n| bs    | bosanski                |        | true        |\n| is    | íslenska                |        | true        |\n| sw    | Kiswahili               |        | true        |\n| ur    | اُردُو                    |        | true        |\n| sr-me | Crnogorski              |        | true        |\n| uz    | Oʻzbekcha               |        | true        |\n| az    | Azərbaycanca            |        | true        |\n| ta    | தமிழ்                    |        | true        |\n| gu    | ગુજરાતી                  |        | true        |\n| kn    | ಕನ್ನಡ                    |        | true        |\n| te    | తెలుగు                   |        | true        |\n| mr    | मराठी                   |        | true        |\n| pa    | ਪੰਜਾਬੀ                   |        | true        |\n| my    | မြန်မာဘာသာ               |        | true        |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvictrme%2Fracle-meteo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvictrme%2Fracle-meteo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvictrme%2Fracle-meteo/lists"}