# 【Python】 和IOS共用剪貼簿! ## 前言 Apple全家桶好貴!! 沒有MacOS但是想享受跨平台剪貼簿整合 可以試試看我這個方法 利用捷徑與網頁互動 交換剪貼簿資料 文末也提供非程式人員的執行檔 ## 簡介 利用IOS上的捷徑功能, 透過網頁傳遞參數, 讓其他平台的剪貼簿能與IOS的剪貼簿互動。 ## 環境建置 * Python 3.7.7 * Flask 1.2.2 * pyperclip 1.8.0 ```python= pip install pyperclip pip install flask ``` ## 程式碼 ```python= from flask import Flask from flask import request import pyperclip import socket import webbrowser def get_host_ip(): try: s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect(('8.8.8.8', 80)) ip = s.getsockname()[0] finally: s.close() return ip print("請連接此ip: ",get_host_ip()) app = Flask(__name__) # __name__ 代表目前執行的模組 @app.route("/copy") def PC2IOS(): #這邊的paste 相當於Ctrl + V 把剪貼簿上的文字放入變數中 paste = pyperclip.paste() return paste @app.route("/paste", methods=['GET']) def IOS2PC(): get_paste = request.values.get('paste') if(get_paste): #這邊看有沒有包含http 如果有就複製並打開 if("http" in str(get_paste)): pyperclip.copy(str(get_paste)) webbrowser.open(str(get_paste)) else: pyperclip.copy(str(get_paste)) return str(get_paste) else: pyperclip.copy("COPY error!") return "COPY error" if __name__ == "__main__": app.run(host=get_host_ip(), port=8080) #啟動伺服器 ``` 如果不太清楚Flask的運作方式可以看看這篇[Flask 隨筆](/MVp8V9HJR1GvgNBRw-jJ5A) </br></br> 首先我們要先取得區域網路的ip,或者可以選擇把這個服務丟到公開網路上 ```python= def get_host_ip(): try: s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect(('8.8.8.8', 80)) ip = s.getsockname()[0] finally: s.close() return ip ``` 主要使用到pyperclip提供的兩種功能 * pyperclip.paste() 用於取得PC的剪貼簿,相當於Ctrl+V的功能 * pyperclip.copy("string") 複製後面的參數 利用這兩個函式再加上IOS捷徑所提供的剪貼簿存取,就能輕鬆互動了! </br> 這邊來講PC複製到IOS的片段 ```python= @app.route("/copy") def PC2IOS(): #這邊的paste 相當於Ctrl + V 把剪貼簿上的文字放入變數中 paste = pyperclip.paste() return paste ``` 程式碼內要做到的就是讓網頁顯示剪貼簿的內容而已 所以只要取得剪貼簿>回傳剪貼簿內容 其餘的就在捷徑上設定就好了 </br> 接下來換IOS到PC的部分 ```python= @app.route("/paste", methods=['GET']) def IOS2PC(): get_paste = request.values.get('paste') if(get_paste): #這邊看有沒有包含http 如果有就複製並打開 if("http" in str(get_paste)): pyperclip.copy(str(get_paste)) webbrowser.open(str(get_paste)) else: pyperclip.copy(str(get_paste)) return str(get_paste) else: pyperclip.copy("COPY error!") return "COPY error" ``` 這邊就需要用到GET的功能 利用把IOS上的剪貼簿利用GET通知網頁 再把取得到的參數填入pyperclip.copy內就完成了 這邊有另外提供一個直接打開網頁的功能,其實也只是很簡單的判斷是否為網址而已 ## IOS捷徑設定 * 記得要把"100.15"改成自己電腦的 192.168."******.******",並且要在同一區網內 * [將PC剪貼簿傳至IOS](https://www.icloud.com/shortcuts/3bcaea14a439481b92965f2f924bb493) * [將IOS剪貼簿傳至PC](http://www.icloud.com/shortcuts/372f113719424e6db3fc615878bb0c22) * [將PC剪貼簿傳至IOS,並開啟網頁](https://www.icloud.com/shortcuts/ac562dafa8be4d2986900e2fccdc2e8f) 在設定上大同小異, 唯一一個比較讓人疑惑的地方, 是IOS上如果要打開網頁不能直接用剪貼簿, 必須先轉成文字 在讓瀏覽器吃, 才能讀到正確的URL ![](https://i.imgur.com/WpwVnAc.jpg) ## 預改進項目 除了固定IP的方式外 不知道有沒有辦法能夠自動同步區網ip 這樣如果ip有更動就不必到捷徑內更新了 ## 檔案下載 [Github](https://github.com/kaizziizg/IOS-scrapbook-with-PC) [執行檔](https://github.com/kaizziizg/IOS-scrapbook-with-PC/raw/master/dist/main.exe) ## 參考資料 > python 获取本机IP地址 https://blog.csdn.net/u013314786/article/details/78962103 {%hackmd BkVfcTxlQ %}