From f478be03f59d90328d29a4b0ce010f37adfbda22 Mon Sep 17 00:00:00 2001 From: Roman Timashev Date: Sat, 3 Jun 2017 20:16:58 +0300 Subject: [PATCH] [Sync] Kazimir Instagram --- utils/Sync/kazimir/__init__.py | 20 +++++++++- utils/Sync/kazimir/instagram.py | 68 +++++++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 utils/Sync/kazimir/instagram.py diff --git a/utils/Sync/kazimir/__init__.py b/utils/Sync/kazimir/__init__.py index 5b453691..5eee70ae 100644 --- a/utils/Sync/kazimir/__init__.py +++ b/utils/Sync/kazimir/__init__.py @@ -3,10 +3,14 @@ import requests from markdown import markdown from kazimir.video import VideoExtension +from kazimir.instagram import InstagramExtension def markdown_to_html(text): - return markdown(text, extensions=[VideoExtension()]) + return markdown(text, extensions=[ + VideoExtension(), + InstagramExtension(), + ]) def kazimir_to_html(text): @@ -33,3 +37,17 @@ def typo(html): if res.status_code == 200: return res.text return html + + +if __name__ == '__main__': + sample_text = ''' +Hello! + +https://www.instagram.com/p/BUelE04l1kU + +https://www.instagram.com/p/BUrOXoBFayG/?taken-by=hudozka + +Bye! + ''' + + print(markdown_to_html(sample_text)) diff --git a/utils/Sync/kazimir/instagram.py b/utils/Sync/kazimir/instagram.py new file mode 100644 index 00000000..a1cc4d06 --- /dev/null +++ b/utils/Sync/kazimir/instagram.py @@ -0,0 +1,68 @@ +import requests +from markdown import Extension +from markdown.inlinepatterns import Pattern +from markdown.util import etree + + +class InstagramExtension(Extension): + def add_inline(self, md, name, klass, re): + pattern = klass(re) + pattern.md = md + pattern.ext = self + md.inlinePatterns.add(name, pattern, "[\w\d]+)/?(.*)$' + self.add_inline(md, 'instagram', Instagram, match_url) + + +class Instagram(Pattern): + def handleMatch(self, m): + return embed_instagram(m.group('media')) + + +def embed_instagram(media): + """ +
+
+
+
+
+
+ +

+ + Композиция. Второй год обучения. Преподаватель Гоголева О.Д. #shlb_hudozka #живопись #дети #детирисуют #гуашь #пословицыипоговорки #художка #шлиссельбург #shlisselburg + +

+ +

+ A post shared by Шлиссельбургская ДХШ (@hudozka) on + + +

+
+
+ """ + + url = 'https://api.instagram.com/oembed?url=http://instagr.am/p/{}&hidecaption=true&omitscript=true'.format(media) + req = requests.get(url) + if req.status_code == 200: + html = req.json()['html'] + html = fix_html(html) + i = etree.fromstring(html) + + obj = etree.Element('div') + obj.set('class', "kazimir-embed") + obj.append(i) + return obj + else: + raise Exception( + 'Failed to compile Instagram {media}: Status Code: {status}'.format(media=media, status=req.status_code) + ) + + +def fix_html(html: str): + return html.replace('data-instgrm-captioned', 'data-instgrm-captioned=""')