Making Your Daily Desktop Background Updater

1947 views Nov 23, 2024

ကျွန်တေ်ာတို့ဒီနေ့ Bing Wallpaper of the day က ပုံကို ကျွန်တော်တို့ desktop background အနေနဲ့ ဘယ်လို script လေး run လိုက်တာနဲ့ auto download သွားလုပ်ပြီးပြောင်းရမယ်ဆိုတာကိုကြည့်ရအောင်။ကျွန်တော်တို့ bing က နေ့တစ်နေ့တာရဲ့ အကောင်းဆုံး background ပုံကိုအမြဲပြောင်းပေးပါတယ်။ကျွန်တော်တို့လုပ်ရမယ့်အလုပ်က အဲ့website ကို request လွှတ်ပြီး ရလာမယ့်response ထဲကမှ လိုချင်တဲ့ tags ကိုပြန်ထုတ်ရပြီး အဲ့ကနေ image ရဲ့ data ရတော့ ပြန်ပြီး ပုံကို download ပြန်ဆွဲပြီး ချိန်းရမှာပါ။အောက်က code ကိုကြည့်လိုက်ပါ။

from urllib.request import urlretrieve
from bs4 import BeautifulSoup
import requests
import datetime
import os
 
 
# getting html from url
url = "https://bingwallpaper.com/"
image_name = datetime.datetime.now().strftime('%Y-%m-%d')
res = requests.get(url).text
soup = BeautifulSoup(res,"html.parser")
 
# getting image link from html
image_link = soup.find('a',{'class':'cursor_zoom'})
image = image_link.find('img')
 
# finding image extension and build image full name with today date
ext = image['src'].split("/")[-1].split(".")[-1]
image_full_name = image_name+"."+ext
 
# download image and set it to desktop background
urlretrieve(image['src'],'{}'.format(image_full_name))
os.system("gsettings set org.gnome.desktop.background picture-uri file:///"+
	str(os.path.join(os.getcwd(),image_full_name)))

ကျွန်တော်တို့ line 1 to 4 မှာလိုအပ်တာတွေ import လုပ်လိုက်ပါတယ်။ဒီ tutorial မှာလိုအပ်တာတွေဘယ်လို install လုပ်ရမယ်ကို မသိရင် Downloading All Images From Web Page မှာသွားဖတ်ပေးပါ။ကျွန်တော်ဒီ ပို့စ်မှာတော့ သိပ်မပြောတော့ပါဘူး။

ကျွန်တော်ပြောခဲ့သလို step 1 website  url = “https://bingwallpaper.com/” ကို request ပို့ရမှာမို့လို့ requests ကိုသုံးပြီး get method နဲ့ပို့လိုက်ပြီး response ကို res ထဲထည့်လိုက်ပါတယ်။step 2 လိုချင်တာတွေရှာရမှာမို့လို့ BeautifulSoup ကိုသုံးပြီး လိုအပ်တာတွေ အကုန်ခွဲထုတ်လို့ရအောင် soup object ဆောက်လိုက်ပါတယ်။အဲ့ soup object ထဲမှာပဲ ကျွန်တော်တို့လိုချင်တာက website တစ်ခုလုံးက data မဟုတ်ပါဘူး။website ကိုသွားကြည့်ပြီး ctrl+u source ဖွင့်ကြည့်လိုက်ရင် request လုပ်လိုက်တာနဲ့ cursor_zoom ဆိုတဲ့ class ထဲမှာ ဒိနေ့ wallpaper image လေးရှိနေပါတယ်။ကျွန်တော်တို့ ဒီမှာ source ဖွင့်ကြည့်ရင် သေချာမတွေ့ရပါဘူး။ဘာလို့ဆိုတော့ ဖွင့်လိုက်တဲ့အခါ  အခု လို request response တင်မဟုတ်ပဲ javascript တွေကလဲအလုပ်လုပ်နေပြီမို့လို့ auto change ကုန်လို့ပါ။

အဲ့တော့ ကျွန်တော်တို့ line 15,16 မှာ image ရှာဖို့ cursor_zoom ဆိုတဲ့ class နဲ့အရင်ရှာလိုက်တော့

<a class="cursor_zoom" href="20180827.html" title="The Unisphere in Flushing Meadows-Corona Park in Queens, New York City, home to the US Open Tennis Championships  (© Carlo Allegri/Reuters)(Bing United States)">
 <img alt="The Unisphere in Flushing Meadows-Corona Park in Queens,
   New York City, home to the US Open Tennis Championships  (© Carlo 
   Allegri/Reuters)(Bing United States)" 
   src="https://www.bing.com/az/hprichbg/rb/Unisphere_EN-US7027287379_1366x768.jpg" 
   title="Check Details: The Unisphere in Flushing Meadows-Corona Park in Queens, New York City, home to the US Open Tennis Championships  (© Carlo Allegri/Reuters)(Bing United States)" width="100%"/>
</a>

အဲ့ထဲကမှကျွန်တော်တို့ လိုချင်တာက image ပဲမို့လို့ img ကိုထပ်ရှာလိုက်ပါတယ် line 16 မှာ။ကျွန်တော်တို့က download လုပ်မှာဖြစ်လို့ အရေးကြီးဆုံးက image source src ပါ။line 19,20 မှာ image ကို ဘာနဲ့save မယ်နဲ့ ဒီနေ့date နဲ့ save မယ်ကိုရေးထားပါတယ်။2018-08-27.jpg လို့ထွက်လာမှာပါ။ဘာလို့ဆိုတော့ အပေါ်ကနေ src attribute ကိုကြည့်မယ်ဆို နောက်ဆုံးမှာ .jpg နဲ့ဆုံးနေတာကိုတွေ့ရမှာပါ။

အဲ့တော့ကျွန်တော်တို့ urlretrieve ကိုသုံးပြီး image[‘src’]ကို download လုပ်လိုက်ပါတယ်။urlretrieve မှာ ပထမတစ်ခုက download လုပ်ဖို့ url ဖြစ်ပြီး နောက်တစ်ခုက  outputfile ပါ။အဲ့တာကြောင့်ကျွန်တော်တို့ ထွက်စေချင်တဲ့ file name ကိုထည့်ထားတော့ 2018-08-27.jpg အနေနဲ့ထွက်လာမှာပါ။

အောက်ဆုံးတစ်ကြောင်းက တော့ command သုံးပြီး ubuntu မှာ background ချိန်းတာပါ။ဒီနေရာမှာ windows os ဆိုအလုပ်မလုပ်ပါဘူး။အဲ့တာတော့ တမင်မပြတာပါ။ဘာလို့ဆိုတော့ ကိုယ်တိုင် ချိန်းလို့ရအောင်ပါ။google မှာ ဘယ်လို change ရမယ်ကို ရှာပြီး try ကြည့်ပါ။

အခုတော့ ubuntu 18.04 နဲ့စမ်းထားပါတယ်။ကျွန်တော်တို့ နောက်ဆုံးမှာ os moduleကိုသုံးပြီး ကျွန်တော်တို့ ပုံလေးရှိတဲ့ လမ်းကြောင်းကိုထည့်ပေးထားတော့ os.system နဲ့အထဲက command ကို run တဲ့အခါ ပုံဘယ်နားမှာရှိလဲသိနေတော့ အဲ့ပုံကို ချိန်းပေးသွားတာပါ။အားလုံးကျေးဇူးတင်ပါတယ်။