-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSlackChannelMessageParser.py
80 lines (70 loc) · 3.66 KB
/
SlackChannelMessageParser.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
import json, os
from pprint import pprint
from tuneship import application, db
from tuneship.models import TunesData
class SlackChannelMessageParser:
rootdir = os.path.dirname(os.path.abspath(__file__))
datadir = rootdir+'/data/tunes/'
def __init__(self, filename):
self.filename = filename
self.datadir = SlackChannelMessageParser.datadir
self.read_and_upload_json(self.datadir + self.filename)
def read_and_upload_json(self,filename):
MainDictionary = {}
subdict = {}
with open(filename, encoding='utf-8') as data_file:
data = json.loads(data_file.read())
for i, entry in enumerate(data):
MainDictionary[i] = entry
print("Processing: " + str(i))
if "attachments" in MainDictionary[i]:
print("ATTACHMENTS EXISTS")
subdict[i] = MainDictionary[i]["attachments"][0]
if "service_name" in subdict[i]:
if subdict[i]["service_name"] == "YouTube":
print(subdict[i]["title"])
if "video_html" in subdict[i]:
data_inserted = TunesData(title=subdict[i]['title'],thumb_url=subdict[i]['thumb_url'],iframe_string=subdict[i]['video_html'], media_url=subdict[i]['from_url'])
else:
data_inserted = TunesData(title=subdict[i]['title'],thumb_url=subdict[i]['thumb_url'], media_url=subdict[i]['from_url'])
try:
db.session.add(data_inserted)
db.session.commit()
db.session.close()
except:
db.session.rollback()
elif subdict[i]["service_name"] == "SoundCloud":
print(subdict[i]["title"])
if "audio_html" in subdict[i]:
data_inserted = TunesData(title=subdict[i]['title'], thumb_url=subdict[i]['thumb_url'],iframe_string=subdict[i]['audio_html'], media_url=subdict[i]['from_url'])
else:
data_inserted = TunesData(title=subdict[i]['title'], thumb_url=subdict[i]['thumb_url'], media_url=subdict[i]['from_url'])
try:
db.session.add(data_inserted)
db.session.commit()
db.session.close()
except:
db.session.rollback()
elif subdict[i]["service_name"] == "Spotify":
print(subdict[i]["title"])
if "audio_html" and "thumb_url" in subdict[i]:
data_inserted = TunesData(title=subdict[i]['title'], thumb_url=subdict[i]['thumb_url'],iframe_string=subdict[i]['audio_html'], media_url=subdict[i]['from_url'])
else:
data_inserted = TunesData(title=subdict[i]['title'],media_url=subdict[i]['from_url'])
try:
db.session.add(data_inserted)
db.session.commit()
db.session.close()
except:
db.session.rollback()
else:
continue
else:
print("NO ATTACHMENTS")
continue
def main():
for filename in os.listdir(SlackChannelMessageParser.datadir):
print("Working on " + filename)
SlackChannelMessageParser(filename)
if __name__ == "__main__":
main()