-
Notifications
You must be signed in to change notification settings - Fork 1
/
wash_results.py
125 lines (105 loc) · 3.28 KB
/
wash_results.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
from mongoengine import *
import json
import collections
Info = {'addr': '127.0.0.1',
'port': 27017,
'database': 'Sina'}
class UserInfo(Document):
""" 个人信息 """
_id = StringField() # 用户ID
NickName = StringField() # 昵称
Gender = StringField() # 性别
Province = StringField() # 所在省
City = StringField() # 所在城市
Signature = StringField() # 个性签名
Birthday = DateTimeField() # 生日
Num_Tweets = IntField() # 微博数
Num_Follows = IntField() # 关注数
Num_Fans = IntField() # 粉丝数
Sex_Orientation = StringField() # 性取向
Marriage = StringField() # 婚姻状况
URL = StringField() # 首页链接
meta = {'collection': 'Information'}
def get_id(self):
return self._id
class Fans(DynamicDocument):
"""粉丝信息"""
_id = StringField()
meta = {'collection': 'Fans'}
def get_id(self):
return self._id
def get_items(self):
"""返回所有Fans的列表,第一个值是_id"""
items = [self._id]
for i in range(1, 200):
try:
items.append(self[str(i)])
except KeyError:
break
return items
class Follows(DynamicDocument):
"""关注的人信息"""
_id = StringField()
meta = {'collection': 'Follows'}
def get_id(self):
return self._id
def get_items(self):
"""返回所有Follows的列表,第一个值是_id"""
items = [self._id]
for i in range(1, 200):
try:
items.append(self[str(i)])
except KeyError:
break
return items
class Tweets(Document):
""" 微博信息 """
_id = StringField() # 用户ID-微博ID
ID = StringField() # 用户ID
Content = StringField() # 微博内容
PubTime = DateTimeField() # 发表时间
Co_oridinates = StringField() # 定位坐标
Tools = StringField() # 发表工具/平台
Like = IntField() # 点赞数
Comment = IntField() # 评论数
Transfer = IntField() # 转载数
def get_id(self):
return self._id
if __name__ == '__main__':
connect(
Info['database'],
host=Info['addr'],
port=Info['port'],
)
fanfan = open("newfans", "w+")
for fan in Fans.objects.timeout(False):
itemList = fan.get_items()
dump = collections.OrderedDict()
i = 1
dump['_id'] = fan.get_id()
for item in itemList[1:]:
if not UserInfo.objects(_id=item):
itemList.remove(item)
continue
dump[str(i)] = item
i += 1
# fanlist.append(json.dumps(dump))
json.dump(dump, fanfan)
fanfan.write('\n')
fanfan.close()
fol = open("newfollows", "w+")
for foll in Follows.objects.timeout(False):
itemList = foll.get_items()
dump = collections.OrderedDict()
i = 1
dump['_id'] = foll.get_id()
for item in itemList[1:]:
if not UserInfo.objects(_id=item):
itemList.remove(item)
continue
dump[str(i)] = item
i += 1
# fanlist.append(json.dumps(dump))
json.dump(dump, fol)
fol.write('\n')
fol.close()