# -*- coding: utf-8 -*- # from functions.mailaddress_action import get_domains_setting # import logging # from functions.mode2.getpiwik import ( # get_piwik # ) # from functions.webanalysis_action import ( # mwDB # ) # from functions.mode2.getDBData import ( # getOvertimeFromDB # ) # from functions.utility import ( # ConnectLDAP # ) from datetime import datetime import time as tm import sys from pyasn1.type import tag sys.path.append("/var/local/mode2") from functions.utility import get_ctrinfo from functions.mwDB import mwDB from functions.mode2.getpiwik import get_piwik from functions.mode2.getDBData import getOvertimeFromDB class dataAccess(): # データ取得モジュールやAPIをブリッジするデータアクセス用クラス def __init__(self, domain=False): self.domain = domain # 検索トレンド def getSearchTrend(self, keyword_list): try: # term for search today = datetime.today() twenty_eight_days_ago = datetime.fromtimestamp( tm.mktime((today.year, today.month, today.day - 28, 0, 0, 0, 0, 0, 0))) interest_term = twenty_eight_days_ago.strftime( '%Y-%m-%d') + ' ' + today.strftime('%Y-%m-%d') gtrend_res = getOvertimeFromDB(keyword_list, interest_term, self.domain) print(gtrend_res) data = [] # DBから取得 if gtrend_res['all_keywords']['data'] != None: for res in gtrend_res['all_keywords']['data']: datum = {} for k, v in res.items(): if k == 'date': val = v else: val = int(v) datum.update({k: val}) data.append(datum) ret = dict( data=data, label=gtrend_res['all_keywords']['label']) else: ret = dict(data=None, label=None) print(ret) except: ret = dict(data=None, label=None) print(ret) return ret # キーワード def getKeywordList(self): try: db = mwDB(self.domain) query = 'SELECT keyword1, keyword2, keyword3, keyword4 FROM web_search_keyword ORDER BY id DESC' ret = db.fetchone(query) keyword_list_all = list(ret) print(keyword_list_all) keyword_list = list(filter(lambda s: s != '', keyword_list_all)) print(keyword_list) db.close() except: keyword_list = [] print(keyword_list) return keyword_list # 保存済みレコメンド情報 def getRecommendData(self, recommend_category, fromdate=None, limit=20, vanish=0): try: db = mwDB(self.domain) query = "SELECT * FROM web_recommend WHERE recommend_category='%s' AND vanish=0 ORDER BY date DESC LIMIT 20" % ( recommend_category) ret = db.fetch(query) resp = list(ret) db.close() except: resp = [] print(resp) return resp def setFeedbackRecommendData(self, recommend_hash, fbscore): try: db = mwDB(self.domain) score = int(fbscore) if score == -1: sql = "UPDATE web_recommend SET vanish=1 WHERE recommend_body_hash='%s'" % ( recommend_hash) else: sql = "UPDATE web_recommend SET userscore=%s WHERE recommend_body_hash='%s'" % ( score, recommend_hash) print(sql) ret = db.execute(sql) db.close() except Exception as e: print(e) # アクセス推移 def getVisitsSummary(self, period="day", date="last28"): get_data = get_piwik('VisitsSummary.get', period, date, self.domain) print(get_data) return get_data # ユーザアクセス端末 def getUserDevice(self, period="day", date="last28"): get_data = get_piwik('DevicesDetection.getType', period, date, self.domain) print(get_data) return get_data # ユーザ地域 def getUserRegion(self, period="day", date="last28"): get_data = get_piwik('UserCountry.getRegion', period, date, self.domain) print(get_data) return get_data # アクセスTOP10 def getInternalTop(self, period="day", date="last28"): get_data = get_piwik('Actions.getPageUrls', period, date, self.domain, flat=1) print(get_data) return get_data # ページ遷移 def getFlow(self, period="day", date="last28", access_path=""): if self.domain: LOCAL_DOMAIN = self.domain else: ctrinfo = get_ctrinfo() LOCAL_DOMAIN = ctrinfo.get("tmpdomain") get_data = get_piwik('Transitions.getTransitionsForPageUrl', period, date, self.domain, pageUrl='http://' + LOCAL_DOMAIN + '/' + access_path) get_data['LOCAL_DOMAIN'] = LOCAL_DOMAIN print(get_data) return get_data