refactor: 优化谷歌统计
This commit is contained in:
parent
30926c6b79
commit
7ccbd6ce79
@ -1,3 +1,4 @@
|
|||||||
|
import asyncio
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
from ga4mp import GtagMP
|
from ga4mp import GtagMP
|
||||||
@ -26,27 +27,34 @@ class Analytics:
|
|||||||
self.gtag = gtag
|
self.gtag = gtag
|
||||||
self.log.info("analytics init ok")
|
self.log.info("analytics init ok")
|
||||||
|
|
||||||
def send_startup_event(self):
|
async def run_with_timeout(self, func, *args, **kwargs):
|
||||||
try:
|
try:
|
||||||
self._send_startup_event()
|
return await asyncio.wait_for(func(*args, **kwargs), 3)
|
||||||
|
except asyncio.TimeoutError as e:
|
||||||
|
self.log.warning(f"analytics run_with_timeout failed {e}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
async def send_startup_event(self):
|
||||||
|
try:
|
||||||
|
await self.run_with_timeout(self._send_startup_event)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.log.warning(f"analytics send_startup_event failed {e}")
|
self.log.warning(f"analytics send_startup_event failed {e}")
|
||||||
self.init()
|
self.init()
|
||||||
|
|
||||||
def _send_startup_event(self):
|
async def _send_startup_event(self):
|
||||||
event = self.gtag.create_new_event(name="startup")
|
event = self.gtag.create_new_event(name="startup")
|
||||||
event.set_event_param(name="version", value=__version__)
|
event.set_event_param(name="version", value=__version__)
|
||||||
event_list = [event]
|
event_list = [event]
|
||||||
self.gtag.send(events=event_list)
|
self.gtag.send(events=event_list)
|
||||||
|
|
||||||
def send_daily_event(self):
|
async def send_daily_event(self):
|
||||||
try:
|
try:
|
||||||
self._send_daily_event()
|
await self.run_with_timeout(self._send_daily_event)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.log.warning(f"analytics send_daily_event failed {e}")
|
self.log.warning(f"analytics send_daily_event failed {e}")
|
||||||
self.init()
|
self.init()
|
||||||
|
|
||||||
def _send_daily_event(self):
|
async def _send_daily_event(self):
|
||||||
current_date = datetime.now().strftime("%Y-%m-%d")
|
current_date = datetime.now().strftime("%Y-%m-%d")
|
||||||
if self.current_date == current_date:
|
if self.current_date == current_date:
|
||||||
return
|
return
|
||||||
@ -58,14 +66,14 @@ class Analytics:
|
|||||||
self.gtag.send(events=event_list)
|
self.gtag.send(events=event_list)
|
||||||
self.current_date = current_date
|
self.current_date = current_date
|
||||||
|
|
||||||
def send_play_event(self, name, sec):
|
async def send_play_event(self, name, sec):
|
||||||
try:
|
try:
|
||||||
self._send_play_event(name, sec)
|
await self.run_with_timeout(self._send_play_event, name, sec)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.log.warning(f"analytics send_play_event failed {e}")
|
self.log.warning(f"analytics send_play_event failed {e}")
|
||||||
self.init()
|
self.init()
|
||||||
|
|
||||||
def _send_play_event(self, name, sec):
|
async def _send_play_event(self, name, sec):
|
||||||
event = self.gtag.create_new_event(name="play")
|
event = self.gtag.create_new_event(name="play")
|
||||||
event.set_event_param(name="version", value=__version__)
|
event.set_event_param(name="version", value=__version__)
|
||||||
event.set_event_param(name="music", value=name)
|
event.set_event_param(name="music", value=name)
|
||||||
|
@ -87,7 +87,6 @@ class XiaoMusic:
|
|||||||
|
|
||||||
# 启动统计
|
# 启动统计
|
||||||
self.analytics = Analytics(self.log)
|
self.analytics = Analytics(self.log)
|
||||||
self.analytics.send_startup_event()
|
|
||||||
|
|
||||||
debug_config = deepcopy_data_no_sensitive_info(self.config)
|
debug_config = deepcopy_data_no_sensitive_info(self.config)
|
||||||
self.log.info(f"Startup OK. {debug_config}")
|
self.log.info(f"Startup OK. {debug_config}")
|
||||||
@ -178,7 +177,7 @@ class XiaoMusic:
|
|||||||
# sleep to avoid too many request
|
# sleep to avoid too many request
|
||||||
# self.log.debug(f"Sleep {d}, timestamp: {self.last_timestamp}")
|
# self.log.debug(f"Sleep {d}, timestamp: {self.last_timestamp}")
|
||||||
await asyncio.sleep(1 - d)
|
await asyncio.sleep(1 - d)
|
||||||
self.analytics.send_daily_event()
|
await self.analytics.send_daily_event()
|
||||||
|
|
||||||
async def init_all_data(self, session):
|
async def init_all_data(self, session):
|
||||||
await self.login_miboy(session)
|
await self.login_miboy(session)
|
||||||
@ -522,6 +521,7 @@ class XiaoMusic:
|
|||||||
self.log.exception(f"Execption {e}")
|
self.log.exception(f"Execption {e}")
|
||||||
|
|
||||||
async def run_forever(self):
|
async def run_forever(self):
|
||||||
|
await self.analytics.send_startup_event()
|
||||||
async with ClientSession() as session:
|
async with ClientSession() as session:
|
||||||
self.session = session
|
self.session = session
|
||||||
await self.init_all_data(session)
|
await self.init_all_data(session)
|
||||||
@ -1073,7 +1073,7 @@ class XiaoMusicDevice:
|
|||||||
return
|
return
|
||||||
|
|
||||||
self.log.info(f"【{name}】已经开始播放了")
|
self.log.info(f"【{name}】已经开始播放了")
|
||||||
self.xiaomusic.analytics.send_play_event(name, sec)
|
await self.xiaomusic.analytics.send_play_event(name, sec)
|
||||||
|
|
||||||
# 设置下一首歌曲的播放定时器
|
# 设置下一首歌曲的播放定时器
|
||||||
if sec <= 1:
|
if sec <= 1:
|
||||||
|
Loading…
Reference in New Issue
Block a user