Esempio n. 1
0
    def title_and_body(self, story, usersub, notification_title_only=False):
        def replace_with_newlines(element):
            text = ''
            for elem in element.recursiveChildGenerator():
                if isinstance(elem, types.StringTypes):
                    text += elem
                elif elem.name == 'br':
                    text += '\n'
                elif elem.name == 'p':
                    text += '\n\n'
            return text

        feed_title = usersub.user_title or usersub.feed.feed_title
        # title = "%s: %s" % (feed_title, story['story_title'])
        title = feed_title
        if notification_title_only:
            subtitle = None
            body = HTMLParser().unescape(story['story_title'])
        else:
            subtitle = HTMLParser().unescape(story['story_title'])
            # body = HTMLParser().unescape(strip_tags(story['story_content']))
            soup = BeautifulSoup(story['story_content'].strip())
            # print story['story_content']
            body = replace_with_newlines(soup)
        body = truncate_chars(body.strip(), 600)
        if not body:
            body = " "

        if not usersub.user.profile.is_premium:
            body = "Please upgrade to a premium subscription to receive full push notifications."

        return title, subtitle, body
Esempio n. 2
0
 def title_and_body(self, story, usersub):
     def replace_with_newlines(element):
         text = ''
         for elem in element.recursiveChildGenerator():
             if isinstance(elem, types.StringTypes):
                 text += elem
             elif elem.name == 'br':
                 text += '\n'
             elif elem.name == 'p':
                 text += '\n\n'
         return text
     
     feed_title = usersub.user_title or usersub.feed.feed_title
     # title = "%s: %s" % (feed_title, story['story_title'])
     title = feed_title
     subtitle = HTMLParser().unescape(story['story_title'])
     # body = HTMLParser().unescape(strip_tags(story['story_content']))
     soup = BeautifulSoup(story['story_content'].strip())
     # print story['story_content']
     body = replace_with_newlines(soup)
     body = truncate_chars(body.strip(), 1200)
     if not body:
         body = " "
     
     if not usersub.user.profile.is_premium:
         body = "Please upgrade to a premium subscription to receive full push notifications."
     
     return title, subtitle, body
Esempio n. 3
0
    def title_and_body(self, story, usersub, notification_title_only=False):
        def replace_with_newlines(element):
            text = ''
            for elem in element.recursiveChildGenerator():
                if isinstance(elem, (str,)):
                    text += elem
                elif elem.name == 'br':
                    text += '\n'
                elif elem.name == 'p':
                    text += '\n\n'
            text = re.sub(r' +', ' ', text).strip()
            return text

        feed_title = usersub.user_title or usersub.feed.feed_title
        # title = "%s: %s" % (feed_title, story['story_title'])
        title = feed_title
        soup = BeautifulSoup(story['story_content'].strip(), features="lxml")
        # if notification_title_only:
        subtitle = None
        body_title = html.unescape(story['story_title']).strip()
        body_content = replace_with_newlines(soup)
        if body_content:
            if (
                body_title == body_content[: len(body_title)]
                or body_content[:100] == body_title[:100]
            ):
                body_content = ""
            else:
                body_content = f"\n※ {body_content}"
        body = f"{body_title}{body_content}"
        # else:
        #     subtitle = html.unescape(story['story_title'])
        #     body = replace_with_newlines(soup)
        body = truncate_chars(body.strip(), 600)
        if not body:
            body = " "

        if not usersub.user.profile.is_premium:
            body = "Please upgrade to a premium subscription to receive full push notifications."

        return title, subtitle, body
Esempio n. 4
0
    def send_ios(self, story, user, usersub):
        if not self.is_ios: return

        apns = APNs(use_sandbox=True, 
                    cert_file='/srv/newsblur/config/certificates/aps_development.pem',
                    key_file='/srv/newsblur/config/certificates/aps_development.pem')
        
        tokens = MUserNotificationTokens.get_tokens_for_user(self.user_id)
        feed_title = usersub.user_title or usersub.feed.feed_title
        title = "%s: %s" % (feed_title, story['story_title'])
        body = truncate_chars(HTMLParser().unescape(strip_tags(story['story_content'])).strip(), 1600)
        
        for token in tokens.ios_tokens:
            logging.user(user, '~BMStory notification by iOS: ~FY~SB%s~SN~BM~FY/~SB%s' % 
                                       (story['story_title'][:50], usersub.feed.feed_title[:50]))
            payload = Payload(alert={'title': title,
                                     'body': body},
                              custom={'story_hash': story['story_hash'],
                                      'story_feed_id': story['story_feed_id'],
                                     })
            apns.gateway_server.send_notification(token, payload)
Esempio n. 5
0
 def title_and_body(self, story, usersub):
     def replace_with_newlines(element):
         text = ''
         for elem in element.recursiveChildGenerator():
             if isinstance(elem, types.StringTypes):
                 text += elem
             elif elem.name == 'br':
                 text += '\n'
             elif elem.name == 'p':
                 text += '\n\n'
         return text
     
     feed_title = usersub.user_title or usersub.feed.feed_title
     # title = "%s: %s" % (feed_title, story['story_title'])
     title = feed_title
     subtitle = story['story_title']
     # body = HTMLParser().unescape(strip_tags(story['story_content']))
     soup = BeautifulSoup(story['story_content'].strip())
     # print story['story_content']
     body = replace_with_newlines(soup)
     body = truncate_chars(body.strip(), 1600)
     
     return title, subtitle, body
Esempio n. 6
0
    def title_and_body(self, story, usersub):
        def replace_with_newlines(element):
            text = ''
            for elem in element.recursiveChildGenerator():
                if isinstance(elem, types.StringTypes):
                    text += elem
                elif elem.name == 'br':
                    text += '\n'
                elif elem.name == 'p':
                    text += '\n\n'
            return text

        feed_title = usersub.user_title or usersub.feed.feed_title
        # title = "%s: %s" % (feed_title, story['story_title'])
        title = feed_title
        subtitle = story['story_title']
        # body = HTMLParser().unescape(strip_tags(story['story_content']))
        soup = BeautifulSoup(story['story_content'].strip())
        # print story['story_content']
        body = replace_with_newlines(soup)
        body = truncate_chars(body.strip(), 1600)

        return title, subtitle, body