@基素 2021
大きいので切り出した
s/現弾/現段階
ありがとうございます
s/保王的/法的
ありがとうございます
センターの倫理経済しかわかりませんが、全部年号ではなく出来事の順番を答えるよう出題されてますね
問題を作成してる大学教授陣も、多分流れを知っていることを重視しているのだと思います
良さそう
中学高校で歴史をやった時に年号を記憶しまくった覚えがあります
例
from 大学入試センター試験 平成31年度本試験 政治経済 p.89
s/過大/課題
ありがとうございます
すごい
pixiv開発者はこういう網の目をかいくぐることをされたくないと思うので、余り表に出さないほうがいいのかもしれませんが、ひとまず突破できることを示すコードを載せておきます
pixiv開発者の意図はセキュリティ目的だと思うので、多分保存対策は意図されていないと思います
なるほ。保存対策目的じゃなければ問題なさそうですね
右クリックで保存できますもんね
そう言えば「名前を付けて画像を保存」は普通にできてた
そもそも保存対策だったらEagleがアウトになる
Gyazoは画像保存時に再リクエストして、それがサーバー側のセキュリティ向けのレスポンスによってブラウザがブロックしてこけてる、みたいな感じでした
pixivへのGETがこけていた記憶があります
なるほど
pixiv以外もこのheaderをつけるようになったら問題が表面化しそう
と書いてたけど、適切なheaderをみると原因はrefererの設定が漏れることだ毛なのかな?
user.js// ==UserScript==
// @name pixiv-proxy
// @namespace https://www.pixiv.net
// @version 0.1.1
// @description pixivのデータ取得テスト
// @author takker
// @match https://www.pixiv.net/*
// @connect i.pximg.net
// @connect upload.gyazo.com
// @grant GM_xmlhttpRequest
// @license MIT
// @copyright Copyright (c) 2021 takker
// ==/UserScript==
"use strict"
function fetchImage(url) {
return new Promise((resolve, reject) => GM_xmlhttpRequest({
method: "GET",
url,
headers: { Referer: "https://www.pixiv.net" },
onload: ({response}) => resolve(response),
onerror: (e) => reject(e),
withCredentials: true,
responseType: 'blob',
}));
}
async function uploadToGyazo(image, {
accessToken,
title, // optional
refererURL, // optional
description, // optional
created, // optional
}) {
const formData = new FormData();
formData.append('imagedata', image);
formData.append('access_token', accessToken);
if (refererURL || location?.href) formData.append('referer_url', refererURL ?? location.href);
if (title) formData.append('title', title);
if (description) formData.append('desc', description);
if (created) formData.append('created_at', created);
const json = await new Promise((resolve, reject) => GM_xmlhttpRequest({
method: "POST",
url: "https://upload.gyazo.com/api/upload",
data: formData,
onload: ({response}) => resolve(response),
onerror: (e) => reject(e),
withCredentials: true,
responseType: "json",
}));
return json;
}
unsafeWindow.fetchImage = fetchImage;
unsafeWindow.uploadToGyazo = uploadToGyazo;
上記のコードをTamperMonkeyにinstallした後、開発コンソールで以下を実行して下さい
IMAGE_URL
: pixivから取得したいイラストのURL
i.pximg.net
で始まるURL
YOUR_ACCESS_TOKEN
: Gyazoのaccess token
js(async () => {
const blob = await fetchImage("IMAGE_URL");
const {permalink_url} = await uploadToGyazo(blob, {
accessToken: "YOUR_ACCESS_TOKEN",
});
window.open(permalink_url);
})();
TamperMonkeyの右クリックメニューでは無理でした
クリックした画像データを取得する方法が存在しない
web browser拡張機能として別途作るしかなさそうです
ありがとうございます
GyazoがGETで取り直してるのは、なにか理由があるのかな?
画像保存時の再リクエストのことでしたら、
<img>
タグから画像データを取り出す方法がないからでしょう
なるほど。取れないんですね
2022-01-22 09:52:48 できちゃった
すごい
YOUR_ACCESS_TOKEN
にGyazoのaccess tokenを入れてください
画像を右クリックすると、Gyazoに送信してURLをクリップボードに貼り付けます
pixiv-to-gyazo.js// ==UserScript==
// @name pixiv-to-gyazo
// @namespace https://www.pixiv.net
// @version 0.1.0
// @description pixivの画像をGyazoに送る
// @author takker
// @match https://www.pixiv.net/*
// @connect i.pximg.net
// @connect upload.gyazo.com
// @grant GM_xmlhttpRequest
// @license MIT
// @copyright Copyright (c) 2022 takker
// ==/UserScript==
const YOUR_ACCESS_TOKEN = "YOUR_ACCESS_TOKEN";
function fetchImage(url) {
return new Promise((resolve, reject) =>
GM_xmlhttpRequest({
method: "GET",
url,
headers: { Referer: "https://www.pixiv.net" },
onload: ({ response }) => resolve(response),
onerror: (e) => reject(e),
withCredentials: true,
responseType: "blob",
})
);
}
async function uploadToGyazo(image, {
accessToken,
title, // optional
refererURL, // optional
description, // optional
created, // optional
}) {
const formData = new FormData();
formData.append("imagedata", image);
formData.append("access_token", accessToken);
if (refererURL || location?.href) {
formData.append("referer_url", refererURL ?? location.href);
}
if (title) formData.append("title", title);
if (description) formData.append("desc", description);
if (created) formData.append("created_at", created);
const json = await new Promise((resolve, reject) =>
GM_xmlhttpRequest({
method: "POST",
url: "https://upload.gyazo.com/api/upload",
data: formData,
onload: ({ response }) => resolve(response),
onerror: (e) => reject(e),
withCredentials: true,
responseType: "json",
})
);
return json;
}
function makeMesageWindow(gyazoURL) {
const div = document.createElement("div");
div.style.display = "block";
div.style.boxSizing = "border-box";
div.style.position = "fixed";
div.style.top = "0";
div.style.right = "0";
div.style.zIndex = "2147483647";
div.style.backgroundColor = "#e8e8e8";
div.style.color = "#4d4d4d";
div.style.border = "1px solid #ccc";
div.style.borderTop = "none";
const text = document.createElement("div");
text.textContent = "Copied to Clipboard.";
const img = document.createElement("img");
img.src = `${gyazoURL.toString()}/max_size/1000`;
img.style.maxWidth = "20vw";
img.style.padding = "5px";
div.append(text);
div.append(img);
return div;
}
addEventListener("contextmenu", async (e) => {
const img = e.target;
if (!(img instanceof HTMLImageElement)) return;
const url = new URL(img.src);
if (url.hostname !== "i.pximg.net") return;
e.preventDefault();
e.stopPropagation();
const blob = await fetchImage(url.href);
try {
const { permalink_url } = await uploadToGyazo(blob, {
accessToken: YOUR_ACCESS_TOKEN,
title: document.title,
});
await navigator.clipboard.writeText(permalink_url);
const div = makeMesageWindow(permalink_url);
document.body.append(div);
setTimeout(() => div.remove(), 2000);
} catch(e) {
console.error(e);
alert(`Failed to get the image:\n${e.name} ${e.message}`);
}
});
アニメ的なデフォルメの話からはズレますが、↓の作例はかなり2Dに馴染んでいるなーと思いました
歪みは無いですがリグ入れ・レンダリングはかなり凝っていると思います
ありがとうございます
productionの事例ではないですが多分上のツイートを見てblender使いの方が揺らしてましたw
なんと!w
この出典、おそらく数学ガールシリーズからかなと思いました
数学ガール内だと《例示は理解の試金石》となっています
数学ガールでもあるのですが、もっと以前に数学書で見たんですよね。数学者が書いているテキストだったので意外におもったのをおぼえています
夜が多分誤字だと思うのですが、訂正方法がちょっとわからないです
「世」が正解でした
𝙩𝙝𝙖𝙣𝙠 𝙮𝙤𝙪...
どもです(え、なにこの字体。文字装飾記法じゃない?)
Unicodeであるらしいです。Twitterとかでたまにみます
s/焼失/消失
どもども
リンク切れです
ありがとうございます!差し替えました
web.archive.orgにもありました
「見てしまいました」→「わざわざ魚拓リンクをはってもらっていたのに気づかず、自分で見つけて差し替えてしまいました」という意味でした
あーなるほどw
「ブラウザ拡張で見つからなかったのでそのままにしていた」と誤読してました
蛇口の形状があわない(と思っている)んですよね
ありがとうございます!