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