#!/bin/bash # # 井戸端閲覧支援スクリプト # copyright 2023 s.suto # CC-BY 4.0 # Linux での設定 WGET='/usr/bin/wget' JQ='/usr/bin/jq' # # 例えばMacならこうなる # WGET='/opt/homebrew/bin/wget' # JQ='/opt/homebrew/bin/jq' ProjectName="villagepump" Skip=4 Limit=100 cmdname=`basename $0` function usage() { echo "Usage: ${cmdname} [today|text|json|count|list|hamo]" 1>&2 echo "使い方" 1>&2 echo "ido" 1>&2 echo " usage と同じ" 1>&2 echo "ido usage" 1>&2 echo " 使い方を表示" 1>&2 echo "ido count" 1>&2 echo " ページ総数を表示" 1>&2 echo "ido list" 1>&2 echo " ページタイルのリストを表示" 1>&2 echo " 表示数はシェル変数 \$Limit で指定" 1>&2 echo "ido text [PageTitle [PageTitle...]]" 1>&2 echo " ページタイトル(PageTitle)を指定して、内容をテキスト形式で表示" 1>&2 echo " ページタイトルを指定しない場合は、直近に更新されたページをひとつ表示する" 1>&2 echo "ido json [PageTitle [PageTitle...]]" 1>&2 echo " ページタイトル(PageTitle)を指定して、json形式で表示" 1>&2 echo " ページタイトルを指定しない場合は、直近に更新されたページをひとつ表示する" 1>&2 echo "ido hamo" 1>&2 echo " ハモのページを表示" 1>&2 echo "ido today" 1>&2 echo " 今日の井戸端日記ページを表示" 1>&2 echo "ido project" 1>&2 echo " プロジェクト名(シェル変数 \$ProjectName )を表示" 1>&2 echo "ido skip" 1>&2 echo " スキップ数(シェル変数 \$Skip )を表示" 1>&2 echo " 通常は、ピン留めページ数を指定する" 1>&2 echo "ido limit" 1>&2 echo " リミット数(シェル変数 \$Limit )を表示" 1>&2 echo " 1000以上は指定しても 1000 になる" 1>&2 echo "ido wget" 1>&2 echo " wgetコマンドのパスを表示" 1>&2 echo "ido jq" 1>&2 echo " jqコマンドのパスを表示" 1>&2 exit 1 } # APIを叩いて、ページ総数を表示する function count() { $WGET -q -O - https://scrapbox.io/api/pages/$ProjectName\?limit=1 | $JQ -r '.count' exit 0 } # APIを叩いて、ページリストを表示する function list() { $WGET -q -O - https://scrapbox.io/api/pages/$ProjectName\?limit=$Limit\&skip=$Skip | $JQ -r '.pages[].title' exit 0 } # APIを叩いて、ページ内容を表示する function text() { if [[ $# -eq 0 ]]; then PageTitle=$($WGET -q -O - https://scrapbox.io/api/pages/$ProjectName\?limit=1\&skip=$Skip | $JQ -r '.pages[].title'| $JQ -Rr '@uri') $WGET -q -O - https://scrapbox.io/api/pages/$ProjectName/$PageTitle/text else for arg in $@ do PageTitle=$(echo $arg | $JQ -Rr '@uri') $WGET -q -O - https://scrapbox.io/api/pages/$ProjectName/$PageTitle/text done fi exit 0 } # APIを叩いて、ページ内容をJSONで表示する function json() { if [[ $# -eq 0 ]]; then PageTitle=$($WGET -q -O - https://scrapbox.io/api/pages/$ProjectName\?limit=1\&skip=$Skip | $JQ -r '.pages[].title'| $JQ -Rr '@uri') $WGET -q -O - https://scrapbox.io/api/pages/$ProjectName/$PageTitle | $JQ else for arg in $@ do PageTitle=$(echo $arg | $JQ -Rr '@uri') $WGET -q -O - https://scrapbox.io/api/pages/$ProjectName/$PageTitle | $JQ done fi exit 0 } subcommand="$1" shift case $subcommand in usage) usage ;; hamo) text ハモ ;; today) text $(date "+%Y/%m/%d") ;; text) text "$@" ;; json) json "$@" ;; count) count ;; list) list ;; project) echo "ProjectName: $ProjectName" ;; skip) echo "Skip: $Skip" ;; limit) echo "Limit: $Limit" ;; wget) echo "WGET: $WGET" $WGET --version ;; jq) echo "JQ: $JQ" $JQ --version ;; *) usage ;; esac exit 0 # EOF