| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- import json
- import os
- import signal
- import sys
- import time
- from conf.config import logger,OUTPUT
- from dp.page import page
- from DrissionPage import ChromiumPage
- from bottle import route, run, template,static_file,post,request
- import threading
- def get_url_enterdata(tab:ChromiumPage, url):
- # url = input("输入直播间地址(如 https://live.douyin.com/1234568):")
- tab.listen.start('live.douyin.com/webcast/room/web/enter')
- tab.get(url)
- tab._wait_loaded(5)
- logger.info(f"页面加载成功")
- res = tab.listen.wait(count=1,timeout=3.5, raise_err=True)
- data = res.response.body.get("data")
- if not data:
- os._exit(1)
- with open(os.path.join(OUTPUT, "data.json"), 'w') as f:
- json.dump(data, f)
- tab.listen.stop()
- return data
- @route('/')
- def index():
- return static_file('dp/index.html', root='./')
- @post('/live_url')
- def input_url():
- live_url = request.forms.get('live_url')
- if live_url:
- # 这里可以添加您的逻辑,比如日志记录、数据处理等
- logger.info(f"input_url {live_url}")
- tab = page.new_tab()
- try:
- data = get_url_enterdata(tab, live_url)
- display_value, anchor = get_anchor(data.get("data")[0])
- name = data.get("user").get("nickname")
- ret = f"主播: {name} | {anchor} ({display_value})"
- except Exception as e:
- logger.error(e)
- ret = f"获取数据失败 {e}"
- tab.close()
- logger.info(ret)
- return ret
- else:
- return "live_url 参数未提供"
- def load_index():
- import DrissionPage
- page.get("http://localhost:9230")
- page._wait_loaded(5)
- page.tab
- while True:
- try:
- page.tabs_count
- except DrissionPage.errors.PageDisconnectedError as e:
- logger.info(f"{e}")
- break
- except Exception as e:
- logger.info(f"{e}")
- break
- time.sleep(1)
- logger.info(f"退出程序")
- os._exit(0)
-
- def main():
- page_index = threading.Thread(target=load_index)
- page_index.start()
- run(host='localhost', port=9230, debug=logger.debug)
- logger.info(f"server is stop")
- if __name__ == "__main__":
- main()
- page.quit()
|