from utils.getPublicData import getAllCommentsData,getAllArticleData from datetime import datetime import jieba from wordcloud import WordCloud import matplotlib.pyplot as plt commentsList = getAllCommentsData() articleList = getAllArticleData() def getHomeTagsData():# 统计数据库中文章个数,最高点赞作者,发布文章最多的城市 articleLenMax = len(articleList) likeCountMax = 0 likeCountMaxAuthorName = '' cityDic = {} for article in articleList: if likeCountMax < int(article[1]): likeCountMax = int(article[1]) likeCountMaxAuthorName = article[11] if article[4] != '无': if article[4] in cityDic.keys(): cityDic[article[4]] += 1 else: cityDic[article[4]] = 1 cityDicSorted = list(sorted(cityDic.items(),key=lambda x:x[1],reverse=True)) return articleLenMax,likeCountMaxAuthorName,cityDicSorted[0][0] def getHomeCommentsLikeCountTopFore():# 获取评论中点赞最高的前四条评论 return list(sorted(commentsList,key=lambda x:int(x[2]),reverse=True))[:4] def getHomeArticleCreatedAtChart():# 根据日期分别计算该日期的文章数 xData = list(set([x[7] for x in articleList])) xData = list(sorted(xData,key=lambda x:datetime.strptime(x,'%Y-%m-%d').timestamp(),reverse=True)) yData = [0 for x in range(len(xData))] for article in articleList: for index,j in enumerate(xData):# 返回索引和值 if article[7] == j: yData[index] += 1 return xData,yData def getHomeTypeChart():# 统计每种类型的文章数量 typeDic = {} for article in articleList: if article[8] in typeDic.keys(): typeDic[article[8]] += 1 else: typeDic[article[8]] = 1 resultData = [] for key,value in typeDic.items(): resultData.append({ 'name':key, 'value':value }) return resultData def getHomeCommentCreatedChart():# 统计每天用户评论数量 createAtDic = {} for comment in commentsList: if comment[1] in createAtDic.keys(): createAtDic[comment[1]] += 1 else: createAtDic[comment[1]] = 1 resultData = [] for key, value in createAtDic.items(): resultData.append({ 'name': key, 'value': value }) return resultData def stopWordList(): return [line.strip() for line in open('./stopWords.txt',encoding='utf8').readlines()] def getUserNameWordCloud():# 生成用户名字词云 text = '' stopWords = stopWordList() for comment in commentsList: text += comment[5] cut = jieba.cut(text) newCut = [] for word in cut: if word not in stopWords:newCut.append(word) string = ' '.join(newCut) wc = WordCloud( width=1000, height=600, background_color='#fff', colormap='Blues', font_path='STHUPO.TTF' ) wc.generate_from_text(string) fig = plt.figure(1) plt.imshow(wc) plt.axis('off') plt.savefig('./static/authorNameCloud.jpg',dpi=500)