【騰訊雲的1001種玩法】零基礎微信機器人實踐-雲技術對我的開發者的影響

版權聲明:本文由趙越 原創文章,轉載請註明出處: 
文章原文連接:https://www.qcloud.com/community/article/466979001488380106python

來源:騰雲閣 https://www.qcloud.com/communitygit

 

前言

我是一名產品經理,平時對技術比較感興趣,也正是由於對技術有所瞭解也讓個人工做很是輕鬆,平時也看過不少技術文章,我認爲技術文章要麼就是給純技術寫的,要麼就是給那些沒有很深的編程基礎可是熱愛編程或者抱有期待的人看的,這篇文章是寫給後者的,可是不表明內容很是基礎,依然使用了目前比較熱門的技術。github

此次咱們要作一個微信機器人,就是能夠在微信與咱們聊天的機器人,固然目的不是用圖靈機器人那種API完成一些看似很好玩的聊天功能,好歹要讓這個機器人有所做用。docker

那麼來講說個人需求吧,我和朋友作了一個航模視頻的自媒體,做爲一個產品經理,我須要瞭解我發佈的視頻的實時播放量,可是完成這個操做須要進入優酷主頁查看,包括還有每一個視頻的播放量數據都要本身去打開網頁看,這樣很是不方便,好比咱們在羣裏聊到了播放量的話,那麼就會有一個機器人告訴咱們播放了多少,這樣多麼方便,並且看起來還很裝逼,而且,想實現出來真的不難。

前提是咱們已經站在巨人的肩膀上。編程

技術路徑和實現思路


首先編程語言使用了Python,Python語法簡潔、第三方擴展豐富,也由於這裏採用的微信消息框架itchat是基於Python的。服務器

服務器固然使用騰訊雲服務器,這裏我使用的是單核1G內存的最低配置,由於做爲我的用的這個配置綽綽有餘了,而且之後有更多用途的時候能夠直接升級服務器配置和存儲,這就是雲服務器的巨大優點。微信


由於對於大部分人來講,拿到一臺嶄新的服務器要部署服務是很是麻煩的,因此我也不喜歡,因而乎想到了使用docker容器來運行個人代碼,這樣不用手動去配置服務器的運行環境,我只須要建立一個docker鏡像就能夠了,可是這樣感受仍是挺麻煩的,還要安裝docker,還要上傳鏡像。而後我發現了daocloud,它能夠幫助我完成容器管理和鏡像生成的工做。框架

因此咱們部署路徑是這樣的:
編寫代碼->提交代碼到github上->daocloud自動生成docker鏡像並部署到咱們的雲服務器上->自動運行運維

也就是提交代碼到分支,而後,而後自動更新發布,服務就這麼運行成功了編程語言

具體過程

因此對雲服務器的配置而言,我只須要爲其安裝daocloud的被控端程序便可,而後就能夠不再用管這臺服務器了,太爽了吧~

剛好發現騰訊雲也支持了daocloud的系統,在爲雲服務器安裝系統的時候選擇服務市場-Docker容器-Daocloud混合式容器管理平臺便可。

哇,那這樣豈不是爽上加爽,不用登陸服務器作任何配置~拿來即用,真刺激。


安裝過程就很少說了,他們也提供了文檔,很是簡單,兩行命令而已,而後咱們能夠在daocloud後臺添加咱們的主機了。


而後咱們去建立一個項目


須要咱們設置代碼源,能夠選擇github和coding,確實比較人性化,那麼咱們就須要本身去github建立好git項目了,這裏省略過,選擇好後就能夠建立了。

項目建立成功後咱們只須要選擇咱們的代碼分支構建一下就行了,這時容器鏡像就建立好了,下來就是部署。

建立一個應用,會提示咱們選擇鏡像來源,這裏選擇以前構建的鏡像

點擊部署最新版本就行了

而後咱們分別在項目設置和應用設置裏配置自動構建和自動部署,這樣之後咱們只要提交了代碼,daocloud會幫咱們自動構建鏡像而後部署,不須要咱們本身手動操做,只須要專一代碼邏輯,不用再操心部署了。



過程就是這麼簡單,騰訊雲服務器做爲基礎,咱們全程不用手動配置本身的服務器,多麼輕鬆愜意。

程序實現

前面重點講了服務器配置和程序部署,可是實際上部署的程序咱們還沒講。

容器打包必需要有一個Dockerfile來告訴容器如何構建鏡像,爲了構建方便咱們採用的daocloud提供的python鏡像,如下是dockerfile的內容:

FROM daocloud.io/python:3-onbuild ENTRYPOINT ["python"] CMD ["run.py"] 

能夠看到,咱們啓動服務的文件是run.py

run.py

#!/usr/bin/env python3 import bot.xiaoweiwei as wechat def main(): wechat.run() if __name__ == "__main__": main() 

xiaoweiwei.py
```python
import itchat
from target.youku import YoukuData
from target.qqvideo import QQVideoData
from plugins.tuling import get_response

@itchat.msg_register('Text')
def text_reply(msg):
itchat.send('/摳鼻',msg['FromUserName'])
return u'你好,請在羣聊裏面撩我/微笑'

@itchat.msg_register('Text', isGroupChat=True)
def group_reply(msg):
if msg['isAt']:
if u'播放量' in msg['Text']:
data = YoukuData()
if not data.check:
return '查詢失敗!'
num = data.get_play_num()
itchat.send(u'優酷目前累計播放量爲:%s' % num, msg['FromUserName'])
data = QQVideoData()
if not data.check:
return '查詢失敗!'
num = data.get_play_num()
return u'騰訊視頻目前累計播放量爲:%s' % num
elif u'訂閱' in msg['Text']:
data = YoukuData()
if not data.check:
return '查詢失敗!'
num = data.get_sub_num()
return '目前優酷訂閱人數爲:%s' % num
elif '詳細播放' in msg['Text']:
itchat.send('查詢中...', msg['FromUserName'])
data = YoukuData()
if not data.check:
return '查詢失敗!'
d = data.get_play_num_more()
itchat.send(d, msg['FromUserName'])
data = QQVideoData()
if not data.check:
return '查詢失敗!'
d = data.get_play_num_more()
return d
else:
return get_response(msg['Text'][5:])

def run():
itchat.auto_login(True,enableCmdQR=2)
itchat.run()

>youku.py
```python
import util homepage = 'http://i.youku.com/i/UMzg0ODQyNDk4OA==/videos' class YoukuData(object): def __init__(self,url=homepage): self.ulr = url self.check = True self.soup = util.get_soup(url) if self.soup is None: self.check = False #得到播放量 def get_play_num(self): vnum = self.soup.select('.vnum') if vnum is not None: x = vnum[0] n = x.get('title') num = n else: num = '**找不到播放量**' return num #得到訂閱數 def get_sub_num(self): snum = self.soup.select('.snum') if snum is not None: x = snum[0] n = x.get('title') num = n else: num = '**找不到訂閱數**' return num #詳細播放量 def get_play_num_more(self): titles = self.soup.select('.v-meta-title') nums = self.soup.select('.v-num') times = self.soup.select('.v-publishtime') s = ' 優酷視頻-最新%d個視頻:\n' % len(titles) for x in range(len(titles)): s += str(x+1) + '.'+titles[x].string+'\n 播放量:'+nums[x].string+'\n' return s 

這裏程序實現很簡單,使用的是itchat提供的方法,具體能夠參考itchat項目https://github.com/littlecodersh/ItChat

總結

以上就是快速實現微信機器人的思路,其實主要想表達的就是如今的雲技術對於開發者、對於編程初學者都是很是友好的,咱們徹底沒必要要投入過多精力在運維和發佈維護上,只須要專一代碼就能夠。這也是云爲咱們生活帶來的另外一個方面的改變吧。

相關文章
相關標籤/搜索