ジンフォ(dojinfo.com)にISDNから入力できるようにするブックマークレット
一方で、同人作品の情報を登録し番号を発行できる国際標準同人誌番号(ISDN, https://isdn.jp/ )という取り組みも存在する。筆者の所属するサークルではISDNを以前から使っていたため、ISDNから情報を取り込めると二度手間を避けることができ便利である。 両者の登録可能な情報には差異があるためそのままとはいかないが、ISDNが提供するXMLデータをパースして入力欄に入れてくれるブックマークレットを作成した。 使い方
1. 下の「コード」をURL欄に入れたブックマークを作成
https://gyazo.com/599ff26a5c7ea2b4f090a5ddbcf46a78
3. ジンフォの同人誌追加画面を開いてブックマークをクリック
4. 「XMLデータを貼り付けてください」という入力欄が出るので、XMLデータを貼り付ける
5. タイトル、説明文(差し替え推奨)、発行日、ページ数、会場頒布価格が入力される
https://gyazo.com/d89d83bbec269b954f65a59e26e3c8d8
現状の制限
XMLデータを事前にコピーしておく必要がある。これは、ISDNのURLに対してfetchをしようとしてもCORSエラーで止められるため。Chrome拡張機能とかにすれば回避できるのかもしれない
select要素が絡む部分(年齢指定、サイズ)に入力できない。いくつか方法を試したが表示が変わらなかったため……
コード
code:js
javascript:(function() {
try {
const xmlString = prompt("XMLデータを貼り付けてください:");
if (!xmlString) throw new Error("XMLデータが入力されていません。");
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xmlString, "application/xml");
const item = xmlDoc.querySelector("item");
if (!item) throw new Error("データが見つかりませんでした。");
document.querySelector("name='title'").value = item.querySelector("product-name").textContent; document.querySelector("name='body'").value = ${item.querySelector("publisher-name").textContent}の${item.querySelector("contents").textContent}に関する${item.querySelector("type").textContent}。; const date = new Date(item.querySelector("issue-date").textContent);
if (!isNaN(date)) document.querySelector("name='publishedAt'").value = date.toISOString().split('T')0.replaceAll('-','/'); document.querySelector("name='pageCount'").value = item.querySelector("product-capacity").textContent; document.querySelector("name='price'").value = item.querySelector("price").textContent; } catch (error) {alert("エラーが発生しました: " + error.message);}
})();