diff options
| author | Maria Lisina <sekoohaka.sarisan@gmail.com> | 2026-03-04 05:38:43 +0300 |
|---|---|---|
| committer | Maria Lisina <sekoohaka.sarisan@gmail.com> | 2026-03-04 05:38:43 +0300 |
| commit | dd830f7bd7ee8fb66eb0590dd6dedf2a73116b23 (patch) | |
| tree | db2075560cfbb79d65caf5070868eaf8564f9c3c | |
| parent | 3797551ce832b896dd31e67297cf7766f3cd3dab (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.zsh | 53 | ||||
| -rw-r--r-- | units/sn_search.zsh | 2 |
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 \ |
