aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaria Lisina <sekoohaka.sarisan@gmail.com>2026-03-04 05:38:43 +0300
committerMaria Lisina <sekoohaka.sarisan@gmail.com>2026-03-04 05:38:43 +0300
commitdd830f7bd7ee8fb66eb0590dd6dedf2a73116b23 (patch)
treedb2075560cfbb79d65caf5070868eaf8564f9c3c
parent3797551ce832b896dd31e67297cf7766f3cd3dab (diff)
operators/command_source: Add support for Pixiv and X (Twitter)
Signed-off-by: Maria Lisina <sekoohaka.sarisan@gmail.com>
-rw-r--r--operators/command_source.zsh53
-rw-r--r--units/sn_search.zsh2
2 files changed, 44 insertions, 11 deletions
diff --git a/operators/command_source.zsh b/operators/command_source.zsh
index 0c8e0fe..e22b6aa 100644
--- a/operators/command_source.zsh
+++ b/operators/command_source.zsh
@@ -38,7 +38,7 @@ then
return
fi
-source_table=(
+booru_table=(
danbooru_id d "Danbooru"
gelbooru_id g "Gelbooru"
idol_id i "Idol Complex"
@@ -47,6 +47,11 @@ source_table=(
yandere_id y "yande.re"
)
+external_table=(
+ pixiv_id "www.pixiv.net/artworks" "Pixiv"
+ tweet_id "x.com/i/status" "X (Twitter)"
+)
+
minimum_similarity="$(jq -r ".header.minimum_similarity" <<< "${sn_data}")"
for ((idx = 0; idx >= 0; idx++))
@@ -71,6 +76,8 @@ then
return
fi
+index_name="$(jq -r ".results.[${highest_index}].header.index_name" <<< "${sn_data}")"
+
thumbnail="$(jq -r ".results.[${highest_index}].header.thumbnail" <<< "${sn_data}")"
link_preview_options="$(
jq --null-input --compact-output \
@@ -78,22 +85,20 @@ link_preview_options="$(
'{"url": $url, "prefer_small_media": true, "show_above_text": true}'
)"
-index_name="$(jq -r ".results.[${highest_index}].header.index_name" <<< "${sn_data}")"
-index_md5="$(cut -d '_' -f 1 <<< "${index_name##* }")"
-
output_text="$(printf "<b>SauceNAO</b>\n<b>Similarity:</b> %.2f%%" "${highest_similarity}")"
-output_text="$(printf "%s\n<b>MD5:</b> <code>%s</code>" "${output_text}" "${index_md5}")"
-while [[ ${#source_table} -ge 3 ]]
+while [[ ${#booru_table} -ge 3 ]]
do
- if ! jq -e ".results.[${highest_index}].data|has(\"${source_table[1]}\")" <<< "${sn_data}" > /dev/null
+ if ! jq -e ".results.[${highest_index}].data|has(\"${booru_table[1]}\")" <<< "${sn_data}" > /dev/null
then
- shift 3 source_table
+ shift 3 booru_table
continue
fi
- keyboard_text1="${source_table[3]}"
- keyboard_query1="post ${source_table[2]} ${index_md5}"
+ index_md5="$(cut -d '_' -f 1 <<< "${index_name##* }")"
+
+ keyboard_text1="${booru_table[3]}"
+ keyboard_query1="post ${booru_table[2]} ${index_md5}"
reply_markup="$(
jq --compact-output \
@@ -105,5 +110,31 @@ do
)"
keyboard_offset=$((keyboard_offset + 0.5))
- shift 3 source_table
+ shift 3 booru_table
+done
+
+while [[ ${#external_table} -ge 3 ]]
+do
+ source_id="$(jq -r ".results.[${highest_index}].data.${external_table[1]}" <<< "${sn_data}")"
+
+ if [[ "${source_id}" == "null" ]]
+ then
+ shift 3 external_table
+ continue
+ fi
+
+ keyboard_text1="${external_table[3]}"
+ keyboard_url1="${external_table[2]}/${source_id}"
+
+ reply_markup="$(
+ jq --compact-output \
+ --argjson offset "$(printf "%u" "${keyboard_offset}")" \
+ --arg text1 "${keyboard_text1}" \
+ --arg url1 "${keyboard_url1}" \
+ '.inline_keyboard[$offset] += [{"text": $text1, "url": $url1}]' \
+ <<< "${reply_markup:-"{}"}"
+ )"
+
+ keyboard_offset=$((keyboard_offset + 0.5))
+ shift 3 external_table
done
diff --git a/units/sn_search.zsh b/units/sn_search.zsh
index 892cfa6..e692b66 100644
--- a/units/sn_search.zsh
+++ b/units/sn_search.zsh
@@ -6,12 +6,14 @@ if ! sn_data="$(
curl --connect-timeout ${connrefused_timeout} \
--form "output_type=2" \
--form "api_key=${sn_key}" \
+ --form "dbs[]=5" \
--form "dbs[]=9" \
--form "dbs[]=12" \
--form "dbs[]=25" \
--form "dbs[]=26" \
--form "dbs[]=27" \
--form "dbs[]=30" \
+ --form "dbs[]=41" \
--form "dedupe=2" \
--form "${sn_query}" \
--get \