用Python將女朋友的照片做成壁紙軟體,實現桌面壁紙自動更換!

来源:https://www.cnblogs.com/hahaa/archive/2023/05/22/17421564.html
-Advertisement-
Play Games

話說兄弟們,女朋友生氣了都是怎麼哄的? 不會吧不會吧,不會有人還是單身狗吧! 算了,還是回到正題吧,再說我要挨打了~ 今天咱們來交流一下程式員是怎麼哄女朋友的,話不多說直接開始! 準備工作 1、環境 首先我們準備好環境和編輯器,我使用的是: Python 3.8 解釋器 Pycharm 編輯器 2、 ...


話說兄弟們,女朋友生氣了都是怎麼哄的?

不會吧不會吧,不會有人還是單身狗吧!

 

 

算了,還是回到正題吧,再說我要挨打了~

今天咱們來交流一下程式員是怎麼哄女朋友的,話不多說直接開始!

準備工作

1、環境

首先我們準備好環境和編輯器,我使用的是:

  • Python 3.8 解釋器
  • Pycharm 編輯器

2、使用的模塊

import re  # 正則表達式模塊
import requests  # 數據請求模塊
import os  # 文件操作模塊
import ctypes # 時間模塊

 

request是第三方模塊,需要手動安裝一下,win + R輸入cmd 輸入安裝命令pip install requests

其它的都是自帶的,不用安裝,直接調用。

3、如何配置pycharm裡面的python解釋器?

  1. 選擇file(文件) >>> setting(設置) >>> Project(項目) >>> python interpreter(python解釋器)
  2. 點擊齒輪, 選擇add
  3. 添加python安裝路徑

4、pycharm如何安裝插件?

  1. 選擇file(文件) >>> setting(設置) >>> Plugins(插件)
  2. 點擊 Marketplace 輸入想要安裝的插件名字 比如:翻譯插件 輸入 translation / 漢化插件 輸入 Chinese
  3. 選擇相應的插件點擊 install(安裝) 即可
  4. 安裝成功之後 是會彈出 重啟pycharm的選項 點擊確定, 重啟即可生效

代碼實戰

為了單身的小伙伴,於是我將案例分為兩個部分。

  1. 獲取壁紙
  2. 設置自動更換

當然,不單身的話直接看第二部分,哈哈~

1、獲取壁紙

首先來實現單張壁紙獲取

這裡分為四個步驟來獲取壁紙,後面的網址我都屏蔽一下,防止檢測。

  1. 發送請求, 對於 .***.com/desk/31131.htm 發送請求
  2. 獲取數據, 獲取網頁源代碼 <伺服器返迴響應數據>
  3. 解析數據, 提取我們想要的數據內容 壁紙鏈接以及名字
  4. 保存數據, 把壁紙文件保存到本地文件

發送請求

for page in range(3, 21):
    print(f'正在採集第{page}頁的數據內容')
    # 請求鏈接
    link = f'http://www.****.com/index_{page}.htm'
    # 發送請求
    html_data = requests.get(link).text
    # 提取ID
    img_id_list = re.findall('<a href="/desk/(\d+)\.htm" title=', html_data)
    # for迴圈遍歷
    for img_id in img_id_list:
        # 請求鏈接
        url = f'http://www.***.com/desk/{img_id}.htm'
        # 發送請求
        response = requests.get(url)

 

獲取數據

    response.text 獲取響應文本數據
response.encoding = response.apparent_encoding 自動識別碼

 

解析數據

# 獲得到數據, 返回出現亂碼了
response.encoding = 'gbk'
# 鏈接地址 以及 標題
img, title = re.findall('<img src="(.*?)" alt="(.*?)"', response.text)[0]
print(img, title)

 

保存數據

# 發送請求, 獲取數據
# 完整源碼+視頻講解+表白牆代碼
# 都放在這個摳裙了:815624229
img_content = requests.get(img).content
with open('img\\' + title + '.jpg', mode='wb') as f:
    f.write(img_content)

 

多頁多個數據採集

這裡只講一下大概思路,我有專門錄製視頻來講解,可以在文末獲取。

一個鏈接, 對應一個數據,獲取多個鏈接, 獲取多個數據。

http://www.***.com/desk/31095.htm
http://www.***.com/desk/31131.htm
http://www.***.com/desk/31090.htm
http://www.***.com/desk/31092.htm
第二頁: http://www.***.com/index_2.htm
第三頁: http://www.***.com/index_3.htm
第四頁: http://www.***.com/index_4.htm

 

自動更換壁紙程式

import os
import ctypes
import cv2
 
 
def Change():
    # 壁紙文件夾路徑
    wallpaper_dir = r"D:\壁紙\output"
    # 獲取壁紙文件夾中的文件列表
    wallpapers = os.listdir(wallpaper_dir)
    # 隨機選擇一張壁紙
    # wallpaper_filename = random.choice(wallpapers)
    for wallpaper in wallpapers:
        # 拼接壁紙文件的完整路徑
        wallpaper_path = os.path.join(wallpaper_dir, wallpaper)
        # 設置壁紙
        ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper_path, 3)
 
 
def convert_mp4_to_jpgs(path):
    video_capture = cv2.VideoCapture(path)
    still_reading, image = video_capture.read()
    frame_count = 5  # 保存的起始幀的編號005
    while still_reading:
        cv2.imwrite(f"output/frame_{frame_count:03d}.jpg", image)
        # read next image
        still_reading, image = video_capture.read()
        frame_count += 5  # 保存幀依次增加5,005>>010>>015.......
 
Change()

 

最後

為了大家能更好的讓女朋友感受到你的誠意,我還準備了一份將女友照片做成照片牆的源碼,和本文源碼+視頻講解都打包好了,直接在在公眾號【Python學習交流】發送關鍵字【照片】自動領取。

來看看效果


好了,哄女朋友的分享就到這結束了,建議大家沒事還是不要惹女朋友生氣了,哄好了還好,哄不好就G了!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 參考:[Building a WebGL Carousel with React Three Fiber and GSAP](https://tympanus.net/codrops/2023/04/27/building-a-webgl-carousel-with-react-three-fibe ...
  • ## 一、模式動機 迭代器模式(Iterator Pattern)是一種使用頻率非常高的行為型設計模式,**迭代器**用於**對一個聚合對象進行遍歷**。通過**引入迭代器**可以**將數據的遍歷功能從聚合對象中分離出來**,**聚合對象只負責存儲數據**,而**遍曆數據由迭代器來完成**,簡化了聚 ...
  • 之前總聊微服務,今天換一個話題---低代碼。低代碼這個詞也是最近這幾年很火的概念,尤其是遇到大環境下行,很多大廠和互聯網那個公司也在慢慢在低代碼方向發力,當然,對於傳統項目交付型的軟體公司,低代碼也具有相當大的吸引力。 ...
  • 不同團隊落地DDD所採取的應用架構風格可能不同,並沒有統一的、標準的DDD工程架構。即使無法制定通用的、標準的工程應用架構,但為團隊制定一個遵循領域驅動設計思想的參考架構依然有價值。 ...
  • 今天又是摸魚的一天,在群里閑聊的時候突然有位群友題了個問題: ![](https://img2023.cnblogs.com/blog/2696704/202305/2696704-20230522233309409-1620806525.png) 群友們反應很快,一下子就解決了沒有加關鍵字vola ...
  • # 前言 Java 中的三元運算,平時也叫做三目運算,大家瞭解嗎?下麵就詳細介紹一下,以後在項目編程中用得到。 # 一、Java運算符 在最底層,Java 中的數據是通過使用運算符來操作的。運算符是一種特殊的符號,用來表示數據的運算、賦值和比較等等。每一種編程語言都有運算符,在 Java 中運算符可 ...
  • 視頻地址 # 1 Stream流概述 - 目的:簡化集合和數組操作的API,結合了Lambda表達式。 - Stream流式思想的核心: 1. 先得到集合或者數組的Stream流(就是一根傳送帶) 2. 把元素放上去 3. 用這個Stream流簡化的API來方便的操作元素 # 2 Stream流獲取 ...
  • ### 子類調用父類的方法的三種方式: - 父類名.方法名(self) - super(子類名,self).父類方法名() - super().父類方法名 註意:super()通過子類調用當前父類的方法,super預設會調用第一個父類的方法(適用於單繼承的多層繼承 如下代碼: ```python # ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...