On améliore l'intégration d'événements facebook
This commit is contained in:
@@ -39,7 +39,8 @@ class Event:
|
||||
"day_time_sentence",
|
||||
"event_place",
|
||||
"comet_neighboring_siblings"],
|
||||
["event_description"]
|
||||
["event_description"],
|
||||
["start_timestamp", "end_timestamp"]
|
||||
]
|
||||
rules = {
|
||||
"event_description": { "description": ["text"]},
|
||||
@@ -52,23 +53,29 @@ class Event:
|
||||
self.fragments = {}
|
||||
self.elements = {}
|
||||
self.neighbor_events = None
|
||||
self.possible_end_timestamp = []
|
||||
self.add_fragment(i, event)
|
||||
|
||||
def add_fragment(self, i, event):
|
||||
self.fragments[i] = event
|
||||
|
||||
for k in Event.keys[i]:
|
||||
if k == "comet_neighboring_siblings":
|
||||
self.get_neighbor_events(event[k])
|
||||
elif k in Event.rules:
|
||||
for nk, rule in Event.rules[k].items():
|
||||
c = event[k]
|
||||
for ki in rule:
|
||||
c = c[ki]
|
||||
self.elements[nk] = c
|
||||
else:
|
||||
self.elements[k] = event[k]
|
||||
if Event.keys[i] == ["start_timestamp", "end_timestamp"]:
|
||||
self.get_possible_end_timestamp(i, event)
|
||||
else:
|
||||
for k in Event.keys[i]:
|
||||
if k == "comet_neighboring_siblings":
|
||||
self.get_neighbor_events(event[k])
|
||||
elif k in Event.rules:
|
||||
for nk, rule in Event.rules[k].items():
|
||||
c = event[k]
|
||||
for ki in rule:
|
||||
c = c[ki]
|
||||
self.elements[nk] = c
|
||||
else:
|
||||
self.elements[k] = event[k]
|
||||
|
||||
def get_possible_end_timestamp(self, i, data):
|
||||
self.possible_end_timestamp.append(dict((k, data[k]) for k in Event.keys[i]))
|
||||
|
||||
def get_neighbor_events(self, data):
|
||||
self.neighbor_events = [SimpleEvent(d) for d in data]
|
||||
@@ -77,35 +84,48 @@ class Event:
|
||||
return str(self.elements) + "\n Neighbors: " + ", ".join([ne.elements["id"] for ne in self.neighbor_events])
|
||||
|
||||
def consolidate_current_event(self):
|
||||
if self.neighbor_events is not None and "id" in self.elements:
|
||||
if self.neighbor_events is not None and "id" in self.elements and "end_timestamp" not in self.elements:
|
||||
id = self.elements["id"]
|
||||
for ne in self.neighbor_events:
|
||||
if ne.elements["id"] == id:
|
||||
self.elements["end_timestamp"] = ne.elements["end_timestamp"]
|
||||
|
||||
if "end_timestamp" not in self.elements and len(self.possible_end_timestamp) != 0:
|
||||
for s in self.possible_end_timestamp:
|
||||
if s["start_timestamp"] == self.elements["start_timestamp"]:
|
||||
self.elements["end_timestamp"] = s["end_timestamp"]
|
||||
break
|
||||
|
||||
def find_event_fragment_in_array(array, event):
|
||||
def find_event_fragment_in_array(array, event, first = True):
|
||||
if isinstance(array, dict):
|
||||
|
||||
seen = False
|
||||
for i, ks in enumerate(Event.keys):
|
||||
if len(ks) == len([k for k in ks if k in array]):
|
||||
seen = True
|
||||
if event is None:
|
||||
event = Event(i, array,)
|
||||
event = Event(i, array)
|
||||
else:
|
||||
event.add_fragment(i, array)
|
||||
else:
|
||||
for k in array:
|
||||
event = Event.find_event_fragment_in_array(array[k], event)
|
||||
# only consider the first of Event.keys
|
||||
break
|
||||
if not seen:
|
||||
for k in array:
|
||||
event = Event.find_event_fragment_in_array(array[k], event, False)
|
||||
elif isinstance(array, list):
|
||||
for e in array:
|
||||
event = Event.find_event_fragment_in_array(e, event)
|
||||
event = Event.find_event_fragment_in_array(e, event, False)
|
||||
|
||||
if event is not None:
|
||||
if event is not None and first:
|
||||
event.consolidate_current_event()
|
||||
return event
|
||||
|
||||
|
||||
#url="https://www.facebook.com/events/ical/export/?eid=2294200007432315"
|
||||
url="https://www.facebook.com/events/2294199997432316/2294200007432315/"
|
||||
#url="https://www.facebook.com/events/2294199997432316/2294200007432315/"
|
||||
#url="https://www.facebook.com/events/635247792092358/"
|
||||
url="https://www.facebook.com/events/872781744074648"
|
||||
url="https://www.facebook.com/events/1432798543943663?"
|
||||
#url_cal = "https://www.facebook.com/events/ical/export/?eid=993406668581410"
|
||||
#url="https://jmtrivial.info"
|
||||
|
||||
|
Reference in New Issue
Block a user