小技チョコレート

ちょっとした小技を紹介するだけのブログです。

コマンドプロンプトからDynalistのInboxへ記入するPythonスクリプト

コマンドプロンプトに入力したテキストをDynalistのInboxへ記入するPythonスクリプトを作ったので、コードと使い方を書いておきます。


〈目次〉


機能

必要なもの

Pythonを実行できる必要があります。

複数項目を記入できるタイプ

設定の手順

Dynalistにログインしたうえで、Developer - Dynalistをウェブブラウザで開き、“Your API secret token is: ”の下に表示されている長い文字列をコピーします(下記の画像でボカしている部分です)。*2

f:id:ichbin:20190804143052p:plain

テキストエディタで新しいファイルを作り、下記のコードを記入します。

import sys
import json
import requests

lines = sys.stdin.readlines()

for i, line in enumerate(reversed(lines)):
    line = line.strip("\n")
    dict={'token':'YOUR_SECRET_TOKEN',
    'index':'0',
    'content':line
    }
    response = requests.post('https://dynalist.io/api/v1/inbox/add', json.dumps(dict), headers={'Content-Type': 'application/json'})
    print (response.text)

9行目のYOUR_SECRET_TOKENのところに、上述のコピーした長い文字列をペーストします。

10行目のindexの値はデフォルトで0としていますが、ここには0または-1を入力できます。
0にすると、Terminalに入力したテキストはInboxの先頭の行に記入されます。-1にすると、Inboxの末尾の行に記入されます。
ここでの位置指定は、Dynalistの設定画面での位置指定よりも優先します。

記入し終えたら、このファイルを適当なフォルダに保存します。ファイル名はdynalist.pyのように拡張子を.pyとします。

使い方

Terminalで、上掲のdynalist.pyを保存したフォルダに移動し、python dynalist.pyと実行。

f:id:ichbin:20190804143320p:plain

下の行にカーソルが移るので、Dynalistに記入したい内容を入力します。Enterキーを押すと次の行に移ります。

f:id:ichbin:20190804194532p:plain

最後の行(この例では3行目)に入力し終わったら、改行してからControl+dのキーを押します。Dynalistへの記入が行われます。

Dynalistへの記入が正しく行われれば、{"_code":"Ok","node_id":"**********","index":0}というメッセージが、行数と同じ回数表示されます。これで完了です。

f:id:ichbin:20190804194942p:plain

Dynalistを開くと、このように記入されています。

f:id:ichbin:20190804194652p:plain

1項目(1行)のみ記入できるタイプ

設定の手順

Dynalistにログインしたうえで、Developer - Dynalistをウェブブラウザで開き、“Your API secret token is: ”の下に表示されている長い文字列をコピーします(下記の画像でボカしている部分です)。*3

f:id:ichbin:20190804143052p:plain

テキストエディタで新しいファイルを作り、下記のコードを記入します。

import json
import requests

content=input('>>')
 
dict = {
    'token'  :  'YOUR_SCERET_TOKEN',
    'index'  :  '0',
    'content'  :  content
}

response = requests.post('https://dynalist.io/api/v1/inbox/add', json.dumps(dict), headers={'Content-Type': 'application/json'})

print (response.text)

7行目のYOUR_SECRET_TOKENのところに、上述のコピーした長い文字列をペーストします。

8行目のindexの値はデフォルトで0としていますが、ここには0または-1を入力できます。
0にすると、Terminalに入力したテキストはInboxの先頭の行に記入されます。-1にすると、Inboxの末尾の行に記入されます。
ここでの位置指定は、Dynalistの設定画面での位置指定よりも優先します。

記入し終えたら、このファイルを適当なフォルダに保存します。ファイル名はdynalist.pyのように拡張子を.pyとします。

使い方

Terminalで、上掲のdynalist.pyを保存したフォルダに移動し、python dynalist.pyと実行。

f:id:ichbin:20190804143320p:plain

下の行に>>という記号が表示されるので、そこに続けて、Dynalistに記入したい内容を入力し、Enterキーを押します。

f:id:ichbin:20190804143346p:plain

Dynalistへの記入が正しく行われれば、{"_code":"Ok","node_id":"**********","index":0}というメッセージが表示されます。これで完了です。

f:id:ichbin:20190804143401p:plain

Dynalistを開くと、このように記入されています。

f:id:ichbin:20190804143415p:plain

GUIバージョン

別記事にGUIバージョンもあります。

オプション

入力時にIMEを自動でオンにする(Windowsのみ)

コマンドプロンプトpip install pywinautoと実行して、Pythonのモジュールであるpywinautoをインストールしたうえで、上掲のスクリプトimport requestsの次の行に下記の2行を付け加えます。

import pywinauto
pywinauto.keyboard.send_keys('{VK_KANJI}') #IMEをオンにする

コマンドプロンプトの画面が自動で閉じるのを防ぐ

上掲の{"_code":"Ok","node_id":"**********","index":0}というメッセージが出たか出ていないかをきちんと読む前にコマンドプロンプトの画面が閉じてしまうのを防ぎたい場合は、スクリプトの最後にinput()という行を記入するとよいと思います。これを記入していれば、Enterキーを押すまでは画面が閉じません。

資料

上掲のスクリプトは、こちらに示されている仕様に従って作りました。

*1:Inboxの位置を決める方法についてはこちらをご参照ください。

*2:この文字列を、他人が読める状態にしてはいけません。ですので、この文字列を書き込んだファイルも、他人が読める状態にするべきではありません。

*3:この文字列を、他人が読める状態にしてはいけません。ですので、この文字列を書き込んだファイルも、他人が読める状態にするべきではありません。

Linux用ランチャーのAlbertからコマンドでウェブページを開く方法

Linux用のランチャーであるAlbertにコマンド(トリガー)を入力して、特定のウェブページをブラウザで開く方法を紹介します。

Albertが備えている“WebSearch”の機能を流用したものです。*1


〈目次〉


機能

特定のコマンド(トリガー)を、Albertの中で特定のURLに紐づけたうえで、そのコマンドをAlbertに打ち込むことで、そのウェブページをブラウザで開けるようになります。

必要なもの

AlbertまたはAlbert-liteをインストールします。

Albertのインストールや起動の仕方についてはこちらの記事をご参照ください。

設定の手順

Albertを起動し、ウィンドウの右上にある歯車のアイコンをクリックすると、設定画面が開きます。

設定画面の左上の“Extension”タブをクリック。そして下のほうにある“WebSearch”にチェックを入れ、その行をマウスでクリックすると、右側の欄にURLなどが表示されます(下記の画像ではボカシています)。

右下のほうにある「+」をクリックすると、ウィンドウが開きます。ブラウザで開きたいURLと、それに紐付けるコマンドを、ここで指定します。ここでは、Googlehttps://www.google.com/)を開く場合を例として示します。

Nameの欄には任意の名前を入力できます。ここではGoogleとします。
URLの欄には、開きたいURLを記入します。
Triggerの欄には、このURLを開くためにAlbertに打ち込むコマンドを指定します。ここではg (gと半角スペース1個)としています。半角スペースを付け加えることは必須ではありませんが、コマンドを1文字のみにするのは避けたほうがよいと思います(同じ頭文字をもつ他のコマンドやアプリケーションの実行を妨げるので)。

記入したらOKボタンを押します。

すると、この画面に戻ります。さきのウィンドウで記入した内容が右側の表のなかに表示されます(1行目)。

この状態になれば、設定画面は閉じても構いません。

設定はこれで完了です。

ウェブページの開き方

Albertのウィンドウに、先ほど指定したコマンド(g )を入力してEnterキーを押すと、このコマンドに紐づけたURLがブラウザで開かれます。


(コマンドを入力した状態)

Tips

この記事で扱っているWebSearchという機能は、本来はAlbertに入力したキーワードをウェブ検索した結果をブラウザで開くために用意されている機能です。ですから、本来のその用途でこの機能を利用する機会も多くあると思います。

その際、たとえばhogeというキーワードをウェブ検索しようとしてAlbertにhogeと入力すると、検索をさせるサービスの候補がこのように出てきますが、この最上段にある“Google”は、この記事で紹介した「ウェブページを開くための設定」にすぎませんので、このままEnterキーを押してもGoogleでの検索は実行されず、単に https://www.google.com/ が開かれるだけです。

つまり、検索をしようとした際に、検索機能とは関係のないものが候補として上位に出てしまうという煩わしい状態になります。これを防ぐためには、Albertのこちらの設定画面において右側の表の中にある「ウェブページを開くための設定」(下記の例では1行目のもの)を、マウスでドラッグして下の方に移動させます。


(1行目にある状態)


(下の方に移動した状態)

こうしておけば、ウェブ検索をしようとした際に候補として上位に出てくることはなくなります。

*1:このほかに、ウェブページを開くためのシェルスクリプトをあらかじめ作っておいて、AlbertのTerminal機能からそれを実行するという手法もあります。

Firefoxで画面分割をする方法のまとめ

こちらの4種類の方法があります。

*1:サイドバーの横幅に上限がある状態(それがデフォルトですが)は不便なので、横幅の上限をなくす設定も併せて行うと便利です。

ブラウザのツールバーからDynalistに投稿する方法

PCにて、ブラウザでDynalistを開いていないときでも、ブラウザのツールバーからDynalistへ投稿する方法を紹介します。

ブラウザのアドオン“Dynalist Companion Clipper”(Firefox版 / Chrome版)をインストールし、ブラウザのツールバーに表示されたこのアドオンのアイコンをクリックすると、入力欄とボタンが現れます。Tabキーを1回押すごとに、それぞれの入力欄とボタンが選択されます。

f:id:ichbin:20190729211759p:plain
青空文庫の「夏目漱石 坊っちゃん」をブラウザで開いているときにアイコンをクリックした状態)

それぞれの入力欄には、その時点でブラウザで開いているウェブページのタイトルとURLが自動で記入されています(about:blankなどの空白ページを開いている場合は空白になります)。それ以外のことを投稿したい場合は、これらの記入されているテキストを書き換えます。

“TITLE”の欄に入力したものが、Dynalistで1個の項目になります。“NOTE”の欄に入力したものは、Note(各項目の下に表示される注釈のようなテキスト)となります。これらの入力欄には改行は記入できません。

“Send”のボタンを押すと、Dynalistで予めInboxとして指定してある項目の下位に投稿されます。

f:id:ichbin:20190729210703p:plain
(“TITLE”の欄に「ぼっちゃん」と記入し、“NOTE”の欄は書き換えずに“Send”ボタンを押したものがDynalistに投稿された状態)

備考

右クリックからの投稿

上掲のアドオン“Dynalist Companion Clipper”は、ブラウザの右クリックメニューからDynalistに投稿する機能もあります。投稿できる内容は下記の2通りです。

  • ブラウザで開いているウェブページのタイトルとURL
  • ウェブページのテキストを選択して右クリックした場合には、そのテキストおよび、そのページへのハイパーリンク

f:id:ichbin:20190729214338p:plain

フォーマットの変更

アドオンの設定画面にて、投稿する内容のフォーマットを変えることができます。

f:id:ichbin:20190828095745p:plain
Markdown形式も使える)