def get_bible_passage(query): BASE_URL = 'http://nasb.literalword.com/' url = BASE_URL params = { 'q' : query, } response = requests.get(url, params) if response.status_code == 200: soup = BeautifulSoup(response.content, 'html.parser') text_container = soup.select('.bMeatWrapper') if len(text_container): container = text_container # remove <p> tags for p in container.find_all('p'): p.decompose() html = u'%s' % container text = html2markdown(html) else: meta_description_tag = soup.meta.find(attrs={'name' : 'description',}) text = meta_description_tag['content'] else: text = 'Could not find passage in Bible. Please review your query or try again later.' passage = { 'url' : response.url, 'text' : text, } return passage
def get_bible_passage(query, version=None): version = get_bible_version(version) url = LITERAL_WORD_URLS.get(version, DEFAULT_BIBLE_VERSION) params = { 'q' : query, } response = requests.get(url, params) if response.status_code == 200: soup = BeautifulSoup(response.content, 'html.parser') text_container = soup.select('.bMeatWrapper') if len(text_container): container = text_container[0] # remove <p> tags for p in container.find_all('p'): p.decompose() # have to extract text using BeautifulSoup since Markdown syntax allows span tags, apparently html = u'%s' % container.text text = html2markdown(html) else: meta_description_tag = soup.meta.find(attrs={'name' : 'description',}) text = meta_description_tag['content'] else: text = 'Could not find passage in Bible. Please review your query or try again later.' passage = { 'url' : response.url, 'text' : text, } return passage
def get_bible_passage(query, version=None): version = get_bible_version(version) url = LITERAL_WORD_URLS.get(version, DEFAULT_BIBLE_VERSION) params = { 'q': query, } response = requests.get(url, params) if response.status_code == 200: soup = BeautifulSoup(response.content, 'html.parser') text_container = soup.select('.bMeatWrapper') if len(text_container): container = text_container[0] # remove <p> tags for p in container.find_all('p'): p.decompose() # have to extract text using BeautifulSoup since Markdown syntax allows span tags, apparently html = u'%s' % container.text text = html2markdown(html) else: meta_description_tag = soup.meta.find(attrs={ 'name': 'description', }) text = meta_description_tag['content'] else: text = 'Could not find passage in Bible. Please review your query or try again later.' passage = { 'url': response.url, 'text': text, } return passage
def get_bible_passage(query, version=None): version = get_bible_version(version) url = LITERAL_WORD_URLS.get(version, DEFAULT_BIBLE_VERSION) params = { 'q': query, } response = requests.get(url, params) title = query if response.status_code == 200: soup = BeautifulSoup(response.content, 'html.parser') text_container = soup.select('.bMeatWrapper') if len(text_container): container = text_container[0] title_container = container.select('.bTitle') if title_container: title = title_container[0].text.title() else: pass # add linebreaks for paragraphs paragraphs = container.select('.bPara') for paragraph in paragraphs: paragraph.replaceWith('<br/>') # add newlines for pericope headings pericopes = container.select('.bPeri') pericope_count = 0 for pericope in pericopes: template = '<br/><br/><i>{}</i>' if pericope_count > 0 else '<i>{}</i>' pericope.replaceWith(template.format(pericope.text)) pericope_count += 1 # remove <p> tags for p in container.find_all('p'): p.decompose() # have to extract text using BeautifulSoup since Markdown syntax allows span tags, apparently html = '%s' % container.text text = html2markdown(html) else: meta_description_tag = soup.meta.find(attrs={ 'name': 'description', }) text = meta_description_tag['content'] else: text = 'Could not find passage in Bible. Please review your query or try again later.' passage = { 'url': response.url, 'text': text, } return passage
def send_email( template=None, subject='', sender=None, to=None, cc=None, bcc=None, context=None, text_only=False ): """Sends a templated email w/ text and HTML """ template = template or 'base' sender = sender or htk_setting('HTK_DEFAULT_EMAIL_SENDER', HTK_DEFAULT_EMAIL_SENDER) to = to or htk_setting('HTK_DEFAULT_EMAIL_RECIPIENTS', HTK_DEFAULT_EMAIL_RECIPIENTS) bcc = bcc or [] cc = cc or [] base_context = get_email_context() if context: base_context.update(context) else: pass context = base_context if settings.ENV_DEV: subject = '[%s-dev] %s' % (htk_setting('HTK_SYMBOLIC_SITE_NAME'), subject,) # assume HTML template exists, get that first try: html_template = get_template('emails/%s.html' % template) context['base_template'] = htk_setting('HTK_EMAIL_BASE_TEMPLATE_HTML') c = Context(context) html_content = html_template.render(c) except TemplateDoesNotExist: html_template = None html_content = '' # if native text template exists, use it try: context['base_template'] = htk_setting('HTK_EMAIL_BASE_TEMPLATE_TEXT') c = Context(context) text_template = get_template('emails/%s.txt' % template) text_content = text_template.render(c) except TemplateDoesNotExist: text_template = None # convert HTML to text if html_template: html_text_content = html_template.render(c) text_content = html2markdown(html_text_content) else: text_content = '' msg = EmailMultiAlternatives(subject=subject, body=text_content, from_email=sender, to=to, bcc=bcc, cc=cc) if not text_only and html_content: msg.attach_alternative(html_content, 'text/html') else: pass msg.send()
def send_email( template=None, subject='', sender=None, reply_to=None, to=None, cc=None, bcc=None, context=None, text_only=False, headers=None ): """Sends a templated email w/ text and HTML """ if headers is None: headers = {} if reply_to is not None: headers['Reply-To'] = reply_to template = template or 'base' sender = sender or htk_setting('HTK_DEFAULT_EMAIL_SENDER', HTK_DEFAULT_EMAIL_SENDER) to = to or htk_setting('HTK_DEFAULT_EMAIL_RECIPIENTS', HTK_DEFAULT_EMAIL_RECIPIENTS) bcc = bcc or [] cc = cc or [] base_context = get_email_context() if context: base_context.update(context) else: pass context = base_context if settings.ENV_DEV: subject = '[%s-dev] %s' % (htk_setting('HTK_SYMBOLIC_SITE_NAME'), subject,) # assume HTML template exists, get that first try: html_template = get_template('emails/%s.html' % template) context['base_template'] = htk_setting('HTK_EMAIL_BASE_TEMPLATE_HTML') html_content = html_template.render(context) except TemplateDoesNotExist: html_template = None html_content = '' # if native text template exists, use it try: context['base_template'] = htk_setting('HTK_EMAIL_BASE_TEMPLATE_TEXT') text_template = get_template('emails/%s.txt' % template) text_content = text_template.render(context) except TemplateDoesNotExist: text_template = None # convert HTML to text if html_template: html_text_content = html_template.render(context) text_content = html2markdown(html_text_content) else: text_content = '' msg = EmailMultiAlternatives( subject=subject, body=text_content, from_email=sender, to=to, bcc=bcc, cc=cc, headers=headers ) if not text_only and html_content: msg.attach_alternative(html_content, 'text/html') else: pass email_attachments = htk_setting('HTK_EMAIL_ATTACHMENTS') if email_attachments: attach_images_to_message(msg, email_attachments) #for attachment in email_attachments: # msg.attach_file(attachment) msg.send()