Пример #1
0
    def get_custom_social_post(self):

        doc = list(self.db.socialPosts.aggregate([{'$match': {'source': 'custom post'}}]))

        print(list(doc))
        if doc is None:
            return None

        social_post_list = []
        for post in doc:
            custom_post_item = SocialPost()
            custom_post_item.set_dictionary(post)
            social_post_list.append(custom_post_item)

        return social_post_list
Пример #2
0
    def get_random_social_post(self) -> SocialPost:

        if len(self.random_social_post_list) == 0:
            return None
        else:
            if self.reset_counter >= len(self.random_social_post_list):
                # when we went through all posts once we reset counter and shuffle list
                # so we dont repeat the same circle of posts every time
                self.reset_counter = 0
                random.shuffle(self.random_social_post_list)

            post = self.random_social_post_list[self.reset_counter]
            self.reset_counter = self.reset_counter + 1

        print(post)
        if post is None:
            return None

        social_post = SocialPost()
        social_post.set_dictionary(post)
        return social_post
Пример #3
0
    def get_google_calendar_posts(self):

        timestamp_var = datetime.utcnow().timestamp()

        doc = list(self.db.socialPosts.aggregate([
            {'$match': {'validFrom': {'$lte': timestamp_var},
                        'validTo': {'$gte': timestamp_var},
                        'source': 'Google calendar'}},
            {'$sort': {'start': 1}}
        ]))

        if doc is None:
            return None

        social_post_list = []
        for post in doc:
            custom_post_item = SocialPost()
            custom_post_item.set_dictionary(post)
            social_post_list.append(custom_post_item)

        return social_post_list
Пример #4
0
    def fetch_posts(self) -> List[SocialPost]:

        social_posts = []  # type: List[SocialPost]

        if self.client is None:
            return social_posts

        response, data = self.client.request(self.timeline_endpoint)

        twitter_posts = json.loads(data)

        for twitter_post in twitter_posts:

            if twitter_post == "errors":
                print(twitter_post)
                continue

            social_post = SocialPost()
            social_post.text = twitter_post["full_text"]
            social_post.externalId = twitter_post["id"]

            entities = twitter_post["entities"]
            if "media" in entities:
                media = entities["media"]
                media_urls = []
                if media is not None:
                    for medium in media:
                        media_urls.append(medium["media_url_https"])
                social_post.mediaURLs = media_urls

            created_date = datetime.strptime(twitter_post["created_at"],
                                             self.twitterDateFormat)

            social_post.created = Util.convert_date_to_UTC_time_stamp(
                created_date)
            social_post.validTo = Util.convert_date_to_UTC_time_stamp(
                created_date + timedelta(weeks=3))
            social_post.validFrom = Util.convert_date_to_UTC_time_stamp(
                created_date)
            social_post.source = "twitter"
            social_posts.append(social_post)

        return social_posts
Пример #5
0
    def convert_to_socialpost(self, events, social_posts):
        for wordpress_post in events:
            social_post = SocialPost()
            social_post.text = wordpress_post["title"]["rendered"]
            social_post.description = wordpress_post["content"]["rendered"]
            social_post.externalId = wordpress_post["id"]

            # Tue Sep 18 07:44:20 +0000 2018

            created_date = datetime.strptime(wordpress_post["date"],
                                             self.wordpressDateFormat)

            social_post.created = Util.convert_date_to_UTC_time_stamp(
                created_date)
            social_post.validTo = Util.convert_date_to_UTC_time_stamp(
                created_date + timedelta(weeks=1))
            social_post.validFrom = Util.convert_date_to_UTC_time_stamp(
                created_date)
            social_post.source = "wordpress"
            social_posts.append(social_post)
    def convert_to_socialpost(self, events, social_posts):
        if events is None:
            return []

        for event in events:
            try:
                social_post = SocialPost()
                social_post.text = event['summary']
                try:
                    social_post.created = Util.convert_date_to_UTC_time_stamp(
                        datetime.strptime(event['created'],
                                          self.googleDateFormat2))
                except Exception as ex:
                    print(ex)
                    social_post.created = int(datetime.utcnow().timestamp())

                if event['start'].get('dateTime') is not None:
                    social_post.start = parser.parse(
                        event['start']['dateTime']).timestamp()
                    social_post.validFrom = (
                        parser.parse(event['start']['dateTime']) -
                        timedelta(weeks=3)).timestamp()
                else:
                    social_post.start = parser.parse(
                        event['start']['date']).timestamp()
                    social_post.validFrom = (
                        parser.parse(event['start']['date']) -
                        timedelta(weeks=3)).timestamp()

                if event['end'].get('dateTime') is not None:
                    social_post.end = parser.parse(
                        event['end']['dateTime']).timestamp()
                    social_post.validTo = parser.parse(
                        event['end']['dateTime']).timestamp()
                else:
                    social_post.end = parser.parse(
                        event['end']['date']).timestamp()
                    social_post.validTo = parser.parse(
                        event['end']['date']).timestamp()

                social_post.externalId = event['id']

                if event.get('role') is not None:
                    social_post.role = event['role']

                location = event.get('location')

                if location is not None:
                    social_post.location = location
                else:
                    social_post.location = ''

                social_post.status = event['status']

                social_post.source = 'Google calendar'

                description = event.get('description')

                if description is not None:
                    social_post.description = description
                else:
                    social_post.location = ""

                social_posts.append(social_post)
            except Exception as ex:
                print('Exception in %s' % event)
                print(ex)
Пример #7
0
def create_post_from_request(content):
    social_post = SocialPost()
    social_post.title = content['title']
    social_post.text = content['text']
    social_post.created = Util.convert_date_to_UTC_time_stamp(
        parser.isoparse(content["created"]))
    social_post.source = "custom post"
    social_post.validTo = Util.convert_date_to_UTC_time_stamp(
        parser.isoparse(content["end"]))
    social_post.validFrom = Util.convert_date_to_UTC_time_stamp(
        parser.isoparse(content["start"]) - timedelta(weeks=3))
    if 'image' in content is not None and len(content['image']) > 0:
        social_post.image = content['image']
    social_post.start = Util.convert_date_to_UTC_time_stamp(
        parser.isoparse(content["start"]))
    social_post.end = Util.convert_date_to_UTC_time_stamp(
        parser.isoparse(content["end"]))
    return social_post
Пример #8
0
    def convert_to_socialpost(self, events, social_posts):
        for insta_post in events:
            social_post = SocialPost()
            social_post.text = insta_post['caption']['text']
            social_post.externalId = insta_post['id']

            social_post.image = insta_post['images']['standard_resolution'][
                'url']

            created_date = datetime.fromtimestamp(
                int(insta_post["created_time"]))

            social_post.created = Util.convert_date_to_UTC_time_stamp(
                created_date)

            social_post.validTo = Util.convert_date_to_UTC_time_stamp(
                created_date + timedelta(weeks=3))
            social_post.validFrom = Util.convert_date_to_UTC_time_stamp(
                created_date)
            social_post.source = "instagram"
            social_post.likes = insta_post['likes']['count']
            social_post.comments = insta_post['comments']['count']
            social_posts.append(social_post)

        return social_posts