青蛙关站的这几年,虽然没有写blog,但是instagram和twitter发了可真不少。
今天研究了下怎么导入instagram的照片和twitter的条目。
看起来instagram很容易实现,因为有一个python的客户端
Instaloader
。
首先,用pip把这个客户端装上
$ pip3 install instaloader
然后,自己搞个脚本,从instagram数据里面直接生成markdown文件,写的不太好看,不过数据基本完美导入Blog了。
import instaloader
import os
import time
L=instaloader.Instaloader()
L.interactive_login("gfrogcn")
profile = instaloader.Profile.from_username(L.context, "gfrogcn")
new_template ="""title: Instagram Picture %s
date: %s 23:59:59
slug: instagram-picture-%s
category: Pictures
comments: true
layout: post
_%s_ %s
[via Instagram](https://www.instagram.com/p/%s/)
%s
"""
append_template = """
_%s_ %s
[via Instagram](https://www.instagram.com/p/%s/)
%s
"""
i = 0
for post in profile.get_posts():
link = ""
post_date = post.date_local.strftime("%F")
post_time = post.date_local.strftime("%T")
print("%s - %s" % (post_date, post.shortcode))
if post.caption:
caption = post.caption.replace("\n", "\n\n")
else:
caption = ""
if post.typename == "GraphSidecar":
for n in post.get_sidecar_nodes():
if n.is_video:
link += "[%s][%s]\n\n" % (n.video_url, n.video_url)
else:
link += "![1](%s)\n\n" % n.display_url
elif post.is_video:
link = "[%s](%s)" % (post.video_url, post.video_url)
else:
link = "![1](%s)" % post.url
md_file = "%s-instagram-picture-%s.md" % (post_date, post_date)
if os.path.isfile(md_file):
file_open_mode = "a+"
output = append_template % (post_time, caption,
post.shortcode, link)
else:
file_open_mode = "w+"
output = new_template % (post_date, post_date, post_date,
post_time, caption, post.shortcode,
link)
with open(md_file, file_open_mode) as file:
file.write(output)
i += 1
if i >= 12:
time.sleep(20)
i = 0
目前没有解决的问题有两个,这两点以后有时间再研究吧。
如果有新的instagram内容,可能需要有一个daemon每天监测然后转换成markdown。
没办法处理视频内容,现在只是把视频文件链接留下了,但是没办法直接在blog播放。
之后有时间需要找一个嵌入video的办法。
Update: 原来liquid_tags.video插件就可以插入video,只需要在post里写
{ % video link width height % }
就好了。
Update 2: Instagram 的 video link 几天之后就失效了。
所以目前青蛙的办法是直接在 Instram 里面导出 video 的 embed code,贴到 post 里面就好。
Comments
comments powered by Disqus