-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtracker.py
80 lines (56 loc) · 2.09 KB
/
tracker.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
try:
import unzip_requirements
except ImportError:
pass
import os
import classifier
from datetime import datetime
from instalooter.looters import ProfileLooter
from queries import Queries
from messenger import Messenger
from entities import *
import fs
queries = Queries()
def classify_posts(posts):
with classifier.Classifier() as c:
for post in posts:
timestamp = post['taken_at_timestamp']
picture_url = post['display_url']
print(f"checking url {picture_url}")
if queries.image_exists(picture_url):
print(f"\talready processed. skipping {picture_url}")
continue
print(f"\timage not loaded, adding to db {picture_url}")
image = Image(url=picture_url, post_date=timestamp)
print(f"\tclassifying image {picture_url}")
c.classify(image)
queries.add(image)
queries.commit()
def update(event, context):
start_time = datetime.now()
print("Starting soup")
queries = Queries()
print("configuring looter")
# https://github.com/althonos/InstaLooter/issues/173
ProfileLooter._cachefs = fs.open_fs("osfs:///tmp/")
looter = ProfileLooter("davesfreshpasta")
print("configured looter")
print("finished setup")
last_date = queries.most_recent_image_date()
timeframe = (start_time.date(), last_date)
print(f"last post date: {last_date}. Timeframe is {timeframe}")
posts = looter.medias(timeframe=timeframe)
if posts:
classify_posts(posts)
repost_soup = os.environ.get("REPOST_SOUP", default=False)
confidence = os.environ.get("CONFIDENCE", default=0.8)
# TODO: move posting into post iteration loop
top_image = queries.top_soup(confidence)
if (not top_image.posted) or repost_soup:
messenger = Messenger()
messenger.post_message_to_channel(top_image)
queries.commit() # messenger will mark image as posted
elapsed_time = datetime.now() - start_time
print(f"Finished soup. Elapsed time {elapsed_time}")
if __name__ == '__main__':
update(None, None)