6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Jupyter Notebookの内容を画像も含めてそのままQiitaへ投稿する

Last updated at Posted at 2020-06-14

JupyterのMarkdownをQiitaへ投稿

Jupyter Notebookの内容を「File → Export」機能により「Markdown」形式でエクスポートすると、得られる.mdファイルの内容をそのままQiitaに貼り付けて投稿できるので、とても便利です。

ただ、Notebookで描画したグラフなどの画像がある場合は、画像へのリンクアドレスがQiitaへ投稿すると違ってくるので、書き換える必要があります。
image.png

画像も含めてそのままQiitaへ投稿する

そこで、画像をQiitaへ投稿・画像のリンクアドレスを書き換え、を行うスクリプトを試作してみます。

投稿の仕方

Jupyter Notebookの内容を「File → Export」から「Markdown」形式でエクスポート。
image.png
 ↓
Notebookに画像がある場合は、.zipファイルが得られます。この中身の、.mdファイル①と、その他の画像ファイル(.png)全て②、を以降で使います。
 ↓
後段に掲載の「conv_jupyter_md_pic_to_qiita.py」ファイルと同じフォルダに、.zipの中の.mdファイル①を配置。(任意の名前でOK、1個の.mdだけ配置)
 ↓
Qiitaで新規投稿→記事を作成し、新しい編集ページ枠の上へ、.zipの中の画像ファイル(.png)全て②をドラッグアンドドロップ。
image.png
 ↓
画像がアップロードされ、Markdownのリンク文字列が生成されるので、これを全て選択して切り取り、.txtファイル③を新規に用意して貼り付けて保存。
 ↓
「conv_jupyter_md_pic_to_qiita.py」ファイルと同じフォルダに、.txtファイル③を配置。(任意の名前でOK、1個の.txtだけ配置)
 ↓
スクリプト「conv_jupyter_md_pic_to_qiita.py」を実行。
 ↓
.mdファイル①のファイル名に.convが付いた.mdファイル④が新しく作成され、この中には、画像のリンクアドレスがQiitaへ投稿した画像のものに変換されたMarkdownが出力されています。
 ↓
生成された.mdファイル④の内容をすべてコピーして、Qiitaの編集ページへ貼り付けます。Qiitaのプレビューに画像も合わせて表示されます。

画像のリンクアドレスを書き換えるスクリプト.pyコード

conv_jupyter_md_pic_to_qiita.py
# -*- coding: utf-8 -*-

# Jupyter Notebookでダウンロード(エクスポート)したMarkdown(.zipファイル)を
# Qiitaで公開するために、画像パスを置換。

# Markdown(.zipファイル)の中にある画像ファイルは、Qiitaの編集ページで
# すべてドラッグアンドドロップ、その時に出てくる画像表示のMarkdownを
# テキストファイルに保存して、このスクリプトで置換。

import pathlib, re

# sec: main

def main(): # 実行切替用
    run__main1()

def run__main1():

    # sec: path
    
    path_md = None
    for path_md in pathlib.Path(".").glob("*.md"): break

    print("load:", path_md)
    if path_md is None: # if: 該当なし
        return
    
    path_qi = None
    for path_qi in pathlib.Path(".").glob("*.txt"): break

    print("load:", path_qi)
    if path_qi is None: # if: 該当なし
        return
    
    # sec: load Qiita-pic-list
    
    with path_qi.open(mode='r', encoding="UTF8") as file:
        lines_qi = file.readlines()
    
    # sec: make list
    
    re_pic = re.compile(r"!\[([^\]]+)\]\(([^)]+)\)") #" Qiitaコード色付けが不調の為
    qi_pic_list = []
    for line in lines_qi:
        
        if len(line) <= 0:
            continue
        
        matched = re_pic.match(line)
        if matched is None: # if: 画像のMarkdownと不一致
            print("エラー: 画像のMarkdownと不一致", line)
            return
        
        qi_pic_list.append( (matched.group(1), matched.group(2)) )

    print("conv:", len(lines_qi))
    
    re_pic = None
    lines_qi = None
    
    # sec: conv
    
    text_md = path_md.read_text(encoding="UTF8")
    for name, addr in qi_pic_list:
        text_md = text_md.replace("![png](%s)" % name, "![%s](%s)" % (name, addr))
    
    # sec: output
    
    path_md_out = path_md.with_name("%s.conv%s" % (path_md.stem, path_md.suffix))
    path_md_out.write_text(text_md, encoding="UTF8")

    print("output:", path_md_out)
    
# sec: entry

if __name__ == "__main__": main()

コードの概要

作成中。

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?