from fastapi import FastAPI, Query import uvicorn import requests from utils.response import success_response, error_400_response, error_503_response from utils.music_analysis import music_analysis app = FastAPI(title="douyin文档", swagger_ui_parameters={ "defaultModelsExpandDepth": -1 }) DEFAULT_PC_VIDEO_URL = 'https://v.douyin.com/-NvlqBdIJo4/' DEFAULT_mobile_VIDEO_URL = 'https://v.douyin.com/BCfMrTFPYGQ/' @app.get('/douyin_video', tags=["抖音"], summary="返回视屏信息,最全的接口了") def douyin_video(video_url: str = Query(DEFAULT_mobile_VIDEO_URL, min_length=10)): print(video_url) if not video_url: return {"code": 400, "message": "An error occurred.", "data": "请指定video_url"} # 获取get请求参数 url = "http://douyin_tiktok_download_api:9579/api/hybrid/video_data" querystring = {"url": video_url, "minimal": "true"} response = requests.request("GET", url, params=querystring) print(response.text) print(response.json()['data']['music']['play_url']) try: if response.json()['code'] == 200: video_url=response.json()['data']['video_data']['wm_video_url'] video_music=response.json()['data']['music']['play_url']['url_list'][0] content=music_analysis(video_music) return success_response({"video_url": video_url,"video_music": video_music,"content": content }) except Exception as e: print(e) return error_400_response({"data": "解析字段失败."}) return error_503_response({"data": "抖音风控稍后请求."}) @app.get('/douyin_content', tags=["抖音"], summary="手机和pc获取文案") def douyin_content(video_url: str = Query(DEFAULT_mobile_VIDEO_URL, min_length=10)): print(video_url) if not video_url: return {"code": 400, "message": "An error occurred.", "data": "请指定video_url"} # 获取get请求参数 url = "http://douyin_tiktok_download_api:9579/api/hybrid/video_data" querystring = {"url": video_url, "minimal": "false"} response = requests.request("GET", url, params=querystring) print(response.text) try: if response.json()['code'] == 200: return success_response({"content": response.json()['data']['seo_info']['ocr_content'], }) except Exception as e: print(e) return error_400_response({"data": "解析字段失败."}) return error_503_response({"data": "抖音风控稍后请求."}) @app.get('/douyin_pc', tags=["抖音"], summary="返回pc文案和视频") def douyin_pc(video_url: str = Query(DEFAULT_PC_VIDEO_URL, min_length=10)): print(video_url) if not video_url: return {"code": 400, "message": "An error occurred.", "data": "请指定video_url"} # 获取get请求参数 url = "http://douyin_tiktok_download_api:9579/api/hybrid/video_data" querystring = {"url": video_url, "minimal": "false"} response = requests.request("GET", url, params=querystring) print(response.text) try: if response.json()['code'] == 200: return success_response({"content": response.json()['data']['seo_info']['ocr_content'], "pc_url": response.json()['data']['video']['bit_rate'][0]['play_addr']['url_list'] }) except Exception as e: print(e) return error_400_response({"data": "解析字段失败."}) return error_503_response({"data": "抖音风控稍后请求."}) @app.get('/douyin_phone', tags=["抖音"], summary="返回手机视屏地址") def douyin_phone(video_url: str = Query(DEFAULT_mobile_VIDEO_URL, min_length=10)): print(video_url) if not video_url: return {"code": 400, "message": "An error occurred.", "data": "请指定video_url"} # 获取get请求参数 url = "http://douyin_tiktok_download_api:9579/api/hybrid/video_data" querystring = {"url": video_url, "minimal": "true"} response = requests.request("GET", url, params=querystring) print(response.text) try: if response.json()['code'] == 200: return success_response({"phone_url": response.json()['data']['video_data']['wm_video_url'] }) except Exception as e: print(e) return error_400_response({"data": "解析字段失败."}) return error_503_response({"data": "抖音风控稍后请求."}) if __name__ == '__main__': uvicorn.run(app='main:app', host='0.0.0.0', port=1314, reload=True)