每日一首古詩, 每日一個桌面桌布
阿新 • • 發佈:2018-11-13
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
正好今天沒課,於是閒不下來,做了兩個小工具。
- 每日古詩詞
- 每日桌布
這兩個小指令碼都不難,所以很容易上手。
依賴
兩個介面
這兩個小工具的實現,離不開下面的這兩個介面,分別是:
- 古詩詞介面:http://api.riji.live/
- 桌布介面:http://api.riji.live/img.html (底層爬取的還是有必應桌面 … …)
點選上面的連結就可以進入介面詳情介面了,文件也很詳細,就不在過多敘述了。
第三方庫
由於需要訪問網路並且作業系統桌布,所以需要使用下面的庫:
- requests: 用於網路請求,獲取結果
- json: 用於處理返回的JSON資料
- win32api, win32gui, win32con: 作業系統桌布
每日詩詞
最後做成的效果就是可以搜尋詩詞名稱,作者名稱的古詩詞作品,並顯示到終端中。方便學習和使用。
程式碼
# coding: utf-8import requestsimport jsondef getData(url, title=None, author=None, years=''): headers = { 'apikey': '56eab527a0facb6670b552fd' } data = { 'title': title, 'author': author, 'year': years } rawdata = requests.post(url, data=data, headers=headers) result = json.loads(rawdata.text.encode('utf-8')) return resultdef showPoems(data): query_result = data['msg'] query_size = data['count'] query_result = data['result'] for index in range(len(query_result)): item = query_result[index] print_length = len(item['infoText']) if len(item['infoText']) < 64 else 64 print '-'*(print_length), 'BEGIN %d'%(index+1), '-'*(print_length) print item['title'], item['years'], item['author'] print item['infoText'] print '\n' print '-'*28, 'END', '-'*28if __name__ == '__main__': print "作者名稱author, 詩詞名稱title 二選一, years為可選項,如唐朝,宋朝等".decode('utf-8').encode('gbk') url = 'http://api.getlove.cn/api/poetry' title = raw_input("Poem title: ").decode('gbk') author = raw_input('Poem author: ').decode('gbk') years = raw_input('Poem years: ').decode('gbk') showPoems(getData(url, title=title, author=author, years=years))
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
效果圖(gif)
- 按古詩詞標題查詢
- 按古詩詞作者查詢
每日桌面
程式碼
原理:
在使用win32con.SPI_SETDESKWALLPAPER
設定Wallpaper時,其第二個引數為圖片路徑,圖片必須是BMP格式。如下:
win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER, imagepath, 1+2)
- 1
否則將報錯如下:
pywintypes.error: (0, 'SystemParametersInfo', 'No error message is available')
- 1
win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER, tmppath, 0)
- 1
- 2
效果圖(gif)
總結
回顧一下,本次實驗內容。複習了requests和win32api庫的使用。
美中不足的是指令碼仍然不夠靈活,拓展性也不夠強,
每日古詩詞那個在終端中顯示的介面效果不夠良好,太粗糙。
每日桌面那個還可以更加人性化,比如做成定時更換桌布等等。