readClient.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. # 一致监听本地剪切板,如果有变化,则打印出来
  2. import threading
  3. import time
  4. import pyperclip
  5. import redis
  6. import uvicorn as uvicorn
  7. from fastapi import FastAPI
  8. from starlette.middleware.cors import CORSMiddleware
  9. from starlette.middleware.sessions import SessionMiddleware
  10. from starlette.responses import JSONResponse
  11. recent_value = pyperclip.paste()
  12. r = redis.StrictRedis(host='127.0.0.1', port=6379, db=0)
  13. def clipboard_loop(interval):
  14. global recent_value
  15. recent_value = pyperclip.paste()
  16. while True:
  17. tmp_value = pyperclip.paste()
  18. if tmp_value != recent_value:
  19. recent_value = tmp_value
  20. r.set('clipboard', recent_value)
  21. print(recent_value)
  22. time.sleep(interval)
  23. app = FastAPI(title="project name1", description="系统描述 ", version="v 0.0.0")
  24. app.add_middleware(SessionMiddleware, secret_key='123456hhh')
  25. app.add_middleware(
  26. CORSMiddleware,
  27. allow_origins=["*", ],
  28. allow_credentials=True,
  29. allow_methods=["*"],
  30. allow_headers=["*"],
  31. )
  32. # api 获取剪切板
  33. @app.get('/clipboard')
  34. def get_clipboard():
  35. return {'clipboard': r.get('clipboard').decode()}
  36. @app.exception_handler(Exception)
  37. def validation_exception_handler(request, exc):
  38. """请求校验异常捕获; application/json """
  39. return JSONResponse({'message': "服务器内部错误", 'status_code': 500})
  40. if __name__ == '__main__':
  41. new_thread = threading.Thread(target=clipboard_loop, args=(0.5,))
  42. new_thread.start()
  43. uvicorn.run(app='readClient:app', host="0.0.0.0", port=8000)