def extract(self, start_date=None, end_date=None): discover = tmdb.Discover() event_params = { 'include_adult': False, 'include_video': False, 'sort_by': 'release_date.asc', 'with_original_language': 'en', 'vote_average.gte': 7, 'vote_count.gte': 1000 } event_params.update( self.parse_time_args(start_date=start_date, end_date=end_date)) print(json.dumps(event_params, indent=4)) sentinel = True while sentinel: raw_events = discover.movie(**event_params) for i, event in enumerate(raw_events['results']): connector_event_id = str(event['id']) row_connector_event = ConnectorEvent.query.filter( and_( ConnectorEvent.connector_event_id == connector_event_id, ConnectorEvent.connector_type == self.TYPE)).first() if not row_connector_event: row_connector_event = ConnectorEvent( connector_event_id=connector_event_id, connector_type=self.TYPE, data=event) db_session.merge(row_connector_event) db_session.commit() event_name = row_connector_event.data['title'] event_description = row_connector_event.data['overview'] event_short_name = row_connector_event.data['title'] event_img_url = 'https://image.tmdb.org/t/p/w342{}'.format( row_connector_event.data['poster_path']) event_backdrop_url = 'https://image.tmdb.org/t/p/original{}'.format( row_connector_event.data['backdrop_path']) event_start_time = datetime.datetime.strptime( row_connector_event.data['release_date'], "%Y-%m-%d") event_end_time = event_start_time + datetime.timedelta( days=180) genres = self.genres_by_ids( row_connector_event.data['genre_ids']) if row_connector_event.event_id: row_event = Event.query.filter( Event.event_id == row_connector_event.event_id).first() row_event.name = event_name row_event.description = event_description row_event.short_name = event_name row_event.img_url = event_img_url row_event.backdrop_url = event_backdrop_url row_event.start_time = event_start_time row_event.end_time = event_end_time db_session.merge(row_event) db_session.commit() row_event.remove_all_tags() else: row_event = Event(name=event_name, description=event_description, short_name=event_short_name, img_url=event_img_url, backdrop_url=event_backdrop_url, start_time=event_start_time, end_time=event_end_time) row_event.primary_type = Tag.TVM db_session.add(row_event) db_session.commit() row_connector_event.event_id = row_event.event_id db_session.merge(row_connector_event) db_session.commit() for genre in genres: row_event.add_tag(genre, Tag.TVM) row_event.update_meta(self.TYPE, event) db_session.merge(row_event) db_session.commit() yield row_event, "{} {}".format(row_event.name, genres) del raw_events['results'] sentinel = raw_events['page'] < raw_events['total_pages'] if sentinel: event_params['page'] = raw_events['page'] + 1