Python 2.7使用飛書上傳圖片的功能


近期公司全部換成了飛書作為通訊的工具,之前的企業微信的機器人和寫法都得重新寫過了。

所以在打包以后的構建通知等都要通過飛書來通知。當然普通的通知寫法很簡單,帶有圖片的會有點麻煩。

但是比較蛋疼的是,公司打包的機器上只有Python2.7(WHATTHEFXXK)。

沒有辦法,雖然Python2.7很蛋疼,但是也只能上了。

在飛書的官方上有提供Python3.X版本的寫法,我這里也就不多說了。

主要講講,Python2.7的一個寫法。

其實一開始走了不少的各種彎路,總是以為是圖片的編碼問題?因為Python總是報的編碼的錯誤。

於是總是在圖片相關的編碼上的問題上糾結。

 

后面我才發現了一個巨大的坑!這個坑是之前沒有想到的。

問題出在headers上,由於編碼上的不同,Python2.7傳入的參數內是帶有u'...'

比如,我編寫了一個字符串number,輸出到網頁上,變成了u'number'

原因:python2.7支持unicode編碼和utf-8編碼兩種,顯示時顯示成u‘number’表明這是一個unicode編碼的字符串,所以轉換成utf-8就不顯示成u'number'啦!~

雖然有些人說其實他不會影響程序的運行,但是由於我是傳入的參數,傳錯了就會導致有各種的報錯,於是我就炸了,搞了半天。

然后我會附上2.7如何運行的代碼!注意是2.7!2.7!2.7!

 

    def upload_image(self, image_path):
        postUrl = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal/"
        payload_message = {
            "app_id": "", #填寫你的機器人的app_id
            "app_secret": "" #填寫你的機器人的app_secret
        }
        headers = {
            'Content-Type': 'application/json'
        }
        response = requests.request("POST", postUrl, headers=headers, data=json.dumps(payload_message))
        content = response.json()
        if content.get("code") != 0:
            raise Exception("Call Api Error, errorCode is %s" % content["code"])

        token = content.get("tenant_access_token")
        with open(image_path, 'rb') as f:
            image = f.read()
            
        resp = requests.post(
            url='https://open.feishu.cn/open-apis/image/v4/put/',
            headers={'Authorization': "Bearer " + token.encode('utf-8')},
            files={
                "image": image
            },
            data={
                "image_type": "message"
            },
            stream=True)
        resp.raise_for_status()
        content = resp.json()
        print(content)
        if content.get("code") == 0:
            return content
        else:
            raise Exception("Call Api Error, errorCode is %s" % content["code"])

啊,寫2.7心好累,還是3.X爽


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM