This commit is contained in:
parent
bd004f6fce
commit
bba87bbf1d
|
@ -1,6 +1,7 @@
|
||||||
import asyncio
|
import asyncio
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
|
import math
|
||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
from datetime import datetime, timedelta, timezone
|
from datetime import datetime, timedelta, timezone
|
||||||
|
@ -25,6 +26,8 @@ GOOGLE_KEYFILE_PATH = os.environ.get('GOOGLE_KEYFILE_PATH', '/dump/google-servic
|
||||||
# GOOGLE_ANALYTICS_API = 'https://analyticsreporting.googleapis.com/v4'
|
# GOOGLE_ANALYTICS_API = 'https://analyticsreporting.googleapis.com/v4'
|
||||||
GOOGLE_ANALYTICS_SCOPES = ['https://www.googleapis.com/auth/analytics.readonly']
|
GOOGLE_ANALYTICS_SCOPES = ['https://www.googleapis.com/auth/analytics.readonly']
|
||||||
|
|
||||||
|
VIEWS_FILEPATH = '/dump/views.json'
|
||||||
|
|
||||||
|
|
||||||
# Функция для создания объекта службы Analytics Reporting API V4
|
# Функция для создания объекта службы Analytics Reporting API V4
|
||||||
def get_service():
|
def get_service():
|
||||||
|
@ -43,7 +46,7 @@ class ViewedStorage:
|
||||||
analytics_client = None
|
analytics_client = None
|
||||||
auth_result = None
|
auth_result = None
|
||||||
disabled = False
|
disabled = False
|
||||||
days_ago = 0
|
updated = int(time.time())
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
async def init():
|
async def init():
|
||||||
|
@ -57,15 +60,8 @@ class ViewedStorage:
|
||||||
# Загрузка предварительно подсчитанных просмотров из файла JSON
|
# Загрузка предварительно подсчитанных просмотров из файла JSON
|
||||||
self.load_precounted_views()
|
self.load_precounted_views()
|
||||||
|
|
||||||
file_path = '/dump/views.json'
|
if os.path.exists(VIEWS_FILEPATH):
|
||||||
if os.path.exists(file_path):
|
self.updated = os.path.getctime(VIEWS_FILEPATH)
|
||||||
creation_time = os.path.getctime(file_path)
|
|
||||||
current_time = datetime.now().timestamp()
|
|
||||||
time_difference_seconds = current_time - creation_time
|
|
||||||
self.days_ago = int(time_difference_seconds / (24 * 3600)) # Convert seconds to days
|
|
||||||
logger.info(f'The file {file_path} was created {self. days_ago} days ago.')
|
|
||||||
else:
|
|
||||||
logger.info(f'The file {file_path} does not exist.')
|
|
||||||
|
|
||||||
# Запуск фоновой задачи
|
# Запуск фоновой задачи
|
||||||
asyncio.create_task(self.worker())
|
asyncio.create_task(self.worker())
|
||||||
|
@ -81,9 +77,7 @@ class ViewedStorage:
|
||||||
with open('/dump/views.json', 'r') as file:
|
with open('/dump/views.json', 'r') as file:
|
||||||
precounted_views = json.load(file)
|
precounted_views = json.load(file)
|
||||||
self.views_by_shout.update(precounted_views)
|
self.views_by_shout.update(precounted_views)
|
||||||
logger.info(
|
logger.info(f' * {len(precounted_views)} публикаций с просмотрами успешно загружены.')
|
||||||
f' * {len(precounted_views)} публикаций с просмотрами успешно загружены.'
|
|
||||||
)
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f'Ошибка загрузки предварительно подсчитанных просмотров: {e}')
|
logger.error(f'Ошибка загрузки предварительно подсчитанных просмотров: {e}')
|
||||||
|
|
||||||
|
@ -97,12 +91,14 @@ class ViewedStorage:
|
||||||
start = time.time()
|
start = time.time()
|
||||||
async with self.lock:
|
async with self.lock:
|
||||||
if self.analytics_client:
|
if self.analytics_client:
|
||||||
|
hours_ago = math.floor((int(time.time()) - self.updated) / 3600) or 1
|
||||||
data = (
|
data = (
|
||||||
self.analytics_client.data().batchRunReports(
|
self.analytics_client.data()
|
||||||
|
.batchRunReports(
|
||||||
{
|
{
|
||||||
'requests': [
|
'requests': [
|
||||||
{
|
{
|
||||||
'dateRanges': [{'startDate': f'{self.days_ago}daysAgo', 'endDate': 'today'}],
|
'dateRanges': [{'startDate': f'{hours_ago}hoursAgo', 'endDate': 'today'}],
|
||||||
'metrics': [{'expression': 'ga:pageviews'}],
|
'metrics': [{'expression': 'ga:pageviews'}],
|
||||||
'dimensions': [{'name': 'ga:pagePath'}],
|
'dimensions': [{'name': 'ga:pagePath'}],
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user