forked from PriyankaKhire/ProgrammingPracticePython
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCreateFeed.py
More file actions
101 lines (87 loc) · 3.42 KB
/
CreateFeed.py
File metadata and controls
101 lines (87 loc) · 3.42 KB
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
import sys, random, datetime, time, threading
from os import path
from thread import *
sys.path.append("Class")
from User import User
from Post import Post
sys.path.append("Database")
from DatabaseHelper import DatabaseHelper
sys.path.append("../ASCII Images")
from AsciiImages import AsciiImages
sys.path.append("..")
from RandomSentenceGenerator import RandomSentenceGenerator
from Names import Names
class CreateUsers(object):
def __init__(self):
self.userDbFile = 'Database/Users'
def createUser(self, userGender, userId):
user = User()
user.firstName = Names().get_first_name(userGender)
user.lastName = Names().get_last_name()
user.email = user.firstName+'.'+user.lastName+'@SnailMail.com'
user.userName = user.firstName[:3].lower()+user.lastName[:3].lower()
user.userId = userId
return user
def insertUserInDB(self, user):
# Note: if there are duplicate users, we dont insert them in database
db = DatabaseHelper()
if not(db.isKeyInHash(self.userDbFile, user.userName)):
db.writeToHash(self.userDbFile, user.userName, user)
def populateDB(self):
# create 5 female users and 5 male users
users = [self.createUser('female',i) for i in range(5)] + [self.createUser('male',i+5) for i in range(5)]
# insert user into database
for user in users:
self.insertUserInDB(user)
return users
class GenerateFeed(object):
def __init__(self):
self.users = None
createUsers = CreateUsers()
# if user's file exist then get users from there
if not (path.exists(createUsers.userDbFile)):
self.users = createUsers.populateDB()
else:
self.users = DatabaseHelper().getAllValues(createUsers.userDbFile)
def getPostContent(self):
ai = AsciiImages()
rsg = RandomSentenceGenerator()
return random.choice([['image', ai.RandomImage()], ['text', rsg.RandomSentence()]])
def createPostObject(self, userName, postId, name):
post = Post()
post.userName = userName
post.name = name
content = self.getPostContent()
post.contentType = content[0]
if(content[0] == 'image'):
post.picture = content[1]
else:
post.text = content[1]
post.timeStamp = str(datetime.datetime.now())
post.id = postId
return post
def userPost(self, user):
post = self.createPostObject(user.userName, len(user.posts), str(user.firstName+" "+user.lastName))
print user.firstName,user.lastName," "*5,'at',post.timeStamp
if(post.contentType == 'image'):
print post.picture
else:
print post.text
# append post object to user object's posts list
user.posts.append(post)
# store it in database
DatabaseHelper().writeToHash(CreateUsers().userDbFile, user.userName, user)
def userThread(self, user):
while True:
self.userPost(user)
time.sleep(random.randint(10, 30))
def feed(self):
for user in self.users:
start_new_thread(self.userThread, (user,))
time.sleep(2)
# this little hack to keep it running in cmd
while True:
time.sleep(5)
# Main
obj = GenerateFeed()
obj.feed()