# -*- coding: utf-8 -*- """ ページの流れをもとにしたレコメンドロジック """ import datetime as dt import sys sys.path.append("/var/local/mode2") from .base import ModelBase from lib.WebRecommend.utils.dataAccess import dataAccess class userRegion(ModelBase): def __init__(self, domain=False): self.recommend_category = 'user_region' self.domain = domain def getRegionSummary(self, **kwargs): res = [] da = dataAccess(self.domain) userregion = da.getUserRegion() datadict = {} data = [] regions = self.get_region_list() total_nums = 0 if 'results' in userregion: return res else: print(userregion) for k, v in userregion.items(): for j in v: if len(j) != 0: if j['nb_actions'] > 0: if j.get('region_name', None): region = j['region_name'] if region in datadict.keys(): datadict[region] += int(j['nb_actions']) else: datadict[region] = int(j['nb_actions']) total_nums += int(j['nb_actions']) i = 0 for k, v in sorted(datadict.items(), key=lambda x: x[1], reverse=True): if k in regions.keys(): data.append( {'region': regions[k], 'PV': v, 'ratio': float(v)/float(total_nums)}) i += 1 if i == 10: break print(data) return data def get_region_list(self): regions = { 'Hokkaido': '北海道', 'Aomori': '青森県', 'Iwate': '岩手県', 'Miyagi': '宮城県', 'Akita': '秋田県', 'Yamagata': '山形県', 'Fukushima': '福島県', 'Ibaraki': '茨城県', 'Tochigi': '栃木県', 'Gumma': '群馬県', 'Saitama': '埼玉県', 'Chiba': '千葉県', 'Tokyo': '東京都', 'Kanagawa': '神奈川県', 'Niigata': '新潟県', 'Toyama': '富山県', 'Ishikawa': '石川県', 'Fukui': '福井県', 'Yamanashi': '山梨県', 'Nagano': '長野県', 'Gifu': '岐阜県', 'Shizuoka': '静岡県', 'Aichi': '愛知県', 'Mie': '三重県', 'Shiga': '滋賀県', 'Kyoto': '京都府', 'Osaka': '大阪府', 'Hyogo': '兵庫県', 'Nara': '奈良県', 'Wakayama': '和歌山県', 'Tottori': '鳥取県', 'Shimane': '島根県', 'Okayama': '岡山県', 'Hiroshima': '広島県', 'Yamaguchi': '山口県', 'Tokushima': '徳島県', 'Kagawa': '香川県', 'Ehime': '愛媛県', 'Kochi': '高知県', 'Fukuoka': '福岡県', 'Saga': '佐賀県', 'Nagasaki': '長崎県', 'Kumamoto': '熊本県', 'Oita': '大分県', 'Miyazaki': '宮崎県', 'Kagoshima': '鹿児島県', 'Okinawa': '沖縄県', 'Unknown': '不明' } return regions def getRecommend(self): res = [] data = self.getRegionSummary() if len(data) > 1: if data[0]['ratio'] > 0.8: text = data[0]['region']+u"からのアクセスが8割を超えているようです。"\ "閲覧される地域に特化したコンテンツを充実させてみてはいかがでしょうか。" res.append(dict(date=str(dt.date.today()), text=text)) elif data[0]['ratio'] < 0.1: text = u"様々な地域からアクセスされているようです。" res.append(dict(date=str(dt.date.today()), text=text)) return res