あなた自身とあなたのデスクトップを素敵にしたい場合-詳細はカットの下にあります。
pythonはクロスプラットフォーム言語であるため、このスクリプトはLinuxだけでなくWindowsでも動作します。
それでは始めましょう。
マテリエル
GoodFonは、サイトでランダムな壁紙を表示する機能を実装することにより、すでに作業の一部を行っています。 そのため、多数のページを解析して自分で選択する必要はありません。 ランダムな壁紙があるページにのみ登り、写真の1つを選択し、それを壁紙としてデスクトップに配置できます。 Goodfonには1つの欠点があります-未登録のユーザーは1日に10個までのEMNIP画像をダウンロードできますが、ダウンロードする必要はありません。
実装
その機能を実行するだけでなく、スクリプトをより面白くすることを決めたので、ユーザーとのわずかに過剰な「コミュニケーション」がいっぱいになります。
まず、必要なものを接続します。
import sys import time from win32api import GetSystemMetrics import urllib2 import os.path import random import re import subprocess import time
私はこのスクリプトを2つのバージョンで作成しました。次の投稿で2番目について説明し、投稿が長くなりすぎないようにしますが、最初のバージョンでは2番目の空白、つまり別の関数で説明する「デフォルトモード」があります。 動作モードの選択は、構成テキストファイルconf.txtによって実行されます。
最初に、画面の解像度を決定して、画像が最大サイズではなく画面に表示されるようにする必要があります。 このために、winAPI GetSystemMetrics関数を使用します。
print " - ", GetSystemMetrics(0), "x", GetSystemMetrics(1)
ここで、0と1はそれぞれ高さと幅の解像度です。
ファイルの読み取り、操作モードの選択などを行うコードの部分については、残りは省略します。これはそれほど重要ではないため、壁紙の壁紙の選択、ダウンロード、インストールにすぐに進みます。
print " . ..." print " ..." page = urllib2.urlopen("http://www.goodfon.ru/mix.html") html = page.read() p = re.compile(r"/wallpaper/[0-9]+\.html") allWal = p.findall(html) walInd = random.randint(0, 41) p2 = re.compile(r"[0-9]+") walIndex = p2.findall(allWal[walInd]) newUrl = "http://www.goodfon.ru/image/" + walIndex[0] + "-" + str(GetSystemMetrics(0)) + "x" + str (GetSystemMetrics(1)) + ".jpg" filename = walIndex[0] + "-" + str(GetSystemMetrics(0)) + "x" + str(GetSystemMetrics(1)) + ".jpg" print filename print " , ..." jpeg = urllib2.urlopen(newUrl) outputJpeg = open(filename, 'wb') outputJpeg.write(jpeg.read()) outputJpeg.close() print " . ..." wallpaperPath = os.path.abspath(os.curdir) + "\\" + filename cmd = "WallpaperChanger.exe" + " " + wallpaperPath subprocess.Popen(cmd, shell = True) print " . !" time.sleep(5)
ここでは、 ランダムな壁紙のリンクをたどり、ページを読み、正規表現を使用して、写真のあるページへのリンクを引き出します。 画像自体へのリンクは、画像+解像度1900x800 +拡張子.jpgのページへのリンクで構成されています。 この後、完全に簡単な手順が残ります-画像ファイルを作成し、削除されたファイルを読み込んで壁紙として設定します。
Googleによると、Windows 7に壁紙をインストールすることは、たとえばXPほど簡単ではないため、最後の点をいじる必要がありました。 問題の解決策を探して、これに小さなWallpaperChangerアプリケーションが使用されている例を見つけました。 これを行うには、ダウンロードしたファイルを引数として指定して、アプリケーション自体を実行する必要があります。
これでスクリプトは完成しました。テーブルにはランダムな壁紙があります。 このようなスクリプトはスタートアップに入れることができ、コンピューターを起動するたびに新しい壁紙があります=)
それをLinuxに転送するには、winAPIの代わりに2、3行すべてを変更して、X関数(または他のいくつかは、意味がないためこのトピックを掘り下げませんでした)を使用する許可を決定する必要がありますが、壁紙を使用するには、例:feh
スクリプト全体
WallpaperChanger