[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-2162":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":34,"readmeContent":35,"aiSummary":36,"trendingCount":16,"starSnapshotCount":16,"syncStatus":37,"lastSyncTime":38,"discoverSource":39},2162,"wttr.in","chubin\u002Fwttr.in","chubin",":partly_sunny: The right way to check the weather","https:\u002F\u002Fwttr.in",null,"Go",29852,1247,229,317,0,7,57,290,42,44.29,"Apache License 2.0",false,"master",true,[27,28,29,30,31,32,33],"ascii-art","curl","terminal","weather","weather-api","weather-app","weather-information","2026-06-12 02:00:38","\n*wttr.in — the right way to ~check~ `curl` the weather!*\n\nwttr.in is a console-oriented weather forecast service that supports various information\nrepresentation methods like terminal-oriented ANSI-sequences for console HTTP clients\n(curl, httpie, or wget), HTML for web browsers, or PNG for graphical viewers.\n\nOriginally started as a small project, a wrapper for [wego](https:\u002F\u002Fgithub.com\u002Fschachmat\u002Fwego),\nintended to demonstrate the power of the console-oriented services,\n*wttr.in* became a popular weather reporting service, handling tens of millions[¹](#wttrin-usage-stats) of queries daily.\n\nYou can see it running here: [wttr.in](https:\u002F\u002Fwttr.in).\n\n[Documentation](https:\u002F\u002Fwttr.in\u002F:help) | [Usage](https:\u002F\u002Fgithub.com\u002Fchubin\u002Fwttr.in#usage) | [One-line output](https:\u002F\u002Fgithub.com\u002Fchubin\u002Fwttr.in#one-line-output) | [Data-rich output format](https:\u002F\u002Fgithub.com\u002Fchubin\u002Fwttr.in#data-rich-output-format-v2) | [Map view](https:\u002F\u002Fgithub.com\u002Fchubin\u002Fwttr.in#map-view-v3) | [Output formats](https:\u002F\u002Fgithub.com\u002Fchubin\u002Fwttr.in#different-output-formats) | [Moon phases](https:\u002F\u002Fgithub.com\u002Fchubin\u002Fwttr.in#moon-phases) | [Internationalization](https:\u002F\u002Fgithub.com\u002Fchubin\u002Fwttr.in#internationalization-and-localization) | [Installation](https:\u002F\u002Fgithub.com\u002Fchubin\u002Fwttr.in#installation)\n\n## Usage\n\nYou can access the service from a shell or from a Web browser like this:\n\n    $ curl wttr.in\n    Weather for City: Paris, France\n\n         \\   \u002F     Clear\n          .-.      10 – 11 °C\n       ― (   ) ―   ↑ 11 km\u002Fh\n          `-’      10 km\n         \u002F   \\     0.0 mm\n\n\nHere is an example weather report:\n\n![Weather Report](share\u002Fpics\u002FSan_Francisco.png)\n\nOr in PowerShell:\n\n```PowerShell\nInvoke-RestMethod https:\u002F\u002Fwttr.in\n```\n\nWant to get the weather information for a specific location? You can add the desired location to the URL in your\nrequest like this:\n\n    $ curl wttr.in\u002FLondon\n    $ curl wttr.in\u002FMoscow\n    $ curl wttr.in\u002FSalt+Lake+City\n\nIf you omit the location name, you will get the report for your current location based on your IP address.\n\nUse 3-letter airport codes in order to get the weather information at a certain airport:\n\n    $ curl wttr.in\u002Fmuc      # Weather for IATA: muc, Munich International Airport, Germany\n    $ curl wttr.in\u002Fham      # Weather for IATA: ham, Hamburg Airport, Germany\n\nLet's say you'd like to get the weather for a geographical location other than a town or city - maybe an attraction\nin a city, a mountain name, or some special location. Add the character `~` before the name to look up that special\nlocation name before the weather is then retrieved:\n\n\t$ curl wttr.in\u002F~Vostok+Station\n\t$ curl wttr.in\u002F~Eiffel+Tower\n\t$ curl wttr.in\u002F~Kilimanjaro\n\nFor these examples, you'll see a line below the weather forecast output that shows the geolocation\nresults of looking up the location:\n\n\tLocation: Vostok Station, станция Восток, AAT, Antarctica [-78.4642714,106.8364678]\n    Location: Tour Eiffel, 5, Avenue Anatole France, Gros-Caillou, 7e, Paris, Île-de-France, 75007, France [48.8582602,2.29449905432]\n\tLocation: Kilimanjaro, Northern, Tanzania [-3.4762789,37.3872648]\n\nYou can also use IP-addresses (direct) or domain names (prefixed with `@`) to specify a location:\n\n    $ curl wttr.in\u002F@github.com\n    $ curl wttr.in\u002F@msu.ru\n\nTo get detailed information online, you can access the [\u002F:help](https:\u002F\u002Fwttr.in\u002F:help) page:\n\n    $ curl wttr.in\u002F:help\n\n### Weather Units\n\nBy default the USCS units are used for the queries from the USA and the metric system for the rest of the world.\nYou can override this behavior by adding `?u`, `?m` or `?M`   to a URL like this:\n\n    $ curl wttr.in\u002FAmsterdam?u  # USCS (used by default in US)\n    $ curl wttr.in\u002FAmsterdam?m  # metric (SI) (used by default everywhere except US)\n    $ curl wttr.in\u002FAmsterdam?M  # metric (SI), but show wind speed in m\u002Fs\n\nIf you have several options to pass, write them without delimiters in between for the one-letter options,\nand use `&` as a delimiter for the long options with values:\n\n    $ curl 'wttr.in\u002FAmsterdam?m2&lang=nl'\n\nIt would be a rough equivalent of `-m2 --lang nl` for the GNU CLI syntax.\n\n## Supported output formats and views\n\nwttr.in currently supports five output formats:\n\n* ANSI for the terminal;\n* Plain-text for the terminal and scripts;\n* HTML for the browser;\n* PNG for the graphical viewers;\n* JSON for scripts and APIs;\n* Prometheus metrics for scripts and APIs.\n\nThe ANSI and HTML formats are selected based on the User-Agent string.\n\nTo force plain text, which disables colors:\n\n    $ curl wttr.in\u002F?T\n\nTo restrict output to glyphs available in standard console fonts (e.g. Consolas and Lucida Console):\n\n    $ curl wttr.in\u002F?d\n\nThe PNG format can be forced by adding `.png` to the end of the query:\n\n    $ wget wttr.in\u002FParis.png\n\nYou can use all of the options with the PNG-format like in an URL, but you have\nto separate them with `_` instead of `?` and `&`:\n\n    $ wget wttr.in\u002FParis_0tqp_lang=fr.png\n\nUseful options for the PNG format:\n\n* `t` for transparency (`transparency=150`);\n* transparency=0..255 for a custom transparency level.\n\nTransparency is a useful feature when weather PNGs are used to add weather data to pictures:\n\n    $ convert source.jpg \u003C( curl wttr.in\u002FOymyakon_tqp0.png ) -geometry +50+50 -composite target.jpg\n\nIn this example:\n\n* `source.jpg` - source file;\n* `target.jpg` - target file;\n* `Oymyakon` - name of the location;\n* `tqp0` - options (recommended).\n\n![Picture with weather data](https:\u002F\u002Fpbs.twimg.com\u002Fmedia\u002FC69-wsIW0AAcAD5.jpg)\n\nYou can embed a special wttr.in widget, that displays the weather condition for the current or a selected location, into a HTML page using the [wttr-switcher](https:\u002F\u002Fgithub.com\u002Fmidzer\u002Fwttr-switcher). That is how it looks like: [wttr-switcher-example](https:\u002F\u002Fmidzer.github.io\u002Fwttr-switcher\u002F) or on a real world web site: https:\u002F\u002Ffeuerwehr-eisolzried.de\u002F.\n\n![Embedded wttr.in example at feuerwehr-eisolzried.de](https:\u002F\u002Fuser-images.githubusercontent.com\u002F3875145\u002F65265457-50eac180-db11-11e9-8f9b-2e1711dfc436.png)\n\n## One-line output\n\nOne-line output format is convenient to be used to show weather info\nin status bar of different programs, such as *tmux*, *weechat*, etc.\n\nFor one-line output format, specify additional URL parameter `format`:\n\n```\n$ curl wttr.in\u002FNuremberg?format=3\nNuremberg: 🌦 +11⁰C\n```\n\nAvailable preconfigured formats: 1, 2, 3, 4 and the custom format using the percent notation (see below).\n* 1: Current weather at location: `🌦 +11⁰C`\n* 2: Current weather at location with more details: `🌦   🌡️+11°C 🌬️↓4km\u002Fh`\n* 3: Name of location and current weather at location: `Nuremberg: 🌦 +11⁰C`\n* 4: Name of location and current weather at location with more details: `Nuremberg: 🌦   🌡️+11°C 🌬️↓4km\u002Fh`\n\nYou can specify multiple locations separated with `:` (for repeating queries):\n\n```\n$ curl wttr.in\u002FNuremberg:Hamburg:Berlin?format=3\nNuremberg: 🌦 +11⁰C\n```\nOr to process all this queries at once:\n\n```\n$ curl -s 'wttr.in\u002F{Nuremberg,Hamburg,Berlin}?format=3'\nNuremberg: 🌦 +11⁰C\nHamburg: 🌦 +8⁰C\nBerlin: 🌦 +8⁰C\n```\n\nTo specify your own custom output format, use the special `%`-notation:\n\n```\n    c    Weather condition,\n    C    Weather condition textual name,\n    x    Weather condition, plain-text symbol,\n    h    Humidity,\n    t    Temperature (Actual),\n    f    Temperature (Feels Like),\n    w    Wind,\n    l    Location,\n    m    Moon phase 🌑🌒🌓🌔🌕🌖🌗🌘,\n    M    Moon day,\n    p    Precipitation (mm\u002F3 hours),\n    P    Pressure (hPa),\n    e    Dew point,\n    u    UV index (1-12),\n\n    D    Dawn*,\n    S    Sunrise*,\n    z    Zenith*,\n    s    Sunset*,\n    d    Dusk*,\n    T    Current time*,\n    Z    Local timezone.\n\n(*times are shown in the local timezone)\n```\n\nSo, these two calls are the same:\n\n```\n    $ curl wttr.in\u002FLondon?format=3\n    London: ⛅️ +7⁰C\n    $ curl wttr.in\u002FLondon?format=\"%l:+%c+%t\\n\"\n    London: ⛅️ +7⁰C\n```\n\n## Integrations\n\nThanks to the ease of integrating *wttr.in* into any program, there are a\nplethora of popular integrations across various libraries, programming\nlanguages, and systems.\n\n*wttr.in* is compatible with:\n\n* terminal managers,\n* window managers,\n* editors,\n* chat clients,\n\nand more, these integrations enhance workflow efficiency by embedding weather information directly into user interfaces.\n\nSee the full list of integrations here: [wttr.in integrations](doc\u002Fintegrations.md)\nand some of them below.\n\n### tmux\n\nWhen using in `tmux.conf`, you have to escape `%` with `%`, i.e. write there `%%` instead of `%`.\n\nThe output does not contain new line by default, when the %-notation is used, but it does contain it when preconfigured format (`1`,`2`,`3` etc.)\nare used. To have the new line in the output when the %-notation is used, use '\\n' and single quotes when doing a query from the shell.\n\nIn programs, that are querying the service automatically (such as tmux), it is better to use some reasonable update interval. In tmux, you can configure it with `status-interval`.\n\nIf several, `:` separated locations, are specified in the query, specify update period\nas an additional query parameter `period=`:\n```\nset -g status-interval 60\nWEATHER='#(curl -s wttr.in\u002FLondon:Stockholm:Moscow\\?format\\=\"%%l:+%%c%%20%%t%%60%%w&period=60\")'\nset -g status-right \"$WEATHER ...\"\n```\n![wttr.in in tmux status bar](https:\u002F\u002Fwttr.in\u002Ffiles\u002Fexample-tmux-status-line.png)\n\n### WeeChat\n\nTo embed in to an IRC ([WeeChat](https:\u002F\u002Fgithub.com\u002Fweechat\u002Fweechat)) client's existing status bar:\n\n```\n\u002Falias add wttr \u002Fexec -pipe \"\u002Fmute \u002Fset plugins.var.wttr\" url:wttr.in\u002FMontreal?format=%l:+%c+%f+%h+%p+%P+%m+%w+%S+%s;\u002Fwait 3 \u002Fitem refresh wttr\n\u002Ftrigger add wttr timer 60000;0;0 \"\" \"\" \"\u002Fwttr\"\n\u002Fitem add wttr \"\" \"${plugins.var.wttr}\"\n\u002Feval \u002Fset weechat.bar.status.items ${weechat.bar.status.items},spacer,wttr\n\u002Feval \u002Fset weechat.startup.command_after_plugins ${weechat.startup.command_after_plugins};\u002Fwttr\n\u002Fwttr\n```\n![wttr.in in WeeChat status bar](https:\u002F\u002Fi.imgur.com\u002FXkYiRU7.png)\n\n\n### conky\n\nConky usage example:\n\n```\n${texeci 1800 curl wttr.in\u002Fkyiv_0pq_lang=uk.png\n  | convert - -transparent black $HOME\u002F.config\u002Fconky\u002Fout.png}\n${image $HOME\u002F.config\u002Fconky\u002Fout.png -p 0,0}\n```\n\n![wttr.in in conky](https:\u002F\u002Fuser-images.githubusercontent.com\u002F3875145\u002F172178453-9e9ed9e3-9815-426a-9a21-afdd6e279fc8.png)\n\n\n### IRC\n\nIRC integration example:\n\n* https:\u002F\u002Fgithub.com\u002FOpenSourceTreasure\u002FMirc-ASCII-weather-translate-pixel-editor\n\n### Emojis support\n\nTo see emojis in terminal, you need:\n\n1. Terminal support for emojis (was added to Cairo 1.15.8);\n2. Font with emojis support.\n\nFor the emoji font, we recommend *Noto Color Emoji*, and a good alternative option would be the *Emoji One* font;\nboth of them support all necessary emoji glyphs.\n\nFont configuration:\n\n```xml\n$ cat ~\u002F.config\u002Ffontconfig\u002Ffonts.conf\n\u003C?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\u003C!DOCTYPE fontconfig SYSTEM \"fonts.dtd\">\n\u003Cfontconfig>\n  \u003Calias>\n    \u003Cfamily>serif\u003C\u002Ffamily>\n    \u003Cprefer>\n      \u003Cfamily>Noto Color Emoji\u003C\u002Ffamily>\n    \u003C\u002Fprefer>\n  \u003C\u002Falias>\n  \u003Calias>\n    \u003Cfamily>sans-serif\u003C\u002Ffamily>\n    \u003Cprefer>\n      \u003Cfamily>Noto Color Emoji\u003C\u002Ffamily>\n    \u003C\u002Fprefer>\n  \u003C\u002Falias>\n  \u003Calias>\n    \u003Cfamily>monospace\u003C\u002Ffamily>\n    \u003Cprefer>\n      \u003Cfamily>Noto Color Emoji\u003C\u002Ffamily>\n    \u003C\u002Fprefer>\n  \u003C\u002Falias>\n\u003C\u002Ffontconfig>\n```\n\n(to apply the configuration, run `fc-cache -f -v`).\n\nIn some cases, `tmux` and the terminal understanding of some emoji characters may differ, which may\ncause strange effects similar to that described in #579.\n\n### Squeak\n\nTo embed into the world main docking bar:\n\n```smalltalk\nwttr := (UpdatingStringMorph on: [(WebClient httpGet: 'https:\u002F\u002Fwttr.in\u002F?format=%20%20%l:%20%C+%t') content] selector: #value)\n\tstepTime: 60000;\n\tuseStringFormat;\n\tyourself.\ndockingBar := World mainDockingBars first.\ndockingBar addMorph: wttr after: (dockingBar findA: ClockMorph).\n```\n\n![wttr.in integration in the Squeak world main docking bar](https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F4c2762b0-77ae-41a8-98db-3eb310d073bd)\n\n## Data-rich output format (v2)\n\nIn the experimental data-rich output format, that is available under the view code `v2`,\na lot of additional weather and astronomical information is available:\n\n* Temperature, and precipitation changes forecast throughout the days;\n* Moonphase for today and the next three days;\n* The current weather condition, temperature, humidity, wind speed and direction, pressure;\n* Timezone;\n* Dawn, sunrise, noon, sunset, dusk time for he selected location;\n* Precise geographical coordinates for the selected location.\n\n```\n  $ curl v2.wttr.in\u002FMünchen\n```\n\nor\n\n```\n  $ curl wttr.in\u002FMünchen?format=v2\n```\n\nor, if you prefer Nerd Fonts instead of Emoji, `v2d` (day) or `v2n` (night):\n\n```\n  $ curl v2d.wttr.in\u002FMünchen\n```\n\n\n![data-rich output format](https:\u002F\u002Fwttr.in\u002Ffiles\u002Fexample-wttr-v2.png)\n\n(The mode is experimental, and it has several limitations currently:\n\n* It works only in terminal;\n* Only English is supported).\n\nCurrently, you need some tweaks for some terminals, to get the best possible visualization.\n\n### URXVT\n\nDepending on your configuration you might be taking all steps, or only a few. URXVT currently doesn't support emoji related fonts, but we can get almost the same effect using *Font-Symbola*. So add to your `.Xresources` file the following line:\n```\n    xft:symbola:size=10:minspace=False\n```\nYou can add it _after_ your preferred font and it will only show up when required.\nThen, if you see or feel like you're having spacing issues, add this: `URxvt.letterSpace: 0`\nFor some reason URXVT sometimes stops deciding right the word spacing and we need to force it this way.\n\nThe result, should look like:\n\n![URXVT Emoji line](https:\u002F\u002Fuser-images.githubusercontent.com\u002F24360204\u002F63842949-1d36d480-c975-11e9-81dd-998d1329bd8a.png)\n\n## Map view (v3)\n\nIn the experimental map view, that is available under the view code `v3`,\nweather information about a geographical region is available:\n\n```\n    $ curl v3.wttr.in\u002FBayern.sxl\n```\n\n![v3.wttr.in\u002FBayern](https:\u002F\u002Fv3.wttr.in\u002FBayern.png)\n\nor directly in browser:\n\n*   https:\u002F\u002Fv3.wttr.in\u002FBayern\n\nThe map view currently supports three formats:\n\n* PNG (for browser and messengers);\n* Sixel (terminal inline images support);\n* IIP (terminal with iterm2 inline images protocol support).\n\nTerminal with inline images protocols support:\n\n⟶ *Detailed article: [Images in terminal](doc\u002Fterminal-images.md)*\n\n| Terminal              | Environment    | Images support | Protocol |\n| --------------------- | --------- | ------------- | --------- |\n| uxterm                |   X11     |   yes         |   Sixel   |\n| mlterm                |   X11     |   yes         |   Sixel   |\n| kitty                 |   X11     |   yes         |   Kitty   |\n| wezterm               |   X11     |   yes         |   IIP     |\n| Darktile              |   X11     |   yes         |   Sixel   |\n| Jexer                 |   X11     |   yes         |   Sixel   |\n| GNOME Terminal        |   X11     |   [in-progress](https:\u002F\u002Fgitlab.gnome.org\u002FGNOME\u002Fvte\u002F-\u002Fissues\u002F253) |   Sixel   |\n| alacritty             |   X11     |   [in-progress](https:\u002F\u002Fgithub.com\u002Falacritty\u002Falacritty\u002Fissues\u002F910) |  Sixel   |\n| foot                  |  Wayland  |   yes         |   Sixel   |\n| DomTerm               |   Web     |   yes         |   Sixel   |\n| Yaft                  |   FB      |   yes         |   Sixel   |\n| iTerm2                |   Mac OS X|   yes         |   IIP     |\n| mintty                | Windows   |   yes         |   Sixel   |\n| Windows Terminal  |   Windows     |   [in-progress](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fterminal\u002Fissues\u002F448) |   Sixel   |\n| [RLogin](http:\u002F\u002Fnanno.dip.jp\u002Fsoftlib\u002Fman\u002Frlogin\u002F) | Windows | yes         |   Sixel   |   |\n\n\n## Different output formats\n\n### JSON output\n\nThe JSON format is a feature providing access to *wttr.in* data through an easy-to-parse format, without requiring the user to create a complex script to reinterpret wttr.in's graphical output.\n\nTo fetch information in JSON format, use the following syntax:\n\n    $ curl wttr.in\u002FDetroit?format=j1\n\nThis will fetch information on the Detroit region in JSON format. The j1 format code is used to allow for the use of other layouts for the JSON output.\n\nThe result will look something like the following:\n```json\n{\n\t\"current_condition\": [\n\t\t{\n\t\t    \"FeelsLikeC\": \"25\",\n\t\t    \"FeelsLikeF\": \"76\",\n\t\t    \"cloudcover\": \"100\",\n\t\t    \"humidity\": \"76\",\n\t\t    \"observation_time\": \"04:08 PM\",\n\t\t    \"precipMM\": \"0.2\",\n\t\t    \"pressure\": \"1019\",\n\t\t    \"temp_C\": \"22\",\n\t\t    \"temp_F\": \"72\",\n\t\t    \"uvIndex\": 5,\n\t\t    \"visibility\": \"16\",\n\t\t    \"weatherCode\": \"122\",\n\t\t    \"weatherDesc\": [\n\t\t\t{\n\t\t\t    \"value\": \"Overcast\"\n\t\t\t}\n\t\t    ],\n\t\t    \"weatherIconUrl\": [\n\t\t\t{\n\t\t\t    \"value\": \"\"\n\t\t\t}\n\t\t    ],\n\t\t    \"winddir16Point\": \"NNE\",\n\t\t    \"winddirDegree\": \"20\",\n\t\t    \"windspeedKmph\": \"7\",\n\t\t    \"windspeedMiles\": \"4\"\n\t\t}\n\t],\n...\n```\n\nMost of these values are self-explanatory, aside from `weatherCode`. The `weatherCode` is an enumeration which you can find at either [the WorldWeatherOnline website](https:\u002F\u002Fwww.worldweatheronline.com\u002Fdeveloper\u002Fapi\u002Fdocs\u002Fweather-icons.aspx) or [in the wttr.in source code](https:\u002F\u002Fgithub.com\u002Fchubin\u002Fwttr.in\u002Fblob\u002Fmaster\u002Flib\u002Fconstants.py).\n\nA smaller version `format=j2` without hourly data is also availble. Can work well for microcontrollers with limited memory.\n\n### Prometheus Metrics Output\n\nThe [Prometheus](https:\u002F\u002Fgithub.com\u002Fprometheus\u002Fprometheus) Metrics format is a feature providing access to *wttr.in* data through an easy-to-parse format for monitoring systems, without requiring the user to create a complex script to reinterpret wttr.in's graphical output.\n\nTo fetch information in Prometheus format, use the following syntax:\n\n    $ curl wttr.in\u002FDetroit?format=p1\n\nThis will fetch information on the Detroit region in Prometheus Metrics format. The `p1` format code is used to allow for the use of other layouts for the Prometheus Metrics output.\n\nA possible configuration for Prometheus could look like this:\n\n```yaml\n    - job_name: 'wttr_in_detroit'\n        static_configs:\n            - targets: ['wttr.in']\n        metrics_path: '\u002FDetroit'\n        params:\n            format: ['p1']\n```\n\nThe result will look something like the following:\n\n\n    # HELP temperature_feels_like_celsius Feels Like Temperature in Celsius\n    temperature_feels_like_celsius{forecast=\"current\"} 7\n    # HELP temperature_feels_like_fahrenheit Feels Like Temperature in Fahrenheit\n    temperature_feels_like_fahrenheit{forecast=\"current\"} 45\n    [truncated]\n...\n\n\n## Moon phases\n\nwttr.in can also be used to check the phase of the Moon. This example shows how to see the current Moon phase\nin the full-output mode:\n\n    $ curl wttr.in\u002FMoon\n\nGet the moon phase for a particular date by adding `@YYYY-MM-DD`:\n\n    $ curl wttr.in\u002FMoon@2016-12-25\n\nThe moon phase information uses [pyphoon](https:\u002F\u002Fgithub.com\u002Fchubin\u002Fpyphoon) as its backend.\n\nTo get the moon phase information in the online mode, use `%m`:\n\n    $ curl wttr.in\u002FLondon?format=%m\n    🌖\n\nKeep in mind that the Unicode representation of moon phases suffers 2 caveats:\n\n- With some fonts, the representation `🌘` is ambiguous, for it either seem\n  almost-shadowed or almost-lit, depending on whether your terminal is in\n  light mode or dark mode. Relying on colored fonts like `noto-fonts` works\n  around this problem.\n\n- The representation `🌘` is also ambiguous, for it means \"last quarter\" in\n  northern hemisphere, but \"first quarter\" in souther hemisphere. It also means\n  nothing in tropical zones. This is a limitation that\n  [Unicode](https:\u002F\u002Fwww.unicode.org\u002FL2\u002FL2017\u002F17304-moon-var.pdf) is aware about.\n  But it has not been worked around at `wttr.in` yet.\n\nSee #247, #364 for the corresponding tracking issues,\nand [pyphoon#1](https:\u002F\u002Fgithub.com\u002Fchubin\u002Fpyphoon\u002Fissues\u002F1) for pyphoon. Any help is welcome.\n\n## Internationalization and localization\n\nwttr.in supports multilingual locations names that can be specified in any language in the world\n(it may be surprising, but many locations in the world don't have an English name).\n\nThe query string should be specified in Unicode (hex-encoded or not). Spaces in the query string\nmust be replaced with `+`:\n\n    $ curl wttr.in\u002Fстанция+Восток\n    Weather report: станция Восток\n\n                   Overcast\n          .--.     -65 – -47 °C\n       .-(    ).   ↑ 23 km\u002Fh\n      (___.__)__)  15 km\n                   0.0 mm\n\nThe language used for the output (except the location name) does not depend on the input language\nand it is either English (by default) or the preferred language of the browser (if the query\nwas issued from a browser) that is specified in the query headers (`Accept-Language`).\n\nThe language can be set explicitly when using console clients by using command-line options like this:\n\n    curl -H \"Accept-Language: fr\" wttr.in\n    http GET wttr.in Accept-Language:ru\n\nThe preferred language can be forced using the `lang` option:\n\n    $ curl wttr.in\u002FBerlin?lang=de\n\nThe third option is to choose the language using the DNS name used in the query:\n\n    $ curl de.wttr.in\u002FBerlin\n\nwttr.in is currently translated into 54 languages, and the number of supported languages is constantly growing.\n\nSee [\u002F:translation](https:\u002F\u002Fwttr.in\u002F:translation) to learn more about the translation process,\nto see the list of supported languages and contributors, or to know how you can help to translate wttr.in\nin your language.\n\n![Queries to wttr.in in various languages](https:\u002F\u002Fpbs.twimg.com\u002Fmedia\u002FC7hShiDXQAES6z1.jpg)\n\n## Installation\n\nTo install the application:\n\n1. Install external dependencies\n2. Install Python dependencies used by the service\n3. Configure IP2Location (optional)\n4. Get a WorldWeatherOnline API and configure wego\n5. Configure wttr.in\n6. Configure the HTTP-frontend service\n\n### Install external dependencies\n\nwttr.in has the following external dependencies:\n\n* [golang](https:\u002F\u002Fgolang.org\u002Fdoc\u002Finstall), wego dependency\n* [wego](https:\u002F\u002Fgithub.com\u002Fschachmat\u002Fwego), weather client for terminal\n\nAfter you install [golang](https:\u002F\u002Fgolang.org\u002Fdoc\u002Finstall), install `wego`:\n```bash\ngo install github.com\u002Fschachmat\u002Fwego@latest\n```\n\n### Install Python dependencies\n\nPython requirements:\n\n* Flask\n* geoip2\n* geopy\n* requests\n* gevent\n\nIf you want to get weather reports as PNG files, you'll also need to install:\n\n* PIL\n* pyte (>=0.6)\n* necessary fonts\n\nYou can install most of them using `pip`.\n\nSome python package use LLVM, so install it first:\n\n```bash\napt-get install llvm-7 llvm-7-dev\n```\nIf `virtualenv` is used:\n```bash\nvirtualenv -p python3 ve\nve\u002Fbin\u002Fpip3 install -r requirements.txt\nve\u002Fbin\u002Fpython3 bin\u002Fsrv.py\n```\n\nAlso, you need to install the geoip2 database.\nYou can use a free database GeoLite2 that can be downloaded from (http:\u002F\u002Fdev.maxmind.com\u002Fgeoip\u002Fgeoip2\u002Fgeolite2\u002F).\n\n### Configure IP2Location (optional)\n\nIf you want to use the IP2location service for IP-addresses that are not covered by GeoLite2,\nyou have to obtain a API key of that service, and after that save into the `~\u002F.ip2location.key` file:\n\n```\n$ echo 'YOUR_IP2LOCATION_KEY' > ~\u002F.ip2location.key\n```\n\nIf you don't have this file, the service will be silently skipped (it is not a big problem,\nbecause the MaxMind database is pretty good).\n\n### Installation with Docker\n\n* Install Docker\n* Build Docker Image\n* These files should be mounted by the user at runtime:\n\n```\n\u002Froot\u002F.wegorc\n\u002Froot\u002F.ip2location.key (optional)\n\u002Fapp\u002Fairports.dat\n\u002Fapp\u002FGeoLite2-City.mmdb\n```\n\n### Get a WorldWeatherOnline key and configure wego\n\nTo get a WorldWeatherOnline API key, you must register here:\n\n    https:\u002F\u002Fdeveloper.worldweatheronline.com\u002Fauth\u002Fregister\n\nAfter you have a WorldWeatherOnline key, you can save it into the\nWWO key file: `~\u002F.wwo.key`\n\nAlso, you have to specify the key in the `wego` configuration:\n\n```json\n$ cat ~\u002F.wegorc\n{\n\t\"APIKey\": \"00XXXXXXXXXXXXXXXXXXXXXXXXXXX\",\n\t\"City\": \"London\",\n\t\"Numdays\": 3,\n\t\"Imperial\": false,\n\t\"Lang\": \"en\"\n}\n```\n\nThe `City` parameter in `~\u002F.wegorc` is ignored.\n\n### Configure wttr.in\n\nConfigure the following environment variables that define the path to the local `wttr.in`\ninstallation, to the GeoLite database, and to the `wego` installation. For example:\n\n```bash\nexport WTTR_MYDIR=\"\u002Fhome\u002Figor\u002Fwttr.in\"\nexport WTTR_GEOLITE=\"\u002Fhome\u002Figor\u002Fwttr.in\u002FGeoLite2-City.mmdb\"\nexport WTTR_WEGO=\"\u002Fhome\u002Figor\u002Fgo\u002Fbin\u002Fwego\"\nexport WTTR_LISTEN_HOST=\"0.0.0.0\"\nexport WTTR_LISTEN_PORT=\"8002\"\n```\n\n\n### Configure the HTTP-frontend service\n\nIt's recommended that you also configure the web server that will be used to access the service:\n\n```nginx\nserver {\n\tlisten [::]:80;\n\tserver_name  wttr.in *.wttr.in;\n\taccess_log  \u002Fvar\u002Flog\u002Fnginx\u002Fwttr.in-access.log  main;\n\terror_log  \u002Fvar\u002Flog\u002Fnginx\u002Fwttr.in-error.log;\n\n\tlocation \u002F {\n\t    proxy_pass         http:\u002F\u002F127.0.0.1:8002;\n\n\t    proxy_set_header   Host             $host;\n\t    proxy_set_header   X-Real-IP        $remote_addr;\n\t    proxy_set_header   X-Forwarded-For  $remote_addr;\n\n\t    client_max_body_size       10m;\n\t    client_body_buffer_size    128k;\n\n\t    proxy_connect_timeout      90;\n\t    proxy_send_timeout         90;\n\t    proxy_read_timeout         90;\n\n\t    proxy_buffer_size          4k;\n\t    proxy_buffers              4 32k;\n\t    proxy_busy_buffers_size    64k;\n\t    proxy_temp_file_write_size 64k;\n\n\t    expires                    off;\n\t}\n}\n```\n\n## wttr.in usage stats\n\nAs of April 2026, *wttr.in* handles around 100 million queries per day from 400,000 to 450,000 users, according to the access logs.\n\n![wttr.in usage stats](share\u002Fstats\u002Fstats.png)\n","wttr.in 是一个面向终端的天气预报服务，支持多种信息展示方式。该项目使用 Python 编写，能够通过 ANSI 序列、HTML 或 PNG 格式为用户提供天气数据，适用于各种终端 HTTP 客户端（如 curl、httpie 或 wget）以及网页浏览器和图形查看器。wttr.in 的核心功能包括支持基于地理位置的天气查询、提供丰富的输出格式选项（如单行输出、详细数据输出、地图视图等），并且具有国际化和本地化特性。它特别适合需要在命令行环境中快速获取天气信息的用户，同时也为开发者提供了灵活的 API 接口以集成到其他应用中。",2,"2026-06-11 02:48:29","top_language"]