自动获取sentense.me图片做为桌面背景

煎蛋看见这个sentense.me的,图片做得挺好看,遂萌发自动下载后随机替换桌面背景的想法。

稍微写一下正则就可以解决了。以下为代码。请确保系统装有wget、feh,并建立一个wallpapers目录作为存放图片的目录。另外其中的1280×800是适合我屏幕的分辨率,你可以根据你自己屏幕分辨率更改:

#!/bin/sh
 
wget http://sentense.me/  -O - -q |\
sed -n 's/.*"\([^"]*1280x800[^"]*\.png\)".*/http:\/\/sentense.me\1/p'|\
wget -i - -P wallpapers -nc -q 
cd wallpapers
set -- *
length=$#
random_num=$(( $RANDOM % ($length + 1) ))
#echo ${!random_num}
DISPLAY=:0.0 feh --bg-scale ${!random_num}

可以将这个脚本加入crontab,或者在系统每次登录时执行
其中随机取文件那部分是从网上找的sniplet…其实我没看懂…

广告:请关注我的VPN服务~http://yegle.net/openvpn/

4 Responses to “自动获取sentense.me图片做为桌面背景”


  • 我也看不懂,所以我用python融合了一下…

    [回复]

  • 我来发下Python和Windows版本的吧…… Python3.0貌似不支持PIL,我是用xnview的converter把png转成bmp的……缩进好像乱了,额

    import urllib.request
    import re
    import random
    import os
    from ctypes import windll

    def download(url, path):
    urllib.request.urlretrieve(url, path)

    def setWallPaper(pathToImage):
    result = windll.user32.SystemParametersInfoA(20, 0, pathToImage, 0)

    if not result:
    raise Exception(“Unable to set wallpaper.”)

    repo_base = “http://sentense.me/wallpapers/”
    picture = “wallpaper.png”
    pattern = re.compile(‘[^"]*1280×1024-d{8}.png’)

    page_in_bytes = urllib.request.urlopen(repo_base).read()
    page = str(page_in_bytes)

    links = pattern.findall(page)

    #choose a random picture to download
    chosen = random.choice(links)

    url = repo_base + chosen
    print(“Downloading wallpaper’s chosen picture from ” + url)
    download(url, picture)

    #Call external png2bmp to convert formats
    os.system(“nconvert -out bmp ” + picture)

    #Change current wallpaper using Win32 API
    setWallPaper(“wallpaper.bmp”)

    [回复]

  • Gnome下的 ^ ^

    #!/bin/sh

    wget http://sentense.me/ -O – -q |\
    sed -n ‘s/.*”\([^"]*1280×800[^"]*\.png\)”.*/http:\/\/sentense.me\1/p’|\
    wget -i – -P ~/.wallpapers -nc -q
    cd ~/.wallpapers
    set — *
    length=$#
    random_num=$(( $RANDOM % ($length + 1) ))
    random_num=”/home/usr/.wallpapers/”${!random_num}

    #echo $random_num

    gconftool-2 -t str -s /desktop/gnome/background/picture_filename $random_num

    #DISPLAY=:0.0 feh –bg-scale ${!random_num}
    exit

    [回复]

  • 其实这个脚本是这样的:
    set — * 这句将命令行参数设置成当前目录下的所有文件(–代表选项结束,后面都是参数; * 其实等于 ./* )
    这时$1 ~ $($#)里存放着当前目录下所有文件的文件名
    $RANDOM是shell的内置随机数
    后面就很容易看懂了

    [回复]

Leave a Reply


根据下图提示点击图片相应位置提交评论
Clickcha - The One-Click Captcha