最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一步步教你用python給女朋友寫個微信自動提醒的程序

 更新時間:2021年10月08日 15:06:02   作者:孟意昶  
如今微信已成為我們日常生活的主要交流工具,但是微信自身的功能有時候可能并不能滿足我們的需要,因此我們會想是否可以進行微信功能的拓展呢,這篇文章主要給大家介紹了關于利用python給女朋友寫了個微信自動提醒程序的相關資料,需要的朋友可以參考下

前言

事件背景是經(jīng)常有很多瑣碎的事情需要在某個時間點去做,光靠人力去記,容易出現(xiàn)偏差,尤其是對容易迷糊的選手。

所以動手寫了一套代碼,可以按需要通過微信發(fā)送消息,不論是給自己充當自動提醒的備忘錄還是給其他人發(fā)送定時消息,都可以在這套代碼的基礎上實現(xiàn)。

首先放上最終成果示例:

這里插入圖片描述

圖中的文字都是可以根據(jù)自身需要而進行修改的,所以文章中附上的代碼也只是拋磚引玉,讀者可以根據(jù)自身需要而進行調整。本篇文章會分三個部分,依次介紹實現(xiàn)的方式,分別是

  • 文本內容的確定
  • 微信端發(fā)送消息的實現(xiàn)
  • 定時任務的設置

第一步:文本內容的確定

這里說的“文本內容”實際指的就是你想要發(fā)送的信息,所以其內容是大相徑庭的,需要根據(jù)自身需要進行調整,作者也就簡單介紹一下截圖里內容對應的代碼,截圖中的第一行“每日早安”是微信發(fā)消息時設置的,第二行是簡單的打招呼,純文字即可,此處按下不表。

第三行“現(xiàn)在是2021-10-07 11:25,星期四”,發(fā)送消息時的日期與星期數(shù),其對應的python腳本如下:

# 發(fā)送內容 今日日期與星期數(shù)
import datetime
import calendar
import time
sysdate = datetime.date.today()  # 只獲取日期
now_time = datetime.datetime.now()  # 獲取日期加時間
week_day = sysdate.isoweekday()  # 獲取周幾
week = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期天']
text_date = '現(xiàn)在是' + str(now_time)[0:16] + ',' + week[week_day -1 ]
print(text_date)

第四行“天氣情況是晴,溫度是8~19攝氏度”,這里會涉及一個簡單的爬蟲,需要我們去天氣網(wǎng)站上爬取當前天氣情況,腳本如下:

#發(fā)送內容:天氣情況
import requests
from bs4 import BeautifulSoup
import datetime

url = 'http://www.weather.com.cn/weather/101010300.shtml'
sysdate=datetime.date.today()
r = requests.get(url, timeout=30)  # 用requests抓取網(wǎng)頁信息
r.raise_for_status()  # 可以讓程序產(chǎn)生異常時停止程序
r.encoding = r.apparent_encoding #編碼格式
html=r.text

final_list = []
soup = BeautifulSoup(html, 'html.parser')  # 用BeautifulSoup庫解析網(wǎng)頁 #soup里有對當前天氣的建議
body = soup.body #從soup里截取body的一部分
data = body.find('div', {'id': '7d'})
ul = data.find('ul')
lis = ul.find_all('li')

for day in lis:
    temp_list = []

    date = day.find('h1').string  # 找到日期
    if date.string.split('日')[0]==str(sysdate.day):
        temp_list = []

        date = day.find('h1').string  # 找到日期
        temp_list.append(date)

        info = day.find_all('p')  # 找到所有的p標簽
        temp_list.append(info[0].string)

        if info[1].find('span') is None:  # 找到p標簽中的第二個值'span'標簽——最高溫度
            temperature_highest = ' '  # 用一個判斷是否有最高溫度
        else:
            temperature_highest = info[1].find('span').string
            temperature_highest = temperature_highest.replace('℃', ' ')

        if info[1].find('i') is None:  # 找到p標簽中的第二個值'i'標簽——最高溫度
            temperature_lowest = ' '  # 用一個判斷是否有最低溫度
        else:
            temperature_lowest = info[1].find('i').string
            temperature_lowest = temperature_lowest.replace('℃', ' ')

        temp_list.append(temperature_highest)  # 將最高氣溫添加到temp_list中
        temp_list.append(temperature_lowest)  # 將最低氣溫添加到temp_list中

        final_list.append(temp_list)  # 將temp_list列表添加到final_list列表中
        text_weather = '天氣情況是' + final_list[0][1] + ',溫度是' + final_list[0][3].strip() + '~' + final_list[0][2].strip() + '攝氏度'

第五行“剛發(fā)的工資,請對它好一點哦”,這里是計算出距離發(fā)工資日期的天數(shù),畢竟打工人最關心的莫過于此了。

import datetime
import calendar
import time
import emoji
# 獲取當前月最后一天
next_month = sysdate.replace(day=28) + datetime.timedelta(days=4)  # 獲取到下個月
minus = datetime.timedelta(days=next_month.day)  # 獲取next_month的天數(shù)
salary_date=next_month - minus  # next_month減去自身的天數(shù),即可得到本月的月底最后一天

# 判斷實際發(fā)工資日期,目前只考慮了周末,未考慮節(jié)假日
if salary_date.isoweekday() == 6:
    salary_date_actual = salary_date - datetime.timedelta(days=1)  # 若發(fā)工資日期為周六,則實際會在周五發(fā)放,提前1天
elif salary_date.isoweekday() == 7:
    salary_date_actual = salary_date - datetime.timedelta(days=2)  # 若發(fā)工資日期為周日,則實際會在周五發(fā)放,提前2天
else:
    salary_date_actual=salary_date  # 實際發(fā)放工資日期

# 獲取當前日期與發(fā)工資日的天數(shù)差距
day_between = salary_date_actual.day - sysdate.day
if day_between == 0:
    text_salary = '今天發(fā)工資啦!沖鴨?。?!'
elif day_between < 0 or day_between > 20:
    text_salary = '剛發(fā)的工資,請對它好一點哦' + emoji.emojize(':wink:', use_aliases=True)
else:
    text_salary = '距離發(fā)工資還有' + str(day_between) + '天'

至此,截圖中的文本內容已經(jīng)得以實現(xiàn),可以看到,這一步的代碼是和實際需求緊密相關的,所以各位讀者可以根據(jù)自身需要完成這一步。

第二步:微信端發(fā)送消息的實現(xiàn)

當我們確定好文本內容后,就需要通過微信將信息發(fā)送出去,前幾年還有itchat之類的第三方庫使用,但最近這些庫好像都沒法使用,所以就只能尋找其他思路。微信公眾號是有一個主動給用戶發(fā)送消息的權限,所以考慮通過微信公眾號來實現(xiàn)這一功能,所以作者嘗試使用自己申請的個人微信公眾號,但發(fā)現(xiàn)主體為個人的,是沒有這個權限的,而如果要申請企業(yè)類型的,還得自掏腰包,所以就只能放棄使用自己的微信公眾號。

轉而將目光轉移到市面上現(xiàn)有的可提供主動發(fā)消息的微信公眾號:喵提醒。

直接搜索這個名字應該就可以搜到,關注后找到“添加提醒”,按順序完成即可,注意我們在第一步里按下不表的第一行內容“每日早安”這四個字,實際就是在喵提醒里設置的,即這個提醒的名稱。“提醒方式”則選擇“公眾號文字提醒”,畢竟只有這個是免費的。

當你在喵提醒內完成提醒的設置后,系統(tǒng)會給你返回一個“喵碼”,這個喵碼是一定要存下來的,只有當你訪問這個喵碼對應的網(wǎng)址時,公眾號才會給對你進行消息的發(fā)送。

當你完成這一步之后,就只需要通過python腳本訪問喵碼對應的網(wǎng)址,并傳上你需要發(fā)送的內容,公眾號就會將內容再發(fā)到微信上了,訪問的代碼如下:

from urllib import request, parse
import json
#訪問喵提醒,發(fā)送微信消息
class Message(object):
    def __init__(self,text):
        self.text = text
    def push(self):
        # 重要,在id中填寫自己綁定的id
        page = request.urlopen("http://miaotixing.com/trigger?" + parse.urlencode({"id": "此處填寫喵碼", "text": self.text, "type": "json"}))
        result = page.read()
        jsonObj = json.loads(result)
        if (jsonObj["code"] == 0):
            print("\nReminder message was sent successfully")
        else:
            print("\nReminder message failed to be sent,wrong code:" + str(jsonObj["code"]) + ",describe:" + jsonObj["msg"])

text = f"""
早上好呀❤❤❤❤❤❤❤❤
{text_date}
{text_weather}
{text_salary}
"""
message = Message(text)
message.push() # 完成推送

這段代碼里的text就是你需要發(fā)送的內容,代碼中“此處填寫喵碼”是需要將上面提到的喵碼復制進來,“早上好呀”這個打招呼的內容就是在這里手動寫上去的,而{text_date}、{text_weather}、{text_salary}就是我們在第一步里準備好的內容。

有一點需要注意,這里是通過喵碼發(fā)送信息,所以這個喵碼對應的用戶是誰,這條信息就會發(fā)給誰,所以如果是由你的賬戶申請的喵碼,但內容又是希望發(fā)給別人的,則需要手動轉發(fā)或者換成別人的喵碼。

但是這個方法目前是存在一個弊端的,以文本方式發(fā)送的話,需要你每48小時給微信公眾號發(fā)送任意一條消息,不然公眾號將失去給你主動發(fā)消息的權限,不過就實際使用情況來說,這個弊端還是能接收的,因為當公眾號給你發(fā)消息后,隨便回一條消息即可,當然如果有更好的方式,還請各位讀者進行指點。

第三步:定時任務的設置

前兩步完成后,當你調用python腳本,就可以實現(xiàn)讓微信公眾號給你發(fā)送消息了,但在實際場景中,肯定是希望定時自動調用腳本,而非手動執(zhí)行,為了實現(xiàn)這個目標,本來是考慮通過schedule庫來定時操作,但后來發(fā)現(xiàn)用這個庫的話,這個腳本需要一直在后臺運行,而且還不能進行其他操作,所以我們在這里選用了WIN10系統(tǒng)自帶的“計劃程序”功能,對應路徑是:控制面板-系統(tǒng)和安全-管理工具-任務計劃程序。

在進行設置計劃之前,還有一個準備工作需要做,因為WIN10系統(tǒng)無法直接調用python腳本,所以我們需要先準備一個txt文件,其內容是

python xxx.py

xxx對應的就是寫好的python腳本名稱,完成內容后,再將這個txt文件的后綴修改為.bat,并讓這個bat文件和python腳本在同一個文件夾內,這樣就形成了一個可以由WIN10系統(tǒng)調用的bat文件了,并且這個bat文件的內容就是調用你指定的python腳本。

完成這個準備工作后,我們在“計劃程序”面板,選擇“創(chuàng)建基本任務”

填寫計劃名稱和描述,點擊下一步后,是選擇調度的頻率,根據(jù)自身需要選擇即可

如果是選擇每天的話,還需要選擇具體時間,根據(jù)自身需要選擇即可。

下一步的“操作”也只能選擇“啟動程序”

再下一步的“啟動程序”,就需要我們提前準備好的bat文件了,在“程序或腳本”下面選擇bat文件,“起始于”后面的框框里填上bat文件所在的文件路徑。

事情到這里還差最后一點點。

當完成上述操作后,在計劃程序面板會出現(xiàn)你剛剛命名的計劃,選中后右鍵,進入“屬性”,選擇“不管用戶是否登錄都要運行”,避免用戶不同導致程序沒有執(zhí)行。

再去“條件”中修改電源配置,建議取消限制,如果是筆記本電腦的話,勾選了紅框內的方框,則在沒有連接電源的情況下,是不會執(zhí)行腳本的。

至此,大功告成,各位讀者可以根據(jù)自身需求修改對應內容,如文章內有何錯誤,或有其他建議,煩請各位不吝賜教。

全文完整代碼如下:

from urllib import request, parse
import json
import emoji

# 發(fā)送內容 今日日期與星期數(shù)
import datetime
import calendar
import time
sysdate = datetime.date.today()  # 只獲取日期
now_time = datetime.datetime.now()  # 獲取日期加時間
week_day = sysdate.isoweekday()  # 獲取周幾
week = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期天']
text_date = '現(xiàn)在是' + str(now_time)[0:16] + ',' + week[week_day -1 ]

# 獲取當前月最后一天
next_month = sysdate.replace(day=28) + datetime.timedelta(days=4)  # 獲取到下個月
minus = datetime.timedelta(days=next_month.day)  # 獲取next_month的天數(shù)
salary_date=next_month - minus  # next_month減去自身的天數(shù),即可得到本月的月底最后一天

# 判斷實際發(fā)工資日期,目前只考慮了周末,未考慮節(jié)假日
if salary_date.isoweekday() == 6:
    salary_date_actual = salary_date - datetime.timedelta(days=1)  # 若發(fā)工資日期為周六,則實際會在周五發(fā)放,提前1天
elif salary_date.isoweekday() == 7:
    salary_date_actual = salary_date - datetime.timedelta(days=2)  # 若發(fā)工資日期為周日,則實際會在周五發(fā)放,提前2天
else:
    salary_date_actual=salary_date  # 實際發(fā)放工資日期

# 獲取當前日期與發(fā)工資日的天數(shù)差距
day_between = salary_date_actual.day - sysdate.day
if day_between == 0:
    text_salary = '今天發(fā)工資啦!沖鴨?。?!'
elif day_between < 0 or day_between > 20:
    text_salary = '剛發(fā)的工資,請對它好一點哦' + emoji.emojize(':wink:', use_aliases=True)
else:
    text_salary = '距離發(fā)工資還有' + str(day_between) + '天'

#發(fā)送內容:天氣情況
import requests
from bs4 import BeautifulSoup
import datetime

url = 'http://www.weather.com.cn/weather/101010300.shtml'
sysdate=datetime.date.today()
r = requests.get(url, timeout=30)  # 用requests抓取網(wǎng)頁信息
r.raise_for_status()  # 可以讓程序產(chǎn)生異常時停止程序
r.encoding = r.apparent_encoding #編碼格式
html=r.text

final_list = []
soup = BeautifulSoup(html, 'html.parser')  # 用BeautifulSoup庫解析網(wǎng)頁 #soup里有對當前天氣的建議
body = soup.body #從soup里截取body的一部分
data = body.find('div', {'id': '7d'})
ul = data.find('ul')
lis = ul.find_all('li')

for day in lis:
    temp_list = []

    date = day.find('h1').string  # 找到日期
    if date.string.split('日')[0]==str(sysdate.day):
        temp_list = []

        date = day.find('h1').string  # 找到日期
        temp_list.append(date)

        info = day.find_all('p')  # 找到所有的p標簽
        temp_list.append(info[0].string)

        if info[1].find('span') is None:  # 找到p標簽中的第二個值'span'標簽——最高溫度
            temperature_highest = ' '  # 用一個判斷是否有最高溫度
        else:
            temperature_highest = info[1].find('span').string
            temperature_highest = temperature_highest.replace('℃', ' ')

        if info[1].find('i') is None:  # 找到p標簽中的第二個值'i'標簽——最高溫度
            temperature_lowest = ' '  # 用一個判斷是否有最低溫度
        else:
            temperature_lowest = info[1].find('i').string
            temperature_lowest = temperature_lowest.replace('℃', ' ')

        temp_list.append(temperature_highest)  # 將最高氣溫添加到temp_list中
        temp_list.append(temperature_lowest)  # 將最低氣溫添加到temp_list中

        final_list.append(temp_list)  # 將temp_list列表添加到final_list列表中
        text_weather = '天氣情況是' + final_list[0][1] + ',溫度是' + final_list[0][3].strip() + '~' + final_list[0][2].strip() + '攝氏度'

#訪問喵提醒,發(fā)送微信消息
class Message(object):
    def __init__(self,text):
        self.text = text
    def push(self):
        # 重要,在id中填寫自己綁定的id
        page = request.urlopen("http://miaotixing.com/trigger?" + parse.urlencode({"id": "此處填寫喵碼", "text": self.text, "type": "json"}))
        result = page.read()
        jsonObj = json.loads(result)
        if (jsonObj["code"] == 0):
            print("\nReminder message was sent successfully")
        else:
            print("\nReminder message failed to be sent,wrong code:" + str(jsonObj["code"]) + ",describe:" + jsonObj["msg"])

text = f"""
早上好呀❤❤❤❤❤❤❤❤
{text_date}
{text_weather}
{text_salary}
"""
message = Message(text)
message.push() # 完成推送

全文到此結束。

總結

到此這篇關于用python給女朋友寫了個自動提醒程序的文章就介紹到這了,更多相關python寫個自動提醒程序內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 如何利用Matlab制作一款真正的拼圖小游戲

    如何利用Matlab制作一款真正的拼圖小游戲

    這篇文章主要給大家介紹了關于如何利用Matlab制作一款真正的拼圖小游戲的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-05-05
  • Python list sort方法的具體使用

    Python list sort方法的具體使用

    list.sort()方法是Python的列表方法,用于對原列表進行排序。本文詳細的介紹了list.sort的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2021-12-12
  • Python已解決NameError: name ‘xxx‘ is not defined

    Python已解決NameError: name ‘xxx‘ is not&nb

    本文主要介紹了Python已解決NameError: name ‘xxx‘ is not defined,解決報錯NameError: name 'xxx' is not defined的關鍵在于仔細檢查拼寫、作用域和賦值等問題,感興趣的可以了解一下
    2024-06-06
  • python輸出數(shù)組中指定元素的所有索引示例

    python輸出數(shù)組中指定元素的所有索引示例

    今天小編就為大家分享一篇python輸出數(shù)組中指定元素的所有索引示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • python str與repr的區(qū)別

    python str與repr的區(qū)別

    repr() 輸出對 Python比較友好,而str()的輸出對用戶比較友好。雖然如此,很多情況下這三者的輸出仍然都是完全一樣的
    2013-03-03
  • pytorch如何自定義forward和backward函數(shù)

    pytorch如何自定義forward和backward函數(shù)

    PyTorch自動求導功能強大,但在特定情況下需要用戶自行定義backward函數(shù),通過實例解釋了保存變量、計算梯度、鏈式法則等核心概念,并展示了如何通過自定義函數(shù)集成到網(wǎng)絡中以及如何正確返回梯度,此外,還討論了多輸出情況下的梯度傳遞
    2024-10-10
  • pandas之分組groupby()的使用整理與總結

    pandas之分組groupby()的使用整理與總結

    這篇文章主要介紹了pandas之分組groupby()的使用整理與總結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • 利用pandas將非數(shù)值數(shù)據(jù)轉換成數(shù)值的方式

    利用pandas將非數(shù)值數(shù)據(jù)轉換成數(shù)值的方式

    今天小編就為大家分享一篇利用pandas將非數(shù)值數(shù)據(jù)轉換成數(shù)值的方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • python?共現(xiàn)矩陣的實現(xiàn)代碼

    python?共現(xiàn)矩陣的實現(xiàn)代碼

    這篇文章主要介紹了python?共現(xiàn)矩陣的實現(xiàn)代碼,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • python 使用遞歸回溯完美解決八皇后的問題

    python 使用遞歸回溯完美解決八皇后的問題

    今天小編就為大家分享一篇python 使用遞歸回溯完美解決八皇后的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02

最新評論

永城市| 融水| 西充县| 太湖县| 清远市| 赤水市| 玉林市| 长寿区| 章丘市| 安阳市| 太仓市| 府谷县| 新邵县| 闽侯县| 山东| 西和县| 两当县| 电白县| 灵丘县| 剑川县| 长沙县| 抚宁县| 乐业县| 宣武区| 恩平市| 会昌县| 芒康县| 通河县| 临西县| 治县。| 囊谦县| 宾阳县| 西乌珠穆沁旗| 武义县| 汕尾市| 青田县| 黄冈市| 铜山县| 新田县| 隆昌县| 北京市|