Thời tiết từ nhà ga


66

Tôi muốn tìm thời tiết hiện tại của một thành phố cụ thể hoặc vị trí của tôi từ nhà ga. Có bất kỳ ứng dụng thời tiết dòng lệnh?

Câu trả lời:


135

Chỉ cần nhập thông tin sau vào một thiết bị đầu cuối:

curl wttr.in

Và sẽ nhận được vị trí của bạn từ /etc/timezone. Nếu không curl wttr.in/your_location. Ví dụ: đối với Tehran:

curl wttr.in/tehran

Cung cấp cho bạn:

Sản lượng mẫu

Bạn cũng có thể so sánh hai thành phố:

diff -Naur <(curl -s http://wttr.in/london ) <(curl -s http://wttr.in/new-york )

Mã nguồn của nhà phát triển có sẵn trên Github .


2
Cách tốt hơn nhiều!
Zachary Dahan

2
github.com/schachmat/wego không tệ cho devsgiữa chúng ta
Timo

thích nó, nhưng nó đã gây ra một lỗi lần này: Xin lỗi, chúng tôi đang hết truy vấn đến dịch vụ thời tiết tại thời điểm này. Chúng tôi sẽ nhận được các truy vấn mới càng sớm càng tốt.
Doyousketch2

17

Tìm kiếm thành phố của bạn tại http://www.accuweather.com và thay thế URL trong tập lệnh sau bằng URL cho thành phố của bạn:

#!/bin/sh

URL='http://www.accuweather.com/en/de/berlin/10178/weather-forecast/178087'

wget -q -O- "$URL" | awk -F\' '/acm_RecentLocationsCarousel\.push/{print $2": "$16", "$12"°" }'| head -1

Đầu ra mẫu:

Berlin, Germany: Foggy, 1°

Nhưng làm cách nào để thay đổi nó thành
Celcius

Trong html nguồn, tôi thấy acm_RecentLocationsCarousel.push({name:"Berlin, Germany", daypart:'day', href:'/en/de/berlin/10178/weather-forecast/178087', icon:'i-6-l', bg:'c', temp:'0', realfeel:'-6', text:"Mostly cloudy"});. Sử dụng mã của bạn, awkdấu phân cách trường là '' (dấu cách). Là $12(nhiệt độ) cột thứ 12?
Timo

Lỗi của tôi, awkdải phân cách là '. Api sử dụng 2 số, số đầu tiên là postleitzahlhoặc mã zip. Số thứ hai dường như là số mã api
Timo

1
Không hoạt động nữa, API Accuweather có thay đổi không?
Timo

14

Tôi đã có thêm một cách.

Mở .bashrctệp của bạn và sau đó dán mã này ở dưới cùng

weather(){ curl -s "http://api.wunderground.com/auto/wui/geo/ForecastXML/index.xml?query=${@:-<YOURZIPORLOCATION>}"|perl -ne '/<title>([^<]+)/&&printf "%s: ",$1;/<fcttext>([^<]+)/&&print $1,"\n"';}

Sau đó lưu và đóng .bashrctệp của bạn .

Bây giờ gõ bashđể cập nhật các tập tin.

sau đó gõ

weather <location name>

ví dụ

august@august-OEM:~$ weather guntur
December 14, 2013: Clear. High 31&amp;deg;C (87&amp;deg;F). Winds 0 kph North
December 15, 2013: Clear. High 29&amp;deg;C (84&amp;deg;F). Winds 10 kph NNW
December 16, 2013: Clear. High 31&amp;deg;C (87&amp;deg;F). Winds 10 kph North
December 17, 2013: Clear. High 29&amp;deg;C (84&amp;deg;F). Winds 7 kph ENE
December 18, 2013: Scattered Clouds. High 29&amp;deg;C (84&amp;deg;F). Winds 3 kph ENE
December 19, 2013: Scattered Clouds. High 29&amp;deg;C (84&amp;deg;F). Winds 3 kph ENE

1
Đẹp với dự báo thời tiết. +1 từ tôi.
souravc

Điều này không còn hoạt động, những ngày cuối cùng mà nó hiển thị là từ tháng 5 năm 2015 (ít nhất là đối với Cape Town, Nam Phi). Kiểm tra kỹ hơn về đầu ra xml cho thấy cha mẹ txt_forecast chưa được cập nhật kể từ tháng 5 năm 2015 trong khi phần tử đơn giản dường như có dữ liệu mới nhất.
Zahir J

Tôi sẽ cập nhật câu trả lời của mình
rɑːdʒɑ

Thay thế YOUZIPORLOCATION bằng $ 1 nếu bạn muốn thời tiết <tên địa điểm> hoạt động
Ed Neville

Khi tôi thay thế YOUZIPORLOCATIONbằng $1và vượt qua 20001(mã zip Washington, DC), tôi nhận được các dòng trông không được định dạng như Today: Mostly sunny and breezy. Highs in the upper 30s. Northwest winds 20 to 25 mph with gusts up to 45 mph.Khi tôi sử dụng "washington.dc", tôi nhận được đầu ra bảng May 4, 2015: Clear. High 32&amp;deg;C (89&amp;deg;F). Winds 43 kph East. Bất cứ ý tưởng tại sao sự khác biệt?
blalterman

14

Đây là một tiện ích dòng lệnh bán đồ họa tuyệt vời được viết bằng Go:

https://github.com/schachmat/wego/

Bạn sẽ cần cài đặt Go và thiết lập một số công cụ API, nhưng hướng dẫn là có. Đây là một bức ảnh mẫu:

nhập mô tả hình ảnh ở đây


5
Điều này hiện đang được lưu trữ công khai - với địa chỉ IP để ánh xạ vùng. Hãy thử: curl -4 wttr.in
jschrab

2
@jschrab: Và bạn không cần -4 thực sự. curl wttr.inlà đủ
Igor Chubin

Các đơn vị số liệu cũng có sẵn trên phiên bản được lưu trữ công khai, như vậy:curl wttr.in/Helsinki?m
Ville

6

Hãy thử sử dụng

telnet rainmaker.wunderground.com

1
Đây dường như chỉ có ở Mỹ?
Vladimir Panteleev

5

Trước tiên, bạn cần cài đặt gói thời tiết, để làm điều đó chỉ cần nhấn Ctrl+ Alt+ Ttrên bàn phím để mở Terminal. Khi nó mở, chạy (các) lệnh bên dưới:

sudo apt-get install weather-util

Bạn sẽ cần mã thời tiết địa phương của bạn .

Sau khi cài đặt, bạn có thể chạy weather -i <code>. Mã bạn nhận được từ liên kết ở trên. Để biết danh sách các tùy chọn khả dụng, bạn có thể chạy weatherThông tin thời tiết


1
Nó cho thấy. Last updated Dec 11, 2013 - 07:00 AM EST / 2013.12.11 1200 UTC Temperature: 86 F (30 C)không có cách nào để biết thời tiết hiện tại.
Avinash Raj

Tùy thuộc vào vị trí của bạn mà có thể là thông tin hiện tại có sẵn.
Mitch

1
Tôi vừa thử điều này và phát hiện ra rằng bây giờ nó dễ sử dụng hơn: weather YOURLOCATIONNAMENó tìm kiếm vị trí của bạn sau đó và cung cấp nhiều kết quả. Từ những điều này, bạn có thể đọc mã định danh trạm mà bạn có thể sử dụng làm đối số để lấy thông tin thời tiết của mình từ
Nicolas

Có vẻ như dịch vụ mà nó phụ thuộc đã bị ngừng. Tôi mới cài đặt phiên bản 2.0 và weather LAX(sẽ hiển thị thời tiết cho Sân bay Quốc tế Los Angeles) hiển thị lỗi 404 cho thời tiết.noaa.gov / pub / data / observations / metar / decoding / KBNX.TXT
Keith Thompson

1
Tập tin dữ liệu cụ thể đó đã được chuyển từ đây đến đây . Có thể cập nhật các tệp dữ liệu, thay đổi từng lần xuất hiện http://weather.noaa.gov/pub/datathành http://tgftp.nws.noaa.gov/data. CẬP NHẬT: Có vẻ như họ đã sửa nó trong phiên bản 2.1, mà bạn có thể nhận được từ trang web của dự án .
Keith Thompson

5

ansiweather

AnsiWeather là tập lệnh Shell để hiển thị các điều kiện thời tiết hiện tại trong thiết bị đầu cuối của bạn, với sự hỗ trợ cho màu ANSI và ký hiệu Unicode. Dữ liệu thời tiết đến từ API thời tiết miễn phí OpenWeatherMap.

sudo apt-get install ansiweather
ansiweather -l London,GB -f 3
London forecast => Sat Jan 13: 7/2 °C ☔ - Sun Jan 14: 4/1 °C ☔ - Mon Jan 15: 9/6 °C ☔

https://github.com/fcambus/ansiweather


2

cũng là một chương trình được cài đặt sẵn với ubfox có tên là inxi sẽ cung cấp cho bạn tất cả các loại số liệu thống kê trên máy tính của bạn và nó có đầu ra thời tiết.

lệnh: inxi - trợ giúp

lệnh: inxi -w

        Conditions: 82 F (28 C) - Clear Time: May 13, 10:52 AM CDT

lệnh: inxi -wxxx

     Conditions: 82 F (28 C) - Clear Wind: From the SW at 13 MPH Humidity: 60%

       Pressure: 29.99 in (1016 mb) Heat Index: 84 F (29 C)
       Location: city (USA) Altitude: 185 m
       Time: May 13, 10:52 AM CDT (America/Chicago) Observation Time: May 13, 9:54 AM CDT

Có vẻ như inxi không phải là một phần của Ubuntu, kể từ ngày 10.04, nhưng có thể được cài đặt vớisudo apt install inxi
Starbuck

Có, inxicó sẵn nhưng bạn cần kích hoạt kho vũ trụ trước.
mchid

2

Bạn có thể so sánh các thành phố bằng cách sử dụng:

diff -Naur <(curl -s http://wttr.in/london ) <(curl -s http://wttr.in/new-york )

như được minh họa trong câu trả lời được bình chọn hàng đầu. wttr.incũng tạo ra một màn hình "giật gân" tuyệt vời mỗi khi bạn mở thiết bị đầu cuối. Làm điều này bằng cách thêm nó vào ~/.bashrctập tin của bạn . Tôi đã thực hiện điều đó để bao gồm thông tin về Thời tiết, Ngày, Thời gian và Phân phối như chi tiết trong câu trả lời này: Làm thế nào tôi có thể có được màn hình giới thiệu thiết bị đầu cuối này?

Bash Splash trong Windows 10.png

Xin lỗi tôi đã có trong Ubuntu trong bản cập nhật Windows 10 WSL cho mùa xuân 2018 khi tôi chụp ảnh này. Hứa sẽ sớm khởi động lại vào Ubuntu trong Linux.


2

Đối với sản lượng thời tiết thậm chí ngắn hơn http://weather.tuxnet24.de cung cấp dữ liệu thời tiết từ Yahoo! ở định dạng văn bản và xml.

Các fild từ XML sau đó có thể thu được bằng trình phân tích cú pháp XML như xmllint tức là.

Tôi đã viết một kịch bản tìm nạp thời tiết, lấy nhiệt độ và mô tả thời tiết hiện tại, sau đó lưu trữ một biểu tượng unicode tương ứng với mô tả và xuất ra nó như thế nào

6 ° C

Tôi thường xuyên cập nhật qua cronjob và sau đó sử dụng đầu ra trong trạng thái khay của mình.

Nhận ID của bạn tại yahoocom / tin tức / thời tiết. Thay đổi vị trí thành vị trí mong muốn của bạn và tìm ID trong URL (ví dụ: nếu URL là yahoocom / news / Weather / đức / bắc-rhine-westphalia / bielefeld-20066057 thì ID là 20066057).

XML chứa các trường xa hơn, tức là dữ liệu dự báo, gió, v.v. - bạn cũng có thể phân tích chúng, nếu bạn muốn.

Thật không may, một số biểu tượng thời tiết không được thể hiện trong Ubuntufont, hãy thoải mái điều chỉnh.

Đây là tập lệnh của tôi (thay thế 20066057 bằng ID của bạn nếu bạn không sống ở Bielefeld) - phụ thuộc vào bash, curl và xmllint.

#!/bin/sh
#☁☂☔❄❅❆☃ ☀☁☂⚡⚐☼

# write xml to variable
w_xml=$(curl -Ls "http://weather.tuxnet24.de/?id=20066057&mode=xml");
# get fields from xml via xmllint | xargs for trimming
# weather description
w_txt=$(xmllint --xpath "string(//current_text)" - <<<"$w_xml" | xargs);
# temperature | remove spaces from text (&#176;C prepended by space)
w_tpc=$(xmllint --xpath "string(//current_temp)"  - <<<"$w_xml" | xargs); w_tpc=${w_tpc//[[:blank:]]/};
# further fields not used atm
# w_tph=$(xmllint --xpath "string(//current_temp_high)"  - <<<"$w_xml" | xargs);
# w_tpl=$(xmllint --xpath "string(//current_temp_low)"  - <<<"$w_xml" | xargs);

# set $w_sym according to $w_txt
if   [ "$w_txt" == "Sunny" ]; then w_sym="☼";
elif [ "$w_txt" == "Mostly Sunny" ]; then w_sym="☼";
elif [ "$w_txt" == "Showers" ]; then w_sym="☂";
elif [ "$w_txt" == "Clear" ]; then w_sym="☾";
elif [ "$w_txt" == "Thunderstorms" ]; then w_sym="⚡";
elif [ "$w_txt" == "Scattered Thunderstorms" ]; then w_sym="☔";
elif [ "$w_txt" == "Isolated Thundershovers" ]; then w_sym="☔";
elif [ "$w_txt" == "Cloudy" ]; then w_sym="☁";
elif [ "$w_txt" == "Mostly Cloudy" ]; then w_sym="☁";
elif [ "$w_txt" == "Partly Cloudy" ]; then w_sym="☼☁";
elif [ "$w_txt" == "Breezy" ]; then w_sym="⚐";
# if unknown text, set text instead of symbol
else w_sym=$w_txt; 
fi
# output <symbol><space><temp-in-°C>
echo "$w_sym"" ""$w_tpc";

lỗi chuyển hướng bất ngờ
Philip Kirkbride

Chuyển shebang sang #!/usr/bin/env bashsửa lỗi cho tôi, Ubuntu 18.04
Philip Kirkbride

2

Tôi đã có thêm một cách.

Mở tệp .bashrc của bạn và sau đó dán mã này ở dưới cùng

test -f ~/.wttr.in || curl -sk wttr.in -o ~/.wttr.in
find ~ -maxdepth 1 -name .wttr.in -cmin +5 -exec curl -sk wttr.in -o ~/.wttr.in \;
head -7 ~/.wttr.in | tail -5
W(){ find ~ -maxdepth 1 -name .wttr.in -cmin +5 -exec curl -sk wttr.in -o ~/.wttr.in \;; head -27 ~/.wttr.in; }

Lưu và đóng .bashrctệp của bạn và chạy lệnh sau để cập nhật bash:

. .bashrc 

sau đó nhập Wchữ hoa


bash: W: không tìm thấy lệnh

Sau khi chỉnh sửa .bashrc
relogin

Bạn không cần phải đăng nhập lại nếu bạn "nguồn" .bashrctệp của mình . Bạn có thể chạy: source .bashrchoặc bạn có thể chạy cái này thay vào đó:. .bashrc
mchid

0

Mặc dù giải pháp curuw accuweather khá tốt nhưng tôi cần một cái gì đó nhiều thông tin hơn, vì vậy tôi đã tạo ra tập lệnh bash đơn giản để lấy thông tin cho 4 giờ tiếp theo từ trang web Weather.com. Như trong ví dụ trước, bạn phải sửa đổi liên kết cho vị trí của bạn.

Example output:
$ ./getWeather.sh
Temperature for 1 AM : 65&deg;F and outside should be: Partly - Cloudy FEELS LIKE:   65&deg;
Temperature for 2 AM : 65deg;F and outside should be: Partly - Cloudy FEELS LIKE: 65deg;
Temperature for 3 AM : 63deg; and outside should be: Partly - Cloudy FEELS LIKE: 63deg;
Temperature for 4 AM : 62deg; and should be: Mostly - Clear FEELS LIKE: 62deg;

Toàn bộ tập lệnh được đặt tại: https://sites.google.com/site/wozoopalinux/home/wzbash001/get-weather-inif-from-command-line-for-next-4-hrs


0

Meteogram của tất cả các thành phố thị trưởng trên thế giới

finger city_name@graph.no

$ finger cologne@graph.no

           -= Meteogram for germany/north_rhine-westphalia/cologne =-           
 'C                                                                   Rain
 16                                                                   
 15                           ^^^                                     
 14                  ======^^^   ^^^                                  
 13               ===               ^^^===^^^===                      
 12                                             =========             
 11            ===                                       ====--       
 10      ======                                                ---    
  9=====|                                                         --- 3 mm 
  8     |  |                                                          2 mm 
  7  |  |  |  |  |  |  |  |              |     |  |  |  |  |          1 mm 
   _08_09_10_11_12_13_14_15_16_17_18 19 20 21 22 23 00 01 02 03 04 05 Hour

    SE SE SE SE SE SW SW  W  W  W  W SW  W  W  W  W  W NW NW NW  N  N Wind dir.
     5  5  5  5  4  4  5  6  6  6  5  5  5  4  4  5  5  5  4  3  3  3 Wind(mps)

Legend left axis:   - Sunny   ^ Scattered   = Clouded   =V= Thunder   # Fog
Legend right axis:  | Rain    ! Sleet       * Snow
[Weather forecast from yr.no, delivered by the Norwegian Meteorological Institute and the NRK.]

Đây là cách sử dụng nó:

$ finger help@graph.no

yr.no is having technical problems, or you specified an unknown location.

Usage:

 * finger <city name>@graph.no (world weather forecast, no spaces)
   Example: finger newyork@graph.no 

 Advanced usage:

 * finger o:<city name>@graph.no (a one-line forecast)
   Example: finger o:newyork@graph.no 

 * finger ^<city name>@graph.no (Imperial units)
   Example: finger ^newyork@graph.no 

 * finger <city name>+5@graph.no (forecast from 5 hrs ahead in time (max:26))
   Example: finger northpole+5@graph.no 

 * finger <city name>~160@graph.no (set screen width)
   Example: finger southpole~160@graph.no 

 * finger <city name>%2@graph.no (forecast for every second hour [Norway])
   Example: finger oslo%2@graph.no 

 * finger <post code>@graph.no (norwegian weather forecast)
   Example: finger 0458@graph.no 

 Other: 

 * finger news@graph.no (latest headlines from NRK)
 * finger time@graph.no (server local time)
 * finger date@graph.no (server local date)
 * finger about@graph.no (contact information)

International names comes from http://fil.nrk.no/yr/viktigestader/verda.txt.

Các câu chuyện đằng sau này từ các nhà phát triển.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.