小技チョコレート

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

Scrapboxのブックマークレットを使って、既存のページに追記をする方法

Scrapboxの設定画面の“Page Data”のタブに用意されているブックマークレット(Scrap to ○○'s project)で取り込むURLやテキストを、Scrapboxの既存のページに追記させることができます。

f:id:ichbin:20190817105549p:plain
https://scrapbox.io/projects/プロジェクトURL/settings/page-dataにあります)

事前の準備

ブラウザがChrome系の場合は、設定画面の中の「ポップアップとリダイレクト」の項目を許可する必要があるかもしれません。

f:id:ichbin:20190903102412p:plain

追記の手順

Scrapboxに「ヒグマ」というタイトルのページが既に存在していて、そのページへ追記する場合を例として説明します。

追記したいウェブページのURLを開いて(追記したいテキストがある時はそれをマウスなどで選択して)ブックマークレットをクリックすると、中央に入力欄が表示されます。
この入力欄には、最初の状態では、それぞれのウェブページのタイトルが入力されています。

f:id:ichbin:20190817104108p:plain
伝説のハンター、ヒグマと接近戦 鼻先かみつき九死一生:朝日新聞デジタル

この入力欄の内容を、Scrapboxで追記したいページのタイトル(ヒグマ)に置き換えてOKボタンを押します。

f:id:ichbin:20190817104325p:plain

するとこのように、既存の「ヒグマ」ページの末尾に追記されます。

f:id:ichbin:20190817104903p:plain
("hogehoge"の部分は既存のコンテンツで、そこから下が追記部分)


Huawei P20 liteで画面ロック解除時に「画面の上部を覆わないで下さい」という警告を出さないようにする方法(EMUI 9.1の場合)

HuaweiAndroid端末で、画面のロックを解除しようとした際に、画面の上部を手などで覆っていると「タッチ無効モード 画面の上部を覆わないで下さい」という警告が出ますが、これを出さないように設定する方法を紹介します。

P20 liteでEMUIがバージョン9.1である場合の設定方法ですので、端末やEMUIのバージョンが異なる場合はこのとおりではないかもしれません。

設定の仕方

設定画面で下の方にある「スマートアシスト」をタップ。

「スマートアシスト」の設定画面に変わるので、その中の「誤操作防止」をオフにする。

以上です。

PCのTerminal(端末)からScrapboxに新しいページを作るPythonスクリプト

PCのTerminal(端末)からScrapboxに新しいページを作るPythonスクリプトを作ったので、コードと使い方を書いておきます。


〈目次〉


機能

  • 新しく作るページのタイトルを入力できる。
    • タイトルを空白にすると、日付(YYYY/MM/DD)がタイトルになる。
    • タイトルを付けずにページを作ることもできる。
  • 本文を1行のみ入力できる。

必要なもの

  • Pythonスクリプトを実行できること。
  • ウェブブラウザが使えて、そのブラウザでScrapboxにログインしていること。

利用上の注意点

上掲のとおり、Scrapboxで作るページのタイトルと本文を入力できますが、パスワードや個人情報などの「他人に見られると困る情報」をそこに入力するのはおすすめしません。

設定の手順

下記のコードのYOUR_PROJECT_URLのところを、書き込みたいScrapboxのプロジェクトURL(https://scrapbox.io/○○○/の○○○の部分)に書き換え、ファイル名をscrapbox.pyなどのように拡張子を.pyとして保存。

import urllib.request
import webbrowser
import datetime

project_url='YOUR_PROJECT_URL'
today = datetime.datetime.today().strftime("%Y/%m/%d")  #年月日の区切り方を変えたり、月と日の「0埋め」が不要なときは、この行を書き換える。

title=input('title >>')
if title=='':
    title=today
else:
    title_encode=urllib.parse.quote(title)

content=input("content >>")
content_encode=urllib.parse.quote(content)

#本文の末尾に自動で付けたいハッシュタグなどがあればtag=''のクォーテーションの間に書く。
#改行が必要な箇所には\nと書く。
#パスワードや個人情報などの「他人に見られたくない情報」はここにも記入しないことを推奨します。
tag='\n'

tag_encode=urllib.parse.quote(tag)

url='https://scrapbox.io/' + project_url + '/' + title +'?body=' + content_encode + tag_encode
webbrowser.open(url)

使い方

Terminalにて、上掲のスクリプトを保存したフォルダに移動し、python scrapbox.pyと実行。
title >>と表示されるので、次のいずれかを入力します。

  • ページに任意のタイトルを付けたいときは、それを入力。
  • 日付をページのタイトルにしたいときは、ここには何も入力しない。
  • タイトルを付けずに(=タイトルを空白にして)ページを作りたいときは、newと入力。

そしてEnterキーを押すと、その下の行にcontent >>と表示されるので、ページの本文として書き込みたい内容を入力します。改行はできません。

f:id:ichbin:20190808134109p:plain
(タイトルに「hoge」、本文に「ほげほげ #test」と入力した例)

そしてEnterキーを押すと、ウェブブラウザが開かれ、ページが作成されます。

f:id:ichbin:20190808125213p:plain

f:id:ichbin:20190808125329p:plain
(日付をタイトルにした場合)

f:id:ichbin:20190820230425p:plain
(タイトルに「new」、本文に「ほげほげ」と入力した場合)

Tips

追記の機能について

このスクリプトhttps://scrapbox.io/プロジェクトURL/タイトル?body=本文という形式のURLをブラウザで開くことによってページの作成を行っているわけですが、このURLの「タイトル」の部分が既存のページタイトルと同一であれば、その既存のページの末尾に「本文」部分が追記されます。*1*2

例えば「hoge」というタイトルのページが既に存在しているときにhttps://scrapbox.io/プロジェクトURL/hoge?body=本文というURLを開く(すなわち、このスクリプトtitle >>のところにはhogeと書く)と、既存の「hoge」ページに追記されます。

f:id:ichbin:20190808130300p:plain
(「pukupuku」の部分が、追記されたもの)

日時のハッシュタグを自動で付ける

ページを作成したり追記した際に、それをした日/月/年のハッシュタグ(例:#2019/08/08, #2019/08, #2019 など)を自動で付けるようにしておくと、使いようによっては便利かもしれません。それができるようにしたコードもこちらに置いておきます。

import urllib.request
import webbrowser
import datetime

project_name='YOUR_PROJECT_URL'
today = datetime.datetime.today().strftime("%Y/%m/%d")  #当日の日付
month=datetime.datetime.today().strftime("%Y/%m")  #当月
year=datetime.datetime.today().strftime("%Y")  #当年

title=input('title >>')
if title=='':
    title=today
else:
    title_encode=urllib.parse.quote(title)

content=input("content >>")
content_encode=urllib.parse.quote(content)

#当日をハッシュタグとして末尾に書き込む(例:#2019/08/08)。
#当月または当年に変えたいときは、todayのところをmonthまたはyearに書き換える。
#当日・当月・当年を全て書きたければtag='\n#'+today+'\n#'+month+'\n#'+yearなどとする(\nで改行1回)。
tag='\n#'+today
tag_encode=urllib.parse.quote(tag)

url='https://scrapbox.io/' + project_url + '/' + title +'?body=' + content_encode + tag_encode
webbrowser.open(url)

f:id:ichbin:20190808134252p:plain
(当日のハッシュタグ付きの例)

*1:ただしページタイトルを「new」とした場合は例外で、追記はされず別々のページとなります。

*2:このあたりの仕様についてはScrapboxのヘルプに解説があります。

コマンドプロンプトから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:この文字列を、他人が読める状態にしてはいけません。ですので、この文字列を書き込んだファイルも、他人が読める状態にするべきではありません。