I log …

KLWP♡Functionsメモ(AI~MI)

目次

  1. AI:天文情報
  2. BI:バッテリー情報
  3. BP:カバーアートの色抽出
  4. BR:変数受け取り
  5. CE:ARGB形式のカラーエディター
  6. CI:カレンダーイベント
  7. CM:カラーコード変換
  8. DF:日付のフォーマット
  9. DP:日付作成
  10. FD:運動データ
  11. FL:forループ制御
  12. GV:グローバル変数
  13. IF:条件分岐文
  14. LI:位置情報
  15. MI:音楽情報

【こちらは前サイトからの移植記事になります。】

 日々進化するKLWP。
 Functionsの個人的なメモ用記事。
 無駄にこだわって時間とかphpで再現できるのはphpで再現してます。位置情報だけはphpでとるのめんどくさかったので全部スカイツリーの値を例で入れてます。
 スマホから見るとちょっとわかりにくいかもしれないけど、式、説明、返される値、備考(蛇足)の順に書いてます。

【2017/7/7追記】FL追加しました【/追記終わり】
【2018/3/4追記】SI追加しました【/追記終わり】

AI:天文情報

説明 備考、返される値など
$df("hh:mma", ai(sunrise))$ 今日の日の出時刻をフォーマット通りに表示 06:52
$ai(sunrise)$だとタイムスタンプを表示
$df("hh:mma", ai(sunset))$ 今日の日没時刻をフォーマット通りに表示 16:30
$ai(sunset)$だとタイムスタンプを表示
$ai(isday)$ 日中の場合1、夜の場合0が返される $if(ai(isday)=1,"日中","夜")$というように条件分岐に使用する感じ。実際に使うなら日中と夜で壁紙変えたいときか。
$tf(ai(nsunrise))$ 次の日の出まで何時間か 今から6時間後
$ai(nsunrise)$とするとタイムスタンプ表示
$tf(ai(nsunset))$ 次の日没まで何時間か 今から15時間後
$ai(nsunset)$とするとタイムスタンプ表示
$ai(mphase)$ 現在の月相 満月、新月、三日月、下弦の月、上弦の月など
$ai(zodiac)$ 現在の星座 今日誕生日の人はこの星座!みたいな。
だいたい太陽と一緒にその星座が回るので夜はその星座見えないことが多い。
$ai(season)$ 現在の季節 春夏秋冬が返ってくるけど12月中旬に秋と表示されました。もしや1~3月が冬、4~6月が春、7~9月が夏、10~12月が秋となっているのかな。
$ai(mage)$ 現在の月齢 0~30
$ai(mill)$% 月の表面が何%照らされているか 0~100(単位:パーセント)
$df("hh:mma", ai(moonrise))$ 月の出時刻
$df("hh:mma", ai(moonset))$ 月の入り時刻
$df("hh:mma", ai(csunrise))$ 市民薄明 太陽がのぼる前に水平線から6°下の高さにある時刻
$df("hh:mma", ai(csunset))$ 市民薄暮 太陽が沈んで水平線から6°下の高さにある時刻
$df("hh:mma", ai(usunrise))$ 航海薄明 太陽がのぼる前水平線から6°~12°下の高さにある時刻
$df("hh:mma", ai(usunset))$ 航海薄暮 太陽が沈んで水平線から6°~12°下の高さにある時刻
$df("hh:mma", ai(asunrise))$ 天文薄明 太陽がのぼる前水平線から18°下の高さにあるまだ真っ暗な時刻
$df("hh:mma", ai(asunset))$ 天文薄暮 太陽が沈んで水平線から18°下の高さにある真っ暗になる時刻
$ai(mphasec)$ 現在の月相コード NEW, WAXING_CRESCENT, FIRST_QUARTER, WAXING_GIBBOUS, FULL, WANING_GIBBOUS, THIRD_QUARTER, WANING_CRESCENTが返される
$ai(zodiacc)$ 現在の星座コード ARIES, TAURUS, GEMINI, CANCER, LEO, VIRGO, LIBRA, SCORPIO, SAGITTARIUS, CAPRICORN, AQUARIUS, PISCESが返される
$ai(seasonc)$ 現在の季節コード SPRING, SUMMER, AUTUMN, WINTERが返される

BI:バッテリー情報

説明 備考、返される値など
$bi(level)$% バッテリー残量(%) 0~100
$bi(temp)$$wi(tempu)$ 地域別の単位でのバッテリー温度 $bi(temp)$が温度、 $wi(tempu)$が単位
$bi(tempc)$ 摂氏でのバッテリー温度 華氏は $bi(tempf)$かと思ったけどそうでもない
$bi(volt)$ バッテリー電圧 単位はミリボルト
$bi(source)$ 現在の電源 バッテリー、AC、USB、無線が返される
$df("hh:mma", bi(plugged))$ 最後にコンセントに挿した/抜いた時間 時間のフォーマットを指定できる
$bi(current)$ リアルタイムの充電・放電電流 単位はミリアンペア
Android 5.x以上が必要
$bi(charging)$ 充電中ならば1、充電していない場合は0を返す $if(bi(charging) = 0, "非充電中", "充電中")$など条件分岐に使う感じ
$if(bi(charging) = 0, "unplugged", "plugged")$ $tf(bi(plugged))$ コンセントが挿してあるかどうかと、最後にコンセントに挿した/抜いた時間(相対) unplugged/plugged ○分前という形になる
$df("hh:mma", bi(fullempty))$ バッテリーがフル充電される/ゼロになる予想時刻 時刻が返される
使うとしたら充電中のみ表示されるように
$if(bi(charging) = 1, df("hh:mm", bi(fullempty))+"に充電完了!")$かな~。
$if(bi(charging) = 0, discharged, charged)$ $tf(bi(fullempty))$ 充電しているかどうかと、フル充電/充電が切れるまでの時間 discharged/charged、フル充電/充電が切れるまでの時間
$if(bi(charging) = 0, Discharged, Full)$$if(bi(charging) = 0 | bi(level) < 100, " in " + tf(bi(fullempty) - dp()))$ 充電中かどうかと、バッテリーがフル充電される/ゼロになる予想時間(相対) 上とほぼ一緒だけど、バッテリーが100%の場合はFullとしか表示されない
$bi(level, r30m)$% 30分前のバッテリー残量 %は別につけないと表示されない
$bi(source, r1h)$ 1時間前の電源
$bi(temp, r2h)$$wi(tempu)$ 2時間前のバッテリー温度と単位 上のと見比べるとわかるけど、時間指定はr+数字+[m/h]の組み合わせなので
20分前はr20m、5時間前はr5hとなる

BP:カバーアートの色抽出

 この項目はアプリ内の説明だけでよさそうなので割愛。
 どういう風に画像解析しているのか考えるとアプリ開発に挑戦したくなってくるので早々に飛ばしますが、音楽と連動して色が変わるのは面白そう。

BR:変数受け取り

説明 備考、返される値など
$br(tasker, FOOBAR)$ taskerからの変数を表示 tasker側で%FOOBARをFOOBARと送るタスクが必要
$br(zooper, FOOBAR)$ zooperに送られた変数を表示 Zooperで#TFOOBAR#と入力して表示するものをこの式で表示可能

CE:ARGB形式のカラーエディター

例として出されている#ff0000は赤色です。
カバーアートから抽出した色をいじるのにちょうどいいかもしれない。

説明 備考、返される値など
$ce(#FF0000, invert)$ 指定した色の反転した色 #FF00FFFF(水色)
#0b0d81(紺色)を指定したとき、#f4f27e(明るい黄色)となります
$ce(#FF0000, comp)$ 指定した色の補色 #FF00FFFF(水色)
#0b0d81(紺色)を指定したとき、#817f0b(暗い黄色)となります
$ce(#FF0000, contrast)$ 指定した色の白か黒のコントラストが高い色 #FF000000(黒)
白か黒にしかならないっぽい
$ce(#FF0000, alpha, 50)$ 指定した色の50%の透明度の色を返す #7FFF000(透明度50%の赤)
数式で指定されている#ff0000は透明度を指定していないため、カラーコードの先頭に50%の透明度を示す7Fがつくことにより50%の透明度となる
ただし、数式の時点で透明度を指定していても無視される
$ce(#FF0000, sat, 0)$ 指定した色を0%の透明度となるグレースケールでの色を返す #FFFFFFFF(白)
濃い色でも明るい色は白になります
$ce(#FF0000, lum, 50)$ 指定した色の50%の暗さの色を返す #FF800000(暗い赤)
0~100まで、数字が大きいほど明るい。0だと大抵黒になる。
$ce(#FF0000, lum, a50)$ 指定した色に50%の明るさを足す #FFFF0000(赤)
0~100まで、数字が大きいほど明るい。赤は元々明るい色なので変化しないが、黒を指定したら灰色になる。
$ce(#FF0000, alpha, r50)$ 指定した色から透明度を引く #CDFF0000(透明度80%くらいの赤)
0~255まで設定可能って書いてあるけど、100までしか設定できない(2016/12/21現在)
パーセントでは設定不可能な256段階の透明度を設定できる予定だったのでは
透明度61%以下にしたい場合、rなしでパーセントで指定すべし
$ce(#FF0000, #0000FF, 50)$ 指定した2色を50%ずつ混ぜ合わせる #FF7F007f(紫)
ff0000赤と0000ff青を混ぜ合わせて紫
指定するパーセンテージにより1色目の色の量が決まるので、この場合0に近いほど青っぽい紫となる
なお、アプリ内の例文は混ぜる色がどっちも赤である

CI:カレンダーイベント

基本形 $ci(action, [index], [date], [calendar])$
ecount,acountアクション以外はindex引数必須。
date,calendar引数は必須じゃないので、あってもなくてもいい。
ややこしいので、アクション、インデックス、日にちについてそれぞれ別に説明してみた。

action引数

action 説明 備考、返される値など
$ci(start,[index],[date])$ 予定の開始時刻 これだけだとタイムスタンプを返すので $df(M/d hh:mm, ci(start, [index]))$など、時間のフォーマットを指定する必要がある
$ci(end,[index],[date])$ 予定の終了時刻 これだけだとタイムスタンプを返すので $df(M/d hh:mm, ci(end, [index]))$など、時間のフォーマットを指定する必要がある
$ci(title,[index],[date])$ 予定のタイトル
$ci(desc,[index],[date])$ 予定の説明
$ci(allday,[index],[date])$ 予定が終日の場合1、終日でない場合は0を返す dateを使って日付を指定していた場合、その日にそもそも予定がない場合は何も表示しない
$ci(loc,[index],[date])$ 予定の場所
$ci(ccolor,[index],[date])$ 予定のカレンダーの色
$ci(cname,[index],[date])$ 予定のカレンダーの名前
$ci(color,[index],[date])$ 予定の色
$ci(ecount,[date])$ 指定した日に何個終日でない予定があるか
$ci(acount,[date])$ 指定した日に何個終日の予定があるか
$ci(url,[index],[date])$ 予定のURL URLを開くときなどに使う
$ci(urld,[index],[date])$ 予定の時間にURLを開く 試してない

index引数

index 説明 備考、返される値など
$ci(action,0)$ 1個目の予定 0が1個目、1が2
個目、2が3個目…と続く
$ci(action,1,[date])$ 指定した日の2個目の予定 日にちを指定するとその日にち内で何個目の予定なのか数える
その日に2個目の予定がない場合は空欄になる
$ci(action,a0,[date])$ 終日の予定のうち、1個目の予定
$ci(action,e1,[date])$ 終日でない予定のうち、2個目の予定

date引数

date(予定を数える以外はindex必須) 説明 備考、返される値など
$ci(action,[index],a0d)$ 当日の予定に限定
$ci(action,[index],a1d)$ 翌日の予定に限定 同じように数字を増やしていくと先に日にちに限定できる
$ci(action,[index],r1d)$ 前日の予定に限定
$ci(action,[index],2017y1M)$
$ci(action,[index],a1M)$
翌月の予定 触った感じ翌月のみ指定できるのかも

CM:カラーコード変換

RGBの場合
$cm([透明度0~255], R=赤み0~255, G=0~255, B=青み0~255)$
HSVの場合
$cm([透明度0~255], H=色相0~360, S=彩度0~100, V=明度0~100, h)$
透明度は指定しない場合255(完全不透明)となる。
数式を入れることができるので色を変化できる

説明 備考、返される値など
$cm(128,255,0,0)$ RGB形式の透明度128、赤255、緑0、青0のカラーコードを返す #80FF0000(半透明の赤)
$cm(128,360,100,100,h)$ HSV形式の透明度128、色相360、彩度100、明度100のカラーコードを返す #80FF0000(半透明の赤)
$cm(255,df(ss)*6,100,100,h)$ 1秒ごとに色相が6ずつ増え次々色が変わる
$cm((100-bi(level))*2.55,255,0,0)$ バッテリーが減るごとに赤色がはっきりする

DF:日付のフォーマット

説明 備考、返される値など
$df(フォーマット)$ 現在の日時をフォーマット通りに表示する 組み合わせることもできる
途中に記号も使える
$df(フォーマット,日にち)$ 指定した日時をフォーマット通りに表示する 翌日の日付を表示したい場合は、 $df(d)+1$でもできるように感じるが、 $df(d,a1d)$にする
機能を組み合わせてタイムスタンプで日にち指定することもできる
$df(h m s)$ $df(hh mm ss)$ 時 分 秒を表示 0 32 48
それぞれ、アルファベットを重ねると一桁の数字の場合に先頭にゼロがつく
$df(a hh:mm)$ $df(A hh:mm)$ AM/PMを表示する AM 12:32
小文字のaの場合は設定で24時間表示にしている場合は表示されないが、大文字Aの場合はいつでも表示される
$df(k)$ $df(kk)$ 0~11、0~23で時間を表示 hとの違いは何だろう。
24時じゃなくて0時って表示したい人向け?
$df(M/d)$ $df(MM/dd)$ 数字の月日 12/27
二つ重ねると先頭にゼロをつける
$df(MMM)$ $df(MMMM)$ 数字じゃない月 DecもしくはDecember
日本語表記の場合は数字+月、英語の場合それぞれフルスペルと省略の月名
$df(E)$ $df(EEEE)$ 曜日 Friday
$df(D)$ $df(DDD)$ 1月1日から数えて何日目か 362
$df(e)$ 週の何日目か 設定で定めた週の始まりを1として1~7までの数字を返す
$df(f)$ 週の何日目か 5
月曜日を1として1~7までの数字を返す
$df(F)$ 何週目か 数字を返す
今日が第何週目の何曜日か表示する場合
たとえば1日が週の始まり以外の曜日の場合7日はカレンダーの2列目にあっても第一○曜日と言うけど、df(F)では2週目となってしまうので、 $if(df(f,1d)>df(f),df(FEEEE,r1w),df(FEEEE))$となる
$df(o)$ 現在の月は何日あるか 28,29,30,31のいずれかの数字を返す
$df(W)$ 現在の時間 アルファベットで返される
$df(z)$ $df(Z)$ タイムゾーン JSTもしくは+0900

DP:日付作成

説明 備考、返される値など
$dp(0h0m0s)$ 本日午前0時のタイムスタンプ
$dp(01M01d0h0m0sa1y)$ 来年元旦午前0時のタイムスタンプ

 タイムスタンプとは2024-12-27T00:32:48+09:00のような表示形式の1970年1月1日 00:00:00 GMTから数えている絶対時間のこと。
 時間の計算をする際に用いるので、TF機能などでカウントダウンするときなどにDP機能が大活躍するであろう。

FD:運動データ

 私使えないからアプリ内の例文以上のことわからない。割愛。歩数とか出ない。

FL:forループ制御

 指定した変数iが停止条件になるまで繰り返すというもの。当日始まりの週間カレンダーとか作りやすくなった? のかな? 曜日と数字ずれると思うけど!

説明 備考、返される値など
$fl(初期値,停止条件,変数増減,表示する式,[各要素の仕切り])$ 初期値、停止条件、変数増減、表示する式は必須。
各要素の仕切りは無くてもいい。要素の間だけに表示される。
変数増減、表示する式、各要素の仕切りは””で囲む。
$fl(1,10,"i+1","i"," ")$ 1から10までの数字を空白をあけて書き出す 1 2 3 4 5 6 7 8 9 10
$fl(1,10,"i+2","i"," ")$ 変数が増えていった結果、停止条件を満たさなかった場合は無限に増えていく。
そのため、この式の場合1 3 5 7 9と表示されるかと思いきや、延々と表示される。
1 3 5 7 9 11 13 15 17………
$fl(0,ci(ecount)-1,"i+1","df(M/d h:mm,ci(start,e+i))+ci(start,e+i)","")$ 全てのカレンダーイベントを表示 改行したかったら、各要素の仕切り内で改行する。

 他に使いどころ思いつかないなー。

GV:グローバル変数

説明 備考、返される値など
$gv(変数名)$ 指定した変数を返す
$gv(変数名,デフォルト)$ 指定した変数が見つからなかった場合デフォルトの値を返す
$gv(fgcolor, #FF0000)$ ‘fgcolor’という変数が見つからなかった場合、#ff0000を返す

IF:条件分岐文

説明 備考、返される値など
$if(条件文, [true])$
$if(条件文, [true], [false])$
数式の真偽により値が変わる
偽の場合に返すものを設定していない場合、何も表示されない
$if(条件文1, [true1], 条件文2, [true2], [false])$ 偽のところに次の条件を入れられる 条件2を満たすためには、条件1が偽である必要がある
$if(条件文1 & 条件文2, [true], [false])$ 条件文の組み合わせ(かつ) 条件1、条件2共に真の場合trueを返す
$if(条件文1 | 条件文2, [true], [false])$ 条件文の組み合わせ(または) 条件1、条件2のどちらかが真の場合trueを返す
$if((条件文1 | 条件文2) & 条件文3, [true], [false])$ 条件文の組み合わせ 条件1、条件2のどちらかが真で、更に条件3が真の場合trueを返す
$if(条件文1 | ( 条件文2 & 条件文3 ), [true], [false])$ 条件文の組み合わせ 上と似ているが、条件1か、条件2と3の両方が真の場合trueを返す
括弧を付ける位置で意味が大きく変わる

条件文いろいろ

説明 備考、返される値など
$if(bi(level)=100, [true])$ バッテリーが100%のとき真 等しいとき
$if(bi(level)!=100, [true])$ バッテリーが100%ではないとき真 等しくないとき
$if(df(f)>5, "Week End!", "Workday :(")$
$if(df(f)<6, "Workday :(","Week End!")$
$if(df(f)>=6, "Week End!", "Workday :(")$
$if(df(f)<=5, "Workday :(","Week End!")$
週末のみWeek End! Workday 🙁
より大きい、より小さい、以上、以下
4つの式は全部同じ結果になります
$if(ci(title,0) ~= "♡", "次の予定はデートだよ♡")$ 次の予定のタイトルに♡が入っているときのみ出現 含まれるかどうか
※必要な情報かわからないけど、実際に使っているのはデートではなく飲み会です

LI:位置情報

説明 備考、返される値など
$li(loc)$ 現在の地域 Hill Valleyなど市町村単位
$li(country)$ 現在の国 日本、Icelandなど
$li(ccode)$ 現在の国コード JP、USなど
$li(addr)$ 現在の住所 日本
アバウトな住所だな
$li(admin)$ 現在の都道府県 都道府県名
$li(postal)$ 現在の郵便番号 郵便番号(ハイフンつき)
$li(spd)$ Km/hまたはmphでの現在の速度 使えない場合は0
$li(spdm)$ m/sでの現在の速度 使えなければ0
何これ乗り物の速度でも測るのかな
$li(spdu)$ 速度の単位(Km/hかmph) kmh
$li(alt)$ 地域別単位での標高 数字が返される
$li(altm)$ メートルでの標高 数字が返される
$li(lat)$
$li(lplat)$
緯度 35.710063とか35.71とかlplatの方が精度が低い
$li(lon)$
$li(lplon)$
経度 139.8107とか139.81とかlplonの方が精度が低い

MI:音楽情報

説明 備考、返される値など
$mi(album)$ 現在のアルバム
$mi(artist)$ 現在のアーティスト
$mi(title)$ 現在のタイトル
$tf(mi(len), mm:ss)$ 現在の曲の長さ 指定したフォーマットで表示される
$tf(mi(pos), mm:ss)$ 現在の曲の位置 指定したフォーマットで表示される
$mi(len)$ 現在の曲の長さ 秒数で表示される
$mi(pos)$ 現在の曲の位置 秒数で表示される
$mi(vol)$ 現在の音量 0~100
$mi(percent)$ 現在の曲の位置 0~100(単位:%)
$mi(cover)$ 現在のカバーアート 画像指定の際に数式入力する
$mi(package)$ 現在の音楽プレイヤーのパッケージ
$ni(mi(package), bicon)$ 現在の音楽プレイヤーアプリのアイコン 画像指定の際に数式入力する
$mi(state)$ 現在のプレイヤーの状態を返す STOPPED, PAUSED, PLAYING, FORWARDING, REWINDING, SKIPPING_FORWARDS, SKIPPING_BACKWARDS, BUFFERING, ERROR, NONE
アイコンフォントの指定を数式で行うときとか
$if(mi(state)=PLAYING,Pause,Play_arrow)$