Dynalistに1行ずつ書くGUIアプリケーション(Python使用)
https://gyazo.com/3b5600e0f1aad0c7a382c3b0e713b541
入力欄に入力してEnterキーを押すだけです。
書き込まれる場所は、Inboxまたは「特定の項目の下位」を選べます。
それらの位置において、既存の項目の上側(先頭)に記入するか、下側(末尾)に記入するかを選べます。
実行に必要なもの
設定の仕方
1. Inboxの位置を指定
このアプリで書き込み先をInboxにしたい場合は、DynalistにおいてInboxの位置をあらかじめ指定しておく必要があります。
まだ指定していない場合は、こちらの手順に従って指定します。 2. Secret tokenをコピー
https://cdn-ak.f.st-hatena.com/images/fotolife/i/ichbin/20190804/20190804143052.png
3. Pythonスクリプトファイルの作成
こちらのコードをコピーしてテキストエディタにペーストし、そのファイルを適当なフォルダに保存します。 ファイル名はdypost.pyのように拡張子を.pyとします。
4. Secret tokenの記入
そのファイル(コード)の7行目付近のSECRET_TOKENのところを、上述のコピーした長い文字列(Secret token)で置き換える。
https://gyazo.com/12aa245a7662b9f9f5527a06d8cdc6e6
両端のクォーテーション(')は消さずに、その間に記入します。
なお、自分のSecret tokenを他人が読める状態にしてはいけません。従って、それをペーストしたこのファイル自体も、他人に読まれうる状態にしないよう注意してください。
ここまでの状態で、このアプリの機能は
このアプリから投稿したものはDynalistのInboxの先頭に記入される。
という状態になっています。
そのままでよければ、このファイルを上書き保存して設定は完了です。
機能を次のように変更したい場合は、それぞれの設定を行います。
先頭とは、たとえばこの例ではhogeの上側のこと。「末尾」とはbarの下側のこと。
Foo
hoge
fuga
bar
「古いものほど上に、新しいものほど下に」という順で記入したい場合は「末尾」を選ぶほうが適しています。
5. 投稿先をInboxにするかどうかを選択
デフォルトでは、Inboxに投稿するように指定してある。
Inboxでない項目の下位に投稿したい場合は、コードの11行目付近のappendToInbox=1のところをappendToInbox=0に書き換え、さらに下記の6の工程もおこなう。
6. 投稿先にするドキュメントのidと、親ノードのidを指定
(投稿先をInboxに指定している場合は、このセクションは実行不要です)
上掲の5で投稿先をInbox以外に指定した場合(appendToInbox=0とした場合)は、「ドキュメントのid」と「親ノードのid」を用いて投稿先を指定します。
ドキュメントのidを指定
Dynalistにログインしたうえで、書き込みたい対象のドキュメントを開き、そのドキュメントのidをコピーします。
すなわち、そのドキュメントを開いている状態のURL(例:https://dynalist.io/d/KWJ-NGiPrpbDyjX4fPiJ3YK9)のうちの/d/よりも後ろの部分をコピーします(この例ではKWJ-NGiPrpbDyjX4fPiJ3YK9がドキュメントのidです)。
このときのURLに#が含まれている場合は、#以降はドキュメントのidに含みません。
コピーした文字列を、コードの15行目付近のYOUR_FILE_IDのところに記入(上書き)します。
https://gyazo.com/5a595e2226f429ee5a1944d5138f304a
親ノードのidを指定
このアプリを使って書き込みたい内容の上位(1階層上位)に相当する項目(行)のことを親ノードといいます
例えば下記のような階層構造があるとき、BやCの親ノードはAであり、Dの親ノードはCとなります。
A
B
C
D
Dynalistにて、このアプリを使って書き込みたい内容の親ノードに相当する行(親ノードにしたい行)の行頭にマウスカーソルを置いて、“Zoom in”のアイコン(虫眼鏡アイコン)を押すか、もしくはその行でCtrl+]のショートカットキーを叩くと、その行に“Zoom in”した状態になります。
https://cdn-ak.f.st-hatena.com/images/fotolife/i/ichbin/20190901/20190901183606.png
“Zoom in”した状態↓
https://cdn-ak.f.st-hatena.com/images/fotolife/i/ichbin/20190901/20190901183618.png
その状態でのURLは末尾が#z=E2YF50ihKrH8Oi8oSa3HvPxjのようになっています。そこから#z=を取り除いた文字列(この例ではE2YF50ihKrH8Oi8oSa3HvPxj)が、親ノードのidです。これをコピーします。
コピーした文字列を、コードの19行目付近のYOUR_PARENT_NODE_IDのところに記入(上書き)します。
https://gyazo.com/c5d09c51891e53dcf4edb17f772d9422
7. 記入位置を先頭にするか末尾にするかを選択
デフォルトでは「先頭」が選択されている。
位置を「末尾」に変えたければ、コードの16行目付近のindex=0のところをindex=-1に書き換える。
使い方
1. dypost.pyを保存したディレクトリにて、コマンドラインで次のように実行すると起動する。 $ python dypost.py
毎度コマンドで起動するのは面倒なので、このコマンドを実行するショートカットキーなどを設定しておけば便利だと思います。 2. ウィンドウが表示されるので、入力欄に記入。
https://gyazo.com/3b5600e0f1aad0c7a382c3b0e713b541
Enterキーまたは投稿ボタンを押すと投稿される。
Escキーを押すと入力欄の内容が消える。
<Control + Enter>キーまたは「投稿&終了」ボタンを押すと、投稿が正しく出来た場合にはウィンドウが閉じる。
投稿が正しく出来なければ、ウィンドウは閉じず、エラーが表示される。
"Inbox"の選択欄をオン/オフすると、書き込み先をInboxにするかどうかを選択できる。
オフにすると、上掲の6で指定した投稿先に記入される。
選択ボックスの「先頭」とは、Inbox(や特定の項目の下位)において先頭に記入されるという意味。「末尾」はその逆。
<Control + F>キーを押すと、フォーカスが入力欄に戻る。
投稿が正しく行われれば、Ok: (投稿内容)というメッセージが出る。
https://gyazo.com/5e76af315d3e7fae68ce5ed67fec522b
DynalistのInboxにこのように投稿されている。
https://gyazo.com/966211a269bc8f2b479c1f8f9a80e623
何らかのエラーが原因で、投稿が成功しなかったら、赤色でNGのメッセージが出る。https://gyazo.com/84c3d2d68f2ad504953ab0405fb52d76
エラーメッセージの意味の解説は、Dynalistのヘルプのこちらおよびこちらにも書かれています。 カスタマイズ
各機能に割り当てているキーは変更できます(コードの140行目付近)。
https://gyazo.com/e91035ca51e0a4ca370d587a67f716ec
ウィンドウの大きさや、ウィンドウ内の背景色・文字色・字体・フォントサイズ・配置などを変更できます(コード内の各々の箇所を参照)。
既知の問題点
テンキーの中のEnterキーには反応しないようです。
入力欄でCtrl+Aを押して、入力欄内のテキスト全体を選択しようとしても、選択できないかもしれません。
その場合は、Shift+矢印キーやマウスドラッグで選択してください。
入力欄の下にある"Inbox", 「先頭」、「末尾」のいずれかにフォーカスした状態でEnterキーを押すと投稿されてしまいますので、これらの選択欄での選択はShiftキーかマウスクリックで行ってください。
https://gyazo.com/3b5600e0f1aad0c7a382c3b0e713b541
前回に投稿した字数よりも短い字数で投稿すると、前回に表示されたメッセージの断片が画面上に見えたままになる場合があります。
https://gyazo.com/9713c370c4af5374652c8e877d3d67be
(投稿した内容(“foo”)の右側に、余白をはさんで、前回のメッセージの右端が見えている状態。)
入力メソッドがFcitxの場合は、入力中の文字が入力欄の中に表示されません。 https://gyazo.com/b3b28f3bb3b056f9afe83af56120ce7f
確定すると表示されます↓
https://gyazo.com/805d4ab57c0acac1a56cadf54bb40cbf
備考
テストした環境は
Python 3.7.4
です。
/icons/hr.icon