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
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
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
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)
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