AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1190907
Accepted
Wonky
Wonky
Asked: 2019-11-23 09:40:45 +0800 CST2019-11-23 09:40:45 +0800 CST 2019-11-23 09:40:45 +0800 CST

我怎样才能让 Conky 显示天气?

  • 772

我一直在努力让 conky 显示天气,我刚刚安装它,发现 yahoo 停止了 conky 主题正在使用的 api url(http://weather.yahooapis.com/forecastrss?w= 1103816&u=c),我尝试将 url 更改为 accuweather 和 openweather ,但什么也没有。我只是不明白这是如何工作的,我不知道如何让它正常工作,这里是代码:

##Weather
${image .jelly-weather-icons/conky_icons/circle2.png -s 190x190}
${texeci 1300 curl -s "http://rss.accuweather.com/rss/liveweather_rss.asp\?metric\=${METRIC}#\&locCode\=$LOCCOD" -o #~/.cache/weather.xml}
${voffset -110}${offset 425}${font ITC Avant Garde Gothic Pro:bold:size=20}${execi 1300 grep #"yweather:condition" ~/.cache/weather.xml | grep -o "temp=\"[^\"]*\"" | grep -o "\"[^\"]*\"" | #grep -o "[^\"]*"}${font ITC Avant Garde Gothic Pro:bold:size=8}${voffset -16}o${voffset 14}${font}#${color1}
${execi 1300 cp -f .weather-icons/$(grep "yweather:condition" ~/.cache/weather.xml | grep -o #"code=\"[^\"]*\"" | grep -o "\"[^\"]*\"" | grep -o "[^\"]*").png ~/.cache/weather.png}${image #~/.cache/weather.png -p 425,23 -s 35x35}
${offset 420}${voffset -105}${font ITC Avant Garde Gothic Pro:size=14} Sevilla

顺便说一句,我在互联网上找不到任何可以帮助我的东西......在此先感谢:)

Edit1:这是conky主题保存在cache/weather.xml中的api http://api.openweathermap.org/data/2.5/forecast?id=6361046&APPID=6be5e3a6e62680c28044791e8fc7b568 我正在慢慢理解它是如何工作的

Edit2:这就是代码现在的样子,我注意到我打错了一些 # 试图评论整个天气部分。我只是不明白 conky 如何读取 xml(我自己不知道如何读取 xml,但我想我可以通过一些 xml 指南来解决这个问题:P)

##Weather
${image .jelly-weather-icons/conky_icons/circle2.png -s 190x190}
${texeci 1300 curl -s "http://api.openweathermap.org/data/2.5/forecast?id=6361046&APPID=6be5e3a6e62680c28044791e8fc7b568&units=metric" -o ~/.cache/weather.xml}
${voffset -110}${offset 425}${font ITC Avant Garde Gothic Pro:bold:size=20}${execi 1300 grep "weather:description" ~/.cache/weather.xml | grep -o "temp=\"[^\"]*\"" | grep -o "\"[^\"]*\"" | grep -o "[^\"]*"}${font ITC Avant Garde Gothic Pro:bold:size=8}${voffset -16}o${voffset 14}${font}${color1}
${execi 1300 cp -f .weather-icons/$(grep "yweather:condition" ~/.cache/weather.xml | grep -o "code=\"[^\"]*\"" | grep -o "\"[^\"]*\"" | grep -o "[^\"]*").png ~/.cache/weather.png}${image ~/.cache/weather.png -p 425,23 -s 35x35}
${offset 420}${voffset -105}${font ITC Avant Garde Gothic Pro:size=14} Sevilla

Edit3:感谢@WinEunuuchs2Unix和@steeldriver ,我终于让它工作了,这就是代码最终寻找想要在他们的 conky 代码中使用它的任何人的方式:

##Weather

${voffset -80}${offset 435}${font ITC Avant Garde Gothic Pro:bold:size=20}${execi 1300 curl -s "http://api.openweathermap.org/data/2.5/forecast?id=6361046&APPID=6be5e3a6e62680c28044791e8fc7b568&units=metric" | jq -r '.list[0].main.temp' | awk '{printf("%.0f\n", $1)}'}${font ITC Avant Garde Gothic Pro:bold:size=8}${voffset -16}o${voffset 24}${font}${color1}
${execi 1300 cp -f .iconos/$(curl -s "http://api.openweathermap.org/data/2.5/forecast?id=6361046&APPID=6be5e3a6e62680c28044791e8fc7b568&units=metric" | jq -r '.list[0].weather[].icon').png ~/.cache/weather.png}${image ~/.cache/weather.png -p 425,20 -s 60x60}
${offset 420}${voffset -115}${font ITC Avant Garde Gothic Pro:bold:size=14} Sevilla

基本上它的作用是使用从openweather url读取一个json curl,并jq搜索温度的值.list[0].weather[].icon和.list[0].main.temp温度,它输出一个带有2位十进制数字的值,我使用其余代码将其剪掉以供个人喜好awk '{printf("%.0f\n", $1)}'只是conky的了解您想要它的位置以及您想要它的方式的方法。如果您想自己使用它,只需更改Sevilla您的城市,并更改curl -s "...your location api url..."注意,如果您为您的 api url 使用不同的站点,则必须更改jq以适应新的 json 数据。另请注意,您必须使用此图标列表中的所有图标创建一个文件夹或使用您自己的图标,但请记住使用相同的命名(01d.png,02d.png,...)并且不要忘记编辑这个${execi 1300 cp -f .iconos/$(curl -s "http:/...并替换.iconos/为您的文件夹的目录。

如果您想尝试 conky 主题,请在这里

conky weather 18.04
  • 5 5 个回答
  • 11775 Views

5 个回答

  • Voted
  1. Best Answer
    WinEunuuchs2Unix
    2019-11-24T16:53:55+08:002019-11-24T16:53:55+08:00

    编辑 2020 年 6 月 7 日

    我现在有一台 4K 电视,所以有足够的空间通过天气信息扩展高度。

    选择支持风向箭头符号的单行距字体非常重要。我选择了GE Inspira Mono 12 点,但之后不得不恢复到Ubuntu 10.5 点:

    #------------+
    # Brightness |
    #------------+
    ${color orange}${voffset 2}${hr 1}
    ${color1}${goto 5}Sun Rise: ${color green}${execpi 300 cat /usr/local/bin/.eyesome-sunrise} ${goto 175}${color1}Set: ${color green}${execpi 300 cat /usr/local/bin/.eyesome-sunset} ${alignr}${color1}Level: ${color green}${execpi 10 cat /sys/class/backlight/intel_backlight/brightness}
    #------------+
    # Weather    |
    #------------+
    ${color orange}${voffset 2}${hr 1}
    #${font GE Inspira Mono:size=12}${alignc}${color green}${execpi 300 curl wttr.in/Edmonton?T0 --silent --max-time 3}${font ubuntu:size=10.5}
    ${font Dejavu Sans Mono:size=12}${alignc}${color green}${execpi 300 curl wttr.in/Edmonton?T0 --silent --max-time 3}${font ubuntu:size=10.5}
    

    这就是它现在的样子:

    conky天气.png

    是的,6 月 7 日下午 6 点异常寒冷。更糟糕的是,几个小时前,所有的雨都导致了 20 个街区的停电!这是喜忧参半,因为我必须安装我在 2020 年 3 月购买的 32 GB RAM 升级版,但一直在拖延。系统现在更快捷了!

    注意:日出和日落时间是假的。我今天正在测试一个新功能,eyesome以覆盖太阳时报(又名暮光之城)互联网上的每日自动检索。


    原始答案

    天气信息太多,无法挤进我已经很满的古怪显示器。所以我把它放在我的终端闪屏中:

    终端闪屏.png

    您可以从命令行获取相同的信息,您可以从 conky 调用这些信息:

    $ curl wttr.in/Edmonton?0 --silent --max-time 3
    
    Weather report: Edmonton
    
         \   /     Clear
          .-.      7..8 °C        
       ― (   ) ―   → 6 km/h       
          `-’      10 km          
         /   \     0.0 mm         
    

    要获取您的城市名称,wttr.in请参阅:

    • 查看天气的正确方法 https://wttr.in

    在 conky 中显示图像

    我从 darksky.net 保存了一张今天天气的图片,并使用以下${image}命令将其显示为 conky:

    天气 in conky.png

    相关的 conky 命令是:

    #------------+
    # Brightness |
    #------------+
    ${color orange}${voffset 2}${hr 1}
    ${color1}${goto 5}Rise: ${color green}${execpi 300 cat /usr/local/bin/.eyesome-sunrise} ${goto 155}${color1}Set: ${color green}${execpi 300 cat /usr/local/bin/.eyesome-sunset} ${alignr}${color1}Level: ${color green}${execpi 10 cat /sys/class/backlight/intel_backlight/brightness}
    
    #------------+
    # Image      |
    #------------+
    ${image /home/rick/Pictures/Weather.png -p 0,1080 -s 400x120}
    
    • 我将之前的部分包括在内以供参考
    • 注意所有空白行以使 conky 窗口更高以适合图像
    • 有关命令的更多详细信息,请参阅:Conky 中的变量。${image}
    • 4
  2. Organic Marble
    2019-11-24T16:50:53+08:002019-11-24T16:50:53+08:00

    免责声明:我不记得我从哪里得到的。

    我有一个小脚本weather.sh

    #!/bin/sh
    #AccuWeather (r) RSS weather tool for conky
    #
    #USAGE: weather.sh <locationcode>
    #
    #(c) Michael Seiler 2007
    
    METRIC=0 #Should be 0 or 1; 0 for F, 1 for C
    
    if [ -z $1 ]; then
        echo
        echo "USAGE: weather.sh <locationcode>"
        echo
        exit 0;
    fi
    
    curl -s http://rss.accuweather.com/rss/liveweather_rss.asp\?metric\=${METRIC}\&locCode\=$1 | perl -ne 'if (/Currently/) {chomp;/\<title\>Currently: (.*)?\<\/title\>/; print "$1"; }'
    

    然后在 .conkyrc 你有

    ${exec [location of script]/weather.sh [zip code]}

    最终结果是

    在此处输入图像描述

    • 1
  3. Awi
    2021-01-03T07:21:54+08:002021-01-03T07:21:54+08:00

    我制作了一个使用wehr snap 应用程序的 shell 脚本。这个应用程序根据您在终端上的位置显示天气。

    $ wethr
    

    巴拉圭亚松森:31C ☀️

    目前 Conky 不能很好地处理表情符号,所以我不得不使用 pangoview 将文本转换为图像。

    我在 conky 上使用它

    ${image /tmp/weather-1000.jpg -p 95,328}
    

    还添加此行,以启用图像在 conky 中重新加载

    imlib_cache_flush_interval=1500,
    

    这是脚本

    https://github.com/alefq/helper-scripts/blob/master/bin/weather.sh

    crontab 每 30 分钟更新一次

    33 * * * * /opt/helper-scripts/bin/weather.sh
    

    最终结果

    在此处输入图像描述

    • 0
  4. Ignacio Contreras
    2021-04-05T12:09:33+08:002021-04-05T12:09:33+08:00

    我受到这个线程的启发很大,因为我没有找到任何可用的 Conky 小部件并开始学习和创建自己的小部件(基于此处发布的代码)。

    这是一个使用 IP 地理位置来识别(或猜测)您的粗略位置并相应地显示 5 天天气的小部件。使用大数据云和开放天气地图 API。

    我希望它对你们所有人都有效。只需下载文件,将其保存到 ~/.conky 目录并执行:

    conky -c ~/.conky/Weather
    

    在此处下载天气小部件文件

    天气小部件快照如下所示:

    在此处输入图像描述

    • 0
  5. jagrg
    2021-05-07T05:51:31+08:002021-05-07T05:51:31+08:00

    我编写了一个命令行工具,使用来自 openweathermap (onecall) API 的数据在 conky 中创建天气小部件。您可以根据需要使它们变得简单或复杂。例如,要显示Clouds: 22°每 20 分钟更新一次,请使用:

    ${execi 1200 echo "$(weather -d main): $(weather)" }
    

    有更多可用选项。请参阅 此处了解更多信息。

    • 0

相关问题

  • 如何更改 Conky 中的字体大小?

  • 如何跟踪一个月内的总网络数据[重复]

  • 如何防止最大化的窗口重叠 conky 窗口

  • Conky指南(链接)

  • Conky配置问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve