fix(ii): send configured User-Agent to Konachan requests (#3232)

This commit is contained in:
Minh
2026-05-24 23:51:29 +02:00
committed by GitHub
5 changed files with 25 additions and 11 deletions
@@ -16,9 +16,20 @@ Process {
return StringUtils.shellSingleQuoteEscape(FileUtils.trimFileProtocol(filePath)); return StringUtils.shellSingleQuoteEscape(FileUtils.trimFileProtocol(filePath));
} }
function processSourceUrl() {
return StringUtils.shellSingleQuoteEscape(sourceUrl);
}
function curlUserAgentArg() {
if (!downloadUserAgent) {
return "";
}
return ` -H 'User-Agent: ${StringUtils.shellSingleQuoteEscape(downloadUserAgent)}'`;
}
running: true running: true
command: ["bash", "-c", command: ["bash", "-c",
`mkdir -p $(dirname '${processFilePath()}'); [ -f '${processFilePath()}' ] || curl -sSL '${sourceUrl}' -o '${processFilePath()}' && file '${processFilePath()}'` `mkdir -p $(dirname '${processFilePath()}'); [ -f '${processFilePath()}' ] || curl -sSL '${processSourceUrl()}'${curlUserAgentArg()} -o '${processFilePath()}' && file '${processFilePath()}'`
] ]
stdout: StdioCollector { stdout: StdioCollector {
id: imageSizeOutputCollector id: imageSizeOutputCollector
@@ -172,8 +172,10 @@ Button {
onClicked: { onClicked: {
root.showActions = false; root.showActions = false;
const targetPath = root.imageData.is_nsfw ? root.nsfwPath : root.downloadPath; const targetPath = root.imageData.is_nsfw ? root.nsfwPath : root.downloadPath;
const userAgent = Config.options?.networking?.userAgent ?? ""
const userAgentHeader = userAgent ? ` -H 'User-Agent: ${StringUtils.shellSingleQuoteEscape(userAgent)}'` : ""
Quickshell.execDetached(["bash", "-c", Quickshell.execDetached(["bash", "-c",
`mkdir -p '${targetPath}' && curl '${root.imageData.file_url}' -o '${targetPath}/${root.fileName}' && notify-send '${Translation.tr("Download complete")}' '${root.downloadPath}/${root.fileName}' -a 'Shell'` `mkdir -p '${targetPath}' && curl '${StringUtils.shellSingleQuoteEscape(root.imageData.file_url)}'${userAgentHeader} -o '${targetPath}/${root.fileName}' && notify-send '${Translation.tr("Download complete")}' '${root.downloadPath}/${root.fileName}' -a 'Shell'`
]) ])
} }
} }
@@ -230,7 +230,7 @@ Rectangle {
rowHeight: imageRow.rowHeight rowHeight: imageRow.rowHeight
imageRadius: imageRow.modelData.images.length == 1 ? 50 : Appearance.rounding.normal imageRadius: imageRow.modelData.images.length == 1 ? 50 : Appearance.rounding.normal
// Download manually to reduce redundant requests or make sure downloading works // Download manually to reduce redundant requests or make sure downloading works
manualDownload: ["danbooru", "waifu.im", "t.alcy.cc"].includes(root.responseData.provider) manualDownload: ["danbooru", "waifu.im", "t.alcy.cc", "konachan"].includes(root.responseData.provider)
previewDownloadPath: root.previewDownloadPath previewDownloadPath: root.previewDownloadPath
downloadPath: root.downloadPath downloadPath: root.downloadPath
nsfwPath: root.nsfwPath nsfwPath: root.nsfwPath
@@ -29,14 +29,15 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
mkdir -p "$PICTURES_DIR/Wallpapers" mkdir -p "$PICTURES_DIR/Wallpapers"
page=$((1 + RANDOM % 1000)); page=$((1 + RANDOM % 1000));
response=$(curl "https://konachan.net/post.json?tags=rating%3Asafe&limit=1&page=$page") illogicalImpulseConfigPath="$HOME/.config/illogical-impulse/config.json"
userAgent=$(jq -r '.networking.userAgent // empty' "$illogicalImpulseConfigPath" 2>/dev/null)
response=$(curl -A "$userAgent" "https://konachan.net/post.json?tags=rating%3Asafe&limit=1&page=$page")
link=$(echo "$response" | jq '.[0].file_url' -r); link=$(echo "$response" | jq '.[0].file_url' -r);
ext=$(echo "$link" | awk -F. '{print $NF}') ext=$(echo "$link" | awk -F. '{print $NF}')
downloadPath="$PICTURES_DIR/Wallpapers/random_wallpaper.$ext" downloadPath="$PICTURES_DIR/Wallpapers/random_wallpaper.$ext"
illogicalImpulseConfigPath="$HOME/.config/illogical-impulse/config.json" currentWallpaperPath=$(jq -r '.background.wallpaperPath' "$illogicalImpulseConfigPath")
currentWallpaperPath=$(jq -r '.background.wallpaperPath' $illogicalImpulseConfigPath)
if [ "$downloadPath" == "$currentWallpaperPath" ]; then if [ "$downloadPath" == "$currentWallpaperPath" ]; then
downloadPath="$PICTURES_DIR/Wallpapers/random_wallpaper-1.$ext" downloadPath="$PICTURES_DIR/Wallpapers/random_wallpaper-1.$ext"
fi fi
curl "$link" -o "$downloadPath" curl -A "$userAgent" "$link" -o "$downloadPath"
"$SCRIPT_DIR/../switchwall.sh" --image "$downloadPath" "$SCRIPT_DIR/../switchwall.sh" --image "$downloadPath"
@@ -405,8 +405,8 @@ Singleton {
} }
try { try {
// Required for danbooru // Required for danbooru and konachan
if (currentProvider == "danbooru") { if (["danbooru", "konachan"].includes(currentProvider)) {
xhr.setRequestHeader("User-Agent", defaultUserAgent) xhr.setRequestHeader("User-Agent", defaultUserAgent)
} }
else if (currentProvider == "zerochan") { else if (currentProvider == "zerochan") {
@@ -457,8 +457,8 @@ Singleton {
} }
try { try {
// Required for danbooru // Required for danbooru and konachan
if (currentProvider == "danbooru") { if (["danbooru", "konachan"].includes(currentProvider)) {
xhr.setRequestHeader("User-Agent", defaultUserAgent) xhr.setRequestHeader("User-Agent", defaultUserAgent)
} }
xhr.send() xhr.send()