はてなブログの記事を一括で非公開にする方法(AtomPub API)

はてなブログの記事を別サイトに移行した後、旧記事を一括で非公開にしたいケースがあります。 注意点:下書きには戻せない はてなブログのAtomPub APIでは、公開済みの記事を下書き(draft)に戻すことはできません。PUTリクエストで <app:draft>yes</app:draft> を送ると 400 Cannot Change into Draft エラーになります。 そのため、以下の2つの方法があります。 方法1:記事本文を「移転しました」に書き換える AtomPub APIのPUTで記事の <content> を書き換えることは可能です。 import requests import xml.etree.ElementTree as ET import time HATENA_ID = "your_hatena_id" BLOG_ID = "your_blog_id.hatenablog.com" API_KEY = "your_api_key" NEW_SITE_URL = "https://your-new-site.com" ATOM_NS = "http://www.w3.org/2005/Atom" def fetch_all_entries(): entries = [] url = f"https://blog.hatena.ne.jp/{HATENA_ID}/{BLOG_ID}/atom/entry" while url: resp = requests.get(url, auth=(HATENA_ID, API_KEY), timeout=30) resp.raise_for_status() root = ET.fromstring(resp.text) for entry in root.findall(f"{{{ATOM_NS}}}entry"): title_el = entry.find(f"{{{ATOM_NS}}}title") title = title_el.text or "" if title_el is not None else "" edit_link = entry.find(f"{{{ATOM_NS}}}link[@rel='edit']") edit_url = edit_link.get("href") if edit_link is not None else None if edit_url: entries.append({"title": title, "edit_url": edit_url}) next_el = root.find(f"{{{ATOM_NS}}}link[@rel='next']") url = next_el.get("href") if next_el is not None else None return entries def replace_content(entry): title = entry["title"] update_xml = f"""<?xml version="1.0" encoding="utf-8"?> <entry xmlns="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app"> <title>{title}</title> <content type="text/plain">この記事は {NEW_SITE_URL} に移転しました。</content> </entry>""" resp = requests.put( entry["edit_url"], auth=(HATENA_ID, API_KEY), data=update_xml.encode("utf-8"), headers={"Content-Type": "application/atom+xml; charset=utf-8"}, timeout=30, ) return resp.status_code entries = fetch_all_entries() print(f"Found {len(entries)} entries") for i, e in enumerate(entries): status = replace_content(e) print(f"[{i+1}/{len(entries)}] {status}: {e['title'][:50]}") time.sleep(0.5) 方法2:はてなブログの管理画面から一括削除 記事数が少なければ、管理画面の「記事の管理」から手動で削除する方法もあります。ただし一括選択機能がないため、大量の記事には向きません。 ...

2026年3月1日 · 1 分 · Nakamura

Hypothes.is APIでWebアノテーションをエクスポートしてTEI/XMLに変換する

はじめに Hypothes.isは、Webページ上にハイライトやコメントを付けられるオープンソースのアノテーションツールです。ブラウザ拡張やJavaScriptの埋め込みで手軽に使えますが、蓄積したアノテーションをバックアップしたい、あるいはTEI/XMLなど別の形式で活用したいケースもあります。 本記事では、Hypothes.is APIを使ってアノテーションをエクスポートし、TEI/XMLに変換する方法を紹介します。 APIキーの取得 Hypothes.isにログイン Developer settings にアクセス 「Generate your API token」でAPIキーを生成 取得したキーを.envファイルに保存します。 c # p . . e e n n v v . を e 編 x 集 a し m て p A l P e I キ . ー e を n 設 v 定 H Y P O T H E S I S _ A P I _ K E Y = x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x アノテーションのエクスポート APIの基本 Hypothes.is APIのベースURLは https://api.hypothes.is/api です。認証はAuthorization: Bearer <API_KEY>ヘッダーで行います。 ...

2026年2月28日 · 14 分 · Nakamura

GakuNin RDM APIをNode.jsで操作する — プロジェクト作成からGitHub+Vercel自動デプロイまで

はじめに GakuNin RDMは、国立情報学研究所(NII)が提供する研究データ管理プラットフォームです。Open Science Framework(OSF)をベースに構築されており、APIを通じてプロジェクトの操作を自動化できます。 本記事では、Node.jsからGakuNin RDM APIを使って以下の操作を行う方法を紹介します。 プロジェクトの作成・設定 Wikiの作成・更新 メンバーの追加 GitHub連携 + Vercelによる自動デプロイ 事前準備 パーソナルアクセストークンの取得 GakuNin RDMにログイン 設定 > パーソナルアクセストークンに移動 新しいトークンを作成(スコープ:osf.full_read、osf.full_write) プロジェクトの初期化 m n n k p p d m m i r i i n n r i s d t t m a - l & y l & d c o d t e r n d v m .envファイルにトークンを保存します。 ...

2026年2月27日 · 12 分 · Nakamura

GakuNin RDM Search API (`/api/v1/search/`) 調査メモ

調査日 : 2026-02-24 対象 : GakuNin RDM (GRDM) の Search API ソースコード : RCOSDP/RDM-osf.io(website/search/ ディレクトリ) 開発者ガイド : RCOSDP/RDM-developer-guide 注意 : Search API の公式ドキュメントは確認できませんでした。本稿は API の実際の挙動とソースコードの両方に基づく調査記録です。 概要 GakuNin RDM は OSF (Open Science Framework) のフォークであり、ソースコードは GitHub (RCOSDP/RDM-osf.io) で公開されています。検索機能の実装は website/search/ ディレクトリにあり、主に以下のファイルで構成されています。 ファイル 役割 elastic_search.py インデックスのマッピング定義、ドキュメントの登録・更新 views.py API エンドポイントのハンドラ util.py build_private_search_query() 等のクエリ構築 search.py 上位インターフェース P A O u S t T h o h r t i t z p a s t : i / n r : d m B . e n a i r i e . r a c < . パ j ー p ソ / ナ a ル p ア i ク / セ v ス 1 ト / ー s ク e ン a > r c h / 日本語環境では Elasticsearch の kuromoji_analyzer が使用されています(ソースコードで確認)。 ...

2026年2月24日 · 5 分 · Nakamura

AlfrescoをDockerで起動し、REST APIでレコード管理のライフサイクルを体験する

概要 本記事では、Alfresco Governance Services Community Edition(以下AGS)の最新版(25.3.0)をDockerで起動し、REST APIを使ってレコード管理の一連のライフサイクルを体験します。 具体的には、以下の業務シナリオを想定します。 シナリオ: 契約書管理 業務部門が契約書を作成・登録する レコード管理者がレコードとして宣言し、ファイルプランに分類する 保持スケジュール(Retention Schedule)を設定する 契約終了後、カットオフ(現用→非現用)を実行する 保持期間(3年)の経過後、廃棄する 訴訟対応が発生した場合、ホールド(凍結)により廃棄を停止する 以下の前回の記事をベースに、最新版での構築手順とAPIの使い方を紹介します。 環境 acs-deployment: v10.2.0(2026年2月リリース) Alfresco Governance Repository Community: 25.3.0 Alfresco Governance Share Community: 25.3.0 Alfresco Search Services: 2.0.17 Traefik: 3.6 PostgreSQL: 16.5 セットアップ リポジトリのクローン g c g c i d i d t t a d c c c o l s h c o - e k n d c e e e k r p o - h l u c t o t o t y m p m v p s e 1 o : n 0 s / t . e / 2 g . i 0 t h u b . c o m / A l f r e s c o / a c s - d e p l o y m e n t compose fileの作成 community-compose.yamlをベースに、Governance Services用のcompose fileを作成します。変更点は以下の3つです。 ...

2026年2月15日 · 252 分 · Nakamura

KAKEN OpenSearch API の使い方

科研費データベース(KAKEN)の情報をプログラムから取得する方法を解説します。 1. はじめに KAKENは、国立情報学研究所(NII)が提供する科学研究費助成事業データベースです。OpenSearch APIを利用することで、研究課題の情報をプログラムから取得できます。 2. 事前準備:アプリケーションIDの取得 KAKEN APIを利用するには、CiNiiでアプリケーションIDを取得する必要があります。 CiNii API利用登録にアクセス 必要事項を入力して登録申請 承認後、メールでApplication ID(appid)が届く 注意 : 登録から承認まで時間がかかる場合があります。 3. APIエンドポイント 研究課題をさがす h t t p s : / / k a k e n . n i i . a c . j p / o p e n s e a r c h / 研究者をさがす h t t p s : / / n r i d . n i i . a c . j p / o p e n s e a r c h / 4. 主要パラメータ(研究課題をさがす) パラメータ 説明 必須 例 appid アプリケーションID ○ 82RKpPlZiIjbqKwFDO3D qb 研究課題番号で検索 △ 19K20626 kw フリーワード検索 △ IIIF qa 研究課題名で検索 △ デジタルアーカイブ qg 研究者の姓名で検索 △ 中村覚 qm 研究者番号で検索 △ 80802743 format レスポンス形式 - xml(デフォルト: html5) rw 1ページの件数 - 20, 50, 100, 200, 500 lang 言語 - ja, en △: いずれか1つ以上が必要 ...

2026年2月5日 · 15 分 · Nakamura

校異源氏物語テキストDBに対する検索を行うAPIサーバの構築

概要 校異源氏物語テキストDBに対する検索を行うAPIサーバの構築したので、備忘録です。 https://genji-api.aws.ldas.jp/ 背景 以下のページで、『校異源氏物語』のテキストデータをTEI/XMLに準拠した形で公開しています。 https://kouigenjimonogatari.github.io/ このテキストデータをElasticsearchに登録し、コマごとの検索を可能にするAPIを作成します。 使い方 以下のURLで、OpenAPIおよびSwaggerを用いた使い方の説明ページにアクセスできます。 https://genji-api.aws.ldas.jp/ 工夫点 検索語の展開 例えば以下のURLは、「夕顔」を検索キーワードとした例です。JSON:APIに準拠した入出力形式としています。 https://genji-api.aws.ldas.jp/search?q=夕顔&page[limit]=20&page[offset]=0&sort=page&filter[expandRepeatMarks]=true&filter[unifyKanjiKana]=true&filter[unifyHistoricalKana]=true&filter[unifyPhoneticChanges]=true&filter[unifyDakuon]=true&filter[vol_str]=04 夕顔 この時、以下のような結果が返却されます。入力したキーワード「夕顔」に対して、バリエーションを生成し、これらに基づく検索を行います。 { } " " } d m a e " " ] " } " } " " " " " } t t q t , t , f , s l o t a a a u r " " " " " " " " " r " " " " " i " " " " " " o i f o g " } " " e a 夕 ゆ ゆ ゆ ゆ 夕 夕 ゆ ゆ a e u u u u l e u u u u v r m f t g v : : r n 顔 う ふ ふ う か か う ふ n x n n n n t x n n n n o t i s a r o " " " ] y s " か か か か お ほ 顔 顔 s p i i i i e p i i i i l " t e l e l d s b [ { " f , お お ほ ほ " " " " f a f f f f r a f f f f _ : " t " g _ o u u { } ] : o " " " " , , , o n y y y y s n y y y y s : " : a s c m c , r , , , , r d K H P D " d K H P D t " : t t _ _ k " " " m m R a i h a : R a i h a r p 2 7 i r c o e k d 夕 e O e n s o k e n s o k " a 0 0 , o " o t t e o 顔 d p p j t n u { p j t n u : g , , n : u h s y c " Q t e i o e o e i o e o e s n e " " _ , u i a K r t n a K r t n " " " { t r : : c e o t a i i " t a i i " 0 , : _ _ o r n M n c c : M n c c : 4 e d [ " u i s a a a C a a a C { r o 0 n e " r " l h t r " l h t 夕 r c 4 t s : k : K a r k : K a r 顔 o _ " " s a n u s a n u " r c 夕 : : { " t n g e " t n g e _ o 顔 : r a e : r a e , u u " 7 [ u " s u " s p n , t e : " t e : " p t r , : r , : e " u t u t r : e r t e r t _ , u r , u r b 0 e u e u o , , e , e u , , n d " : 0 , その結果、本文中に登場する「ゆふかほ」「夕かほ」「夕顔」を一度に検索することができます。 ...

2025年6月25日 · 23 分 · Nakamura

DrupalのJSON:APIでcreatedやchangedに対するフィルタを適用する

概要 DrupalのJSON:APIでcreatedやchangedに対するフィルタを適用する方法の備忘録です。 背景 以下を参考にしました。 https://www.drupal.org/docs/core-modules-and-themes/core-modules/jsonapi-module/filtering 例えば、6/2以降に更新されたものだけをフィルタリングしようとした際、以下のクエリでは適切に動作しませんでした。 ?filter[a-label][condition][path]=changed&filter[a-label][condition][operator]=%3E%3D&filter[a-label][condition][value]=2025-06-02 正しい方法 以下の記事が参考になりました。 https://www.reddit.com/r/drupal/comments/1bdvu61/json_api_drupal_filter_on_date/ Note that timestamp fields (like created or changed) currently must use a timestamp for filtering: タイムスタンプフィールド(createdやchangedなど)は現在、フィルタリングにタイムスタンプを使用する必要があります。 例えば、2025/6/2のタイムスタンプ1748790000を用いて、以下のようなクエリを使用することで、正しくフィルタリングできました。 ?filter[a-label][condition][path]=changed&filter[a-label][condition][operator]=%3E%3D&filter[a-label][condition][value]=1748790000 まとめ DrupalのJSON:APIで、createdやchangedに対するフィルタを適用する際にお役に立てば幸いです。

2025年6月3日 · 1 分 · Nakamura

DTS (Distributed Text Services)のビューア開発

概要 DTS (Distributed Text Services)のビューアを開発したので、備忘録です。 以下のURLからお試しいただけます。 https://dts-viewer.vercel.app/ja/ 背景 DTS (Distributed Text Services)の公式ページは以下です。 https://distributed-text-services.github.io/specifications/ 以下の記事でも取り上げました。 今回、このDTS仕様に一部準拠したビューアを開発しました。 使い方 以下がトップページです。フォームにDTSのURLを入力します。ページ下部で例を提供します。技術的には、Entry pointを使用しています。 コレクションの一覧ページです。Collection Endpointを使用しています。 以下のAPIを例としています。 リンクをたどると、以下のようなリソースの一覧ページに遷移します。 ダウンロードボタンを押すと、TEI/XMLが表示されます。Document Endpointを使用しています。 ナビゲーションボタンを押すと、アクセス可能な部分テキストの一覧が表示されます。Navigation Endpointを使用していますが、現時点で複数階層には非対応です。 リンクをクリックすると、以下のような部分テキストをダウンロードすることができます。 工夫点 公式ページに以下のように記載されています。 The DTS Specification is currently in a public comment period following the 1-alpha release (機械翻訳)DTS仕様は、1-alphaリリースの後、現在パブリックコメント期間中です。 このような背景のため、既存のDTSの記述方法にばらつきがありました。そこで内部でできるだけDTS API (1.0 Draft)に変換し、その結果を可視化するようにしています。 DTS仕様が成熟するにつれ、このような問題は解決されるかと思います。 まとめ DTS仕様は以下のように説明されています。 The Distributed Text Services (DTS) Specification defines an API for working with collections of text as machine-actionable data. ...

2025年5月11日 · 1 分 · Nakamura

GakuNin RDMのAPIを用いて、連携したストレージのファイルを検索する

概要 以下の記事で、GakuNin RDMのAPIを用いたアプリケーション構築について紹介しました。 本記事では、GakuNin RDMのAPIを用いて、連携したストレージのファイルを検索する方法を紹介します。 実装例 次のような形で、検索APIを実装しました。なお、https://rdm.nii.ac.jp/api/v1/search/file/にクライアントから直接アクセスした際には、CORSによるエラーが発生したため、Next.jsのAPI Routesとして実装しています。 i i i e } m m m x p p p p c c c c c c c c } c } c r o o o o o o o o o o o o ; o ) o e r r r r n n n n n n n n a s h e } n m h } b ; n t t t t t s U s s s s s s s p o i l , s e e , o s u t R t t t t t t t i r g a q } f s t t a " A d t r { { { a L _ t h s u , r i h d C u y n s s か u q o s a a p v : l t e f } o z r o e o t : d N a g y e ら r u f i c p a e i i r i , m e e d r n h a N e u e n s ク l e f z c i r r " g c y l q } : , s : s t o J t e x t t c s エ r s e e U a s c h s : t u , : e r S a x t h S i リ = y e s r m i r t e e e q } o = " n i O t R O e f o パ t = s l s o e : a { r r u , f P { t z N = R e p r u n ラ n = T n a r e y e d f ] q a l f a O - a . e s t v n メ e = p o = = : t " c d : r e i , u n e s w S T t s a s p i e c = ー w u a k e t h : y f e " " " " " " " e a n e a T y i t w p o o r t タ r p r e " { { d i _ { _ a l _ t d j s a a r l i t i " p o r a o n n S i a を U l a s n h _ t d { s u d a i e o c l l y y e , t , e n i i n s s e o w 取 R . r e t v d l s t l s l t s b h l l , z n " : n t s e s n a 得 L s s I = t e e e l r t : l l c ^ o _ _ e t f : g e } s i ( e e n p n s : : i _ " e r 1 o j s _ : e ` i r . } i G t r a I t s s d c 3 n f [ , ^ i " l o c w t " B f e j f o E e r n ( e : o " 0 { g i 4 p , ^ b h i t c a e y s s f r n T g q c t u s / r , , : e " t 1 s o l r h p a ( . o r o ( e . h ( r s / : n l , i " ^ o d u ( p r p j n o m } r t u P u l i r a { d o , 0 l c e a l e a s ( m e S r a r . o d " m : n . s a , p i r r o d " f q e l r l s n m g e ^ 1 ^ r i c a n a " @ r : r ) a . e ? . r : " 1 2 0 d U a $ m ( t n / o v ; m s a . n d 3 _ . 5 . : r t { s ) a e a m R e s e r a i m 0 a 2 " 1 l i a ) ; ) x p e r . a c c i " , l " , 2 t , o c , ; t p " q S g r h c . , u l , 5 r n c / / n u e e c P e a s " " u { / e s a e e s t h a s c v e , , e j s e p x s s ( P r s . e r , s s r i t t i " a a T j r : o T v / - ) o f r m o p s 3 n o e a a n i a s k / i 0 " k r u u { ( l m . e a o , , e " t t a t s g n p n t n ; h h u e . e ; i : e } / " t r g t / x ` [ ; h [ e ( v 2 t , . O f t " 1 : . p u ( p / } 1 . t l " a s , 2 n i l p g e 4 e o t a e a , x n e g [ r c t s x e l c o a ) t [ i h m u ; ] o m / m t " f i f e h ) f t i n ] s ] l t / e " e s a t ) / . u ] " * t " " ; : h " 1 O ; 2 p " 4 t 2 " i 0 , o " " n 0 , s " " , 1 ; 0 1 ) 0 ; ) ; 利用例 以下のURLからお試しいただけます。(利用にあたっては、GakuNin RDMへのログインが必要です。) ...

2025年3月21日 · 11 分 · Nakamura

GakuNin RDM(OSF)のAPIで、フィルタを使う

概要 GakuNin RDM(OSF)のAPIで、フィルタを使う方法の備忘録です。 対象データ 以下のようなファイル構造を持つ「NII Storage」を対象にします。 APIでは、以下のようなURLでアクセスできるものを対象にします。 https://api.rdm.nii.ac.jp/v2/nodes/wzv9g/files/osfstorage/ JSONデータの例は以下です。 { } " ] " } d { } { } { } , l " " " " " } a " " " } " } " } , " " " } " } " } , " " " } " } " } i f l p n m " " t i t a " " " " " " " " " " " " } " " " , r " } " } " } " } " } " } , l " " " " " " " " i t a " " " " " " " " " " " " } " " " , r " } " } " } " } " } " } , l " " " " " " " " i t a " " " " " " " " " " " " } " " " , r " } " } " } " } , l " " " " " " n i a r e e t p a d y t g c n k p s p m l d d e " } " , t c c e p " } " } , v " } , c " } , m " } , n " } " } , t " } " } i i m u d d r h s d y t g c n k p s p m l d d e " } " , t c c e p " } " } , v " } , c " } , m " } , n " } " } , t " } " } i i m u d d r h s d y t g c n k p s p m l d d e " } , t c c e p " } " } , f " } , n " } " } , t " } " } i i m u d n s k r s e x t o e " " p t u h a i a i r a a a a x h " " , d a u u l a l " } , d " " e l " } o l " } e l " } o l " } , d " " a l " } , d " " n n o p e o e t e " p t u h a i a i r a a a a x h " " , d a u u l a l " } , d " " e l " } o l " } e l " } o l " } , d " " a l " } , d " " n n o p e o e t e " p t u h a i a i r a a a a x h " " a u u l a l " } , d " " i l " } o l " } , d " " a l " } , d " " n n o p e e e s s t v t a t r : : e r i e m n t z o t s t t t a m s o g r r a r i r " " a i t r i r " " m i r " " t i r " " d i r " " a i t r i r " " } a t i k f v l l w n m l : e r i e m n t z o t s t t t a m s o g r r a r i r " " a i t r i r " " m i r " " t i r " " d i r " " a i t r i r " " } a t i k f v l l w n m l : e r i e m n t z o t s t t t a m s g r r a r i r " " a i t l i r " " d i r " " a i t r i r " " } a t i k f v l l w l " t " " " " a _ " i d c e d h e v e t e e r s d h w s r r t e n e h m t d y s n e h m m n e h m a n e h m e n e h m t d y g n e h m " t y d s o e o e n d l f " i d c e d h e v e t e e r s d h w s r r t e n e h m t d y s n e h m m n e h m a n e h m e n e h m t d y g n e h m " t y d s o e o e n d l f " i d c e d h e v e t e e r s d h s r r t e n e h m t d y e n e h m e n e h m t d y g n e h m " t y d s o e o e _ f : " : : : : l p [ " : b " k " " " " i r _ _ _ a h 5 a n " e e i n k l r e a " p i k l r e e k l r e d k l r e " k l r e a " p e k l r e t a p " " " " a t l e " " " : b " k " " " " i r _ _ _ a h 5 a n " e e i n k l r e a " p i k l r e e k l r e d k l r e " k l r e a " p e k l r e t a p " " " " a t l e " " " : b " k " " " " i r _ _ _ a h 5 a " e e i n k l r e a " p s k l r e " k l r e a " p e k l r e t a p " " " " a t f " : " a 6 u : o : : : : d i t m c " e " 2 l : n n o t s a e t " : e o s a e t n s a e t a s a e t : s a e t " : e t s a e t y " e : : : : d e o r : : 6 u : o : : : : d i t m c " e " 2 l : n n o t s a e t " : e o s a e t n s a e t a s a e t : s a e t " : e t s a e t y " e : : : : d e o r : : 6 u : o : : : : d i t m c " e " 2 : n n o t s a e t " : e " s a e t : s a e t " : e t s a e t y " e : : : : d e o : { n n n { : g 7 " t u e a o o r : s : 5 o t t n _ " t f a : " n " t f a t " t f a t " t f a " t f a : " " " t f a p : " " " a " 7 " t u e a o o r : s : 5 o t t n _ " t f a : " n " t f a t " t f a t " t f a " t f a : " " " t f a p : " " " a " 7 " t u e a o o r : s : 5 t t n _ " t f a : " : " t f a " t f a : " " " t f a p : " " " l n u u u e c f e " t " " " 9 r l u d e " 6 a [ _ _ s f : e " " " : s : e " " s : e " " a : e " " { : e " " " : : : e " " e : " { " " : : d : " " d f e " t " " " 7 r l u d e " 6 a [ _ _ s f : e " " " : s : e " " s : e " " a : e " " { : e " " " : : : e " " e : " { " " : : d : " " d f e n t " " " n r l u d e " 6 [ _ _ s f : e " " " : : e " " { : e " " " : : : e " " e : " { " " : : d " u l l l 3 " e i s u " I f / 5 " i c i a { : " " d ] u v h o d : : { 6 " d : : " d : : _ d : : d : : { w d : : " { w h h " h h a i s b " 0 f / 9 " i c i a { : " " d ] u v h o d : : { 6 " d : : " d : : _ d : : d : : { w d : : " { w h h " h h a i s u " t f u " i c i a { : n " ] u v h o d : : { 6 { d : : d : : { w d : : " { w h h e h l l l l , : 5 l " n : M i 6 2 : z h f t e : s , s e i l { " 7 " : { " : { " r { " { " z " { { " : " z t t " " : " t t 8 l " 4 : 1 i 6 3 : z h f t a : s , s e i l { " 7 " : { " : { " r { " { " z " { { " : " z t t " " : " t t c l " l : e 6 l : z h f t u : , s e i l { " 7 " { " { " z " { { " : " z t t " " r t l , , , b e : g G l 7 1 e e i e { 5 " e r p d : " { 4 f : " { : " { e : " { : " { v n : " { n v t t h h h t t 4 e : 5 . l 7 9 e e i e { 3 " e r p d : " { 4 f : " { : " { e : " { : " { v n : " { n v t t h h h t t a e : l s l 7 l e e i e { l e r p d : " { 4 f : " { : " { v n : " { n v t t h h " t , 1 0 s d n _ e c 0 " d d e d 7 " : r s s e h } 0 i { h } { h } c h } h } 9 o h " o 9 p p t t " t p p 7 s m n x e d 7 " d d e d 8 " : r s s e h } 0 i { h } { h } c h } h } 9 o h " o 9 p p t t " t p p 9 s , n t d d , " d d e d l n r s s e h } 0 i h } h } 9 o h " o 9 p p t t : p 0 b " { 3 u 8 " e 7 o _ " d " 1 5 _ i " r { t 3 l { t { t o { t { t g d { t n d g s s t t h t s s 4 " { p u m " a , o _ " d " 2 8 _ i " r { t 3 l { t { t o { t { t g d { t n d g s s t t h t s s 9 " { u " e a o _ " d " , u _ i " r { t 3 l { t { t g d { t n d g s s t t s 2 , " l 2 , 5 , s p : " : 9 e 0 c o : " t 4 e t t r t t " e t o e " : : p p t p : : 1 , " l l , 8 s p : " : 4 3 0 c o : " t 4 e t t r t t " e t o e " : : p p t p : : 1 , l , r c s p : " : l c o : " t 4 e t t " e t o e " : : p p " : f , l 6 b f a : 2 2 a n : p a s p p d p p , s p d " / s s t s / 6 , l " 4 f a : b d a n : p a s p p d p p , s p d " / s s t s / 6 l " a f a : l a n : p a s p p , s p d " / s s h / e , 9 0 s t n " b 8 n " { s 4 " s s s s s " s e , / : : p : / 0 , , 7 s t n " 2 1 n " { s 4 " s s s s s " s e , / : : p : / 0 , , 9 s t n n n " { s 4 " s s " s e , / : : t / 4 . b t h u " 2 3 2 _ : { : 8 : : " : : : " a f / s r a 0 4 t h u " 2 f 8 _ : { : 8 : : " : : : " a f / s r a 0 9 t h u n u _ : { : 8 : : : " a f / t a 7 p 2 o " l 2 0 0 1 c / 3 / / : / / / p i / : d p 0 1 o " l 2 0 4 a c / 3 / / : / / / p i / : d p 0 1 o " l u l c / 3 / / / p i / p p 4 n f r : l 0 2 1 8 o 1 / b / / / / / i l f f m m i 9 6 r : l 0 2 9 6 o 5 / b / / / / / i l f f m m i 9 6 r : l l l o 1 / b / / / i l f f s i 0 g e a , 2 5 0 7 m a d a a { a a a . e i i / f . . 0 0 a , 2 5 4 e m a d a a { a a a . e i i / f . . 0 0 a , l , m a d a a a . e i i : . 0 " 4 g " 5 - 3 0 m p c p p p p p r s l l r r n r 0 0 g " 5 - 7 5 m p c p p p p p r s l l r r n r 0 0 g " , m p c p p p r s l l r 1 , 7 e / - 0 a 6 e i 2 i i i i i d . e e d . i d 1 0 e / - 0 1 2 e i 2 i i i i i d . e e d . i d 1 0 e / e i 2 i i i d . e e / d 0 4 " I 0 3 7 7 n . 0 . . . . . m r s s m r i m 0 9 " 0 0 3 8 a n . 0 . . . . . m r s s m r i m 0 9 " t n . 0 . . . m r s s f m f 0 , M 3 - e a t r 0 r r r r r . d . . . d . . 9 0 , 1 3 - 4 5 t r 0 r r r r r . d . . . d . . 9 0 , e t r 0 r r r . d . . i . 7 0 G - 1 9 5 " d 1 d d d d d n m r r n m a n e 0 . - 1 2 2 " d 1 d d d d d n m r r n m a n e 0 s " d 1 d d d n m r r l n 5 1 _ 1 0 9 3 : m 0 m m m m m i . d d i . c i 0 1 x 1 9 d 5 : m 0 m m m m m i . d d i . c i 1 1 t : m 0 m m m i . d d e i 3 0 8 0 T 5 a . 8 . . . . . i n m m i n . i 4 0 m 9 T 1 9 . 8 . . . . . i n m m i n . i d 0 / . 8 . . . i n m m s i c f 2 T 0 5 a t n b n n n n n . i . . . i j . 5 9 l T 0 0 7 t n b n n n n n . i . . . i j . 9 9 " t n b n n n . i . . . . 0 7 6 0 3 9 a r i 8 i i i i i a i n n a i p a 4 e " 1 8 4 e r i 8 i i i i i a i n n a i p a 8 e , r i 8 i i i a i n n r a " 5 9 3 : 7 b u i a i i i i i c . i i c . / c " 0 , 3 : 6 b u i a i i i i i c . i i c . / c " 1 u i a i i i c . i i d c , 3 . : 2 c 0 e . 9 . . . . . . a i i . a w . , 4 : 4 a a e . 9 . . . . . . a i i . a w . , d e . 9 . . . . a i i m . c p 2 2 e f , a 5 a a a a a j c . . j c z j 5 2 6 2 c , a 5 a a a a a j c . . j c z j 9 , a 5 a a a j c . . . j 0 n 2 : a 1 c " c c c c c p . a a p . v p 4 4 : a 6 c " c c c c c p . a a p . v p 8 c " c c c p . a a n p " g : 5 e f . , . . . . . j c c j 9 / " : 4 b f . , . . . . . j c c j 9 / / . , . . . j c c i / , " 5 1 a 0 j j j j j j v p . . d p g , 2 4 e a j j j j j j v p . . d p g " j j j j v p . . i v , 1 . 3 0 p p p p p p 2 j j o / / 2 7 . 6 1 p p p p p p 2 j j o / / 2 , p p p p 2 j j . 2 . 7 9 d / / / / / / v p p w r f / . 6 2 e / / / / / / v p p w r f / / / / / v p p a / 7 5 c a v v v v v v f 1 / n e i f 8 3 3 b v v v v v v f 1 / n e i f v v v v f 1 / c f 5 0 b a 2 2 2 2 2 2 i v l n l i 6 6 2 8 2 2 2 2 2 2 i v l n l i 2 2 2 2 i v . i 0 5 b e / / / / / / l r 1 1 d e l 8 1 8 a / / / / / / l r 1 1 d e l / / / / l r 1 1 j l 5 5 f f f f n f n n e e / a e s e 0 0 4 1 f f n f n n e e / a e s e f n n n e e / / p e 5 0 " b i i o i o o s s r r d r / s 7 7 " 3 i i o i o o s s r r d r / s i o o o s s r r / s 0 Z , 9 l l d l d d / o e e / ? o / 8 Z , 7 l l d l d d / o e e / ? o / l d d d / o e e v / Z " 5 e e e e e e 6 u s s u u s 6 Z " e e e e e e e 6 u s s b u s 6 e e e e 6 u s s 1 6 " , 1 s s s s s s 7 r o o n r f 7 " , d s s s s s s 7 r o o 4 r f 7 s s s s 7 r o o / 7 , 9 / / / / / / c c u u g l s c , 6 / / / / / / d c u u 5 l s d / / / / d c u u r d d 6 6 w 6 w w e e r r d = t e e 6 6 w 6 w w a e r r m = t a 6 w w w a e r r e a 6 7 7 z 7 z z 5 s c c 3 h o 5 1 7 7 z 7 z z 8 s c c p h o 8 7 z z z c s c c s c 0 4 c v c v v b / e e / t r b e 4 d v d v v 4 / e e / t r 4 4 v v v a / e e o a b 0 e 9 e 9 9 0 w s s " t a 0 6 0 a 9 a 9 9 7 w s s " t a 7 0 9 9 9 9 w s s u 9 0 3 5 g 5 g g b z / / , p g b 4 3 8 g 8 g g 4 z / / , p g 4 3 g g g 9 z / / r 9 6 4 b / b / / 2 w w s e 2 b 4 4 / 4 / / 1 w w s e 1 4 / / / 1 w w c 1 4 a 0 c 0 ? " f 9 z z : f 9 a 7 c 7 ? " 6 9 z z : 6 a f ? " 6 9 z z e 6 8 4 b o b f , e g v 6 e c 4 4 o 4 f , 0 g v 6 0 4 i f , 0 g v s 0 3 8 2 m 2 o 4 / 9 9 / 7 4 0 8 1 m 1 o 0 / 9 9 / 7 0 8 l o 0 / 9 9 / 0 1 3 f m f r 7 p g g r c 7 e 3 6 m 6 r 0 p g g r d 0 3 e r 0 p g g w 0 4 b e e e m 4 r / d e 4 2 b 0 e 0 m 9 r / d a 9 b s m 9 r / z 9 0 d 4 n 4 a 0 p p m 5 0 c d 0 n 0 a 0 p p m 8 0 d / a 0 p p v 0 3 c 7 t 7 t 0 v r r . b 0 1 c 0 t 0 t 0 v r r . 4 0 c o t 0 v r r 9 0 e 2 4 s 4 = 1 i o o n 0 1 a 2 9 s 9 = 1 i o o n 7 1 2 s = 1 i o o g 1 6 0 0 / 0 j 0 d v v i b 0 0 0 0 / 0 j 0 d v v i 4 0 0 f j 0 d v v / 0 7 0 0 ? 0 s f e i i i 2 f b 0 0 ? 0 s 9 e i i i 1 9 0 s s 9 e i i p 9 1 1 1 f 1 o 7 r d d . f 7 4 1 1 f 1 o e r d d . 6 e 1 t o e r d d r e 6 0 0 o 0 n 5 s e e a e 5 9 0 0 o 0 n 0 s e e a 0 0 0 o n 1 s e e o 1 6 8 f r f " 3 / r r c 4 3 c 8 9 r 9 " 4 / r r c 0 4 8 r " d / r r v d 2 b 7 m 7 , c o s s . 7 c f b e m e , 5 o s s . 0 5 b a , 9 o s s i 9 c 8 5 a 5 0 s / j 4 0 7 8 0 a 0 4 s / j 9 4 8 g 8 s / d 8 f a 3 t 3 / f o p 0 / 4 a 4 t 4 / f o p 0 / a e / f o e / b 9 c = c " s s s / 0 " 6 9 5 = 5 " s s s / 0 " 9 / " s s s r " c 5 0 j 0 , t f f d 1 a 5 4 j 4 , t f f d 1 5 6 , t f f s f / / s / o s s o 0 7 / / s / o s s o 0 / 7 o s s / 6 ? v o m r t t w f 7 ? v o m r t t w 9 ? d r t t o f f e n e a o o n 7 7 f e n e a o o n e f a a o o s 4 o r & t g r r l 5 d o r & t g r r l 0 o c g r r f 1 r s f a e a a o 3 0 r s f a e a a o 4 r a e a a s f m i i d / g g a c a m i i d / g g a 5 m 9 / g g t " a o l a 6 e e d 0 " a o l a 6 e e d 4 a 9 6 e e t n t t 7 / / / " t n t t 7 / / / " t 1 7 / r = s e a c 6 6 u , = s e a d 6 6 b , = 6 d 6 6 a j / r _ e 7 7 n j / r _ a 7 7 4 j 0 a 7 7 g s ? % r 5 c c g s ? % r 8 d d 5 s 0 c d d e o f 5 e b e e d o f 5 e 4 a a m o 0 a a a / n o B c 0 5 5 3 n o B c 7 8 8 p n 9 9 c c 6 " r t o b b b / " r t o 4 4 4 / " 0 9 a a 7 , m a r 2 0 0 ? , m a r 1 7 7 ? , 0 1 9 9 d a r d f b b d a r d 6 4 4 d 1 6 9 9 a t g s e 2 2 i t g s 0 1 1 i 0 0 1 1 c = e / 4 f f r = e / 0 6 6 r 9 0 6 6 a j t ? 7 e e e j t ? 0 0 0 e e 0 0 0 9 s % f 4 4 4 c s % f 9 0 0 c 1 9 0 0 9 o 5 o 0 7 7 t o 5 o 0 0 0 t d 0 0 0 1 n D r 0 4 4 % n D r 0 9 9 % 9 0 9 9 6 " = m 1 0 0 2 " = m 1 0 0 2 8 1 0 0 0 , u a 0 0 0 6 , b a 0 0 0 6 / 0 0 0 0 n t f 1 1 m 4 t 9 1 1 m ? 9 1 1 0 g = 7 0 0 o 5 = e 0 0 o f e 0 0 9 d j 5 f f d m j 0 9 9 d o 1 9 9 0 3 s 3 7 7 e p s 4 e e e r d e e 0 " o c 5 5 = " o 5 0 0 = m 9 1 1 1 , n 0 3 3 r , n 4 4 4 r a 8 d d 0 " " c c e " " 5 5 e t / 9 9 9 , , 0 0 n , , 4 4 n = " 8 8 e " " d " " d j , / / 1 , , e , , e s " " d r r o , , 9 " " n 8 , , " / , ? k i n d = f o l d e r " , 検索例 JSON:APIに準拠しているので、filterパラメータを使用します。 ...

2025年3月19日 · 39 分 · Nakamura

AtoM(Access to Memory)のAPIを使って、オブジェクトを登録してみる

概要 AtoM(Access to Memory)のAPIを使って、オブジェクトを登録する方法の備忘録です。 APIの有効化 以下にアクセスします。 /sfPluginAdminPlugin/plugins arRestApiPluginを有効にします。 APIキーの取得 以下に、APIキーを生成する方法が説明されています。 https://www.accesstomemory.org/en/docs/2.9/dev-manual/api/api-intro/#generating-an-api-key-for-a-user ユーザ名とパスワードでもAPI接続できるようですが、今回はREST API Keyを発行しました。 エンドポイント AtoMでは、「典拠レコード」や「機能」など、複数のメニューが提供されていますが、APIによって利用できるのは、以下のみのようです。 See the subsequent pages for more details on each endpoint, and available parameters. There are three endpoints available: Browse taxonomy terms Browse information objects Read information object Download digital objects Add physical objects この点は、ArchivesSpaceのほうが豊富なAPIが提供されており、軍配が上がるかもしれません。 https://archivesspace.github.io/archivesspace/api/ また、以下のソースコードを確認すると、CreateActionが可能なものは、informationobjectsとphysicalobjects、digitalobjectsに限定されているようでした。 https://github.com/artefactual/atom/tree/qa/2.x/plugins/arRestApiPlugin/modules/api/actions ただ機械的に一括登録を行いたい場面は、主にinformationobjectsだと考えられるため、これらの機能のみで十分かもしれません。 physical objectsの登録 以下のようなクラスを用意します。 # c | l a e s x s d d p e e o A f f r p t i l s u p a i e a u p r # i e C _ o e s a p f l d r r e f l l i a l e s i s d l i s レ s i n d f r s _ a e _ n p ス r e e i _ . n w k p s } : # a a a s } p = t o ポ e p p p # r p p : p p n t d u a o e i e u u u e h ( n ン s r r r e r r r r t _ o r m r y _ l B t t t l y f u s ス p i i i 作 s i i i i : _ t l e d k f a h h h f s " r e を o n n n 成 u n n n n ( e = e . " " s _ _ _ . " " i { l 確 n t t t さ l t t t t s n = = = y h R C i s b b h A C c s , = 認 s ( ( ( れ t ( ( ( ( e v o : e E o c t y 6 e u o a e e " f f た f j f f l ( o o o s a S n r t 4 a t n l l s r . 物 " " オ = " s " " f o s s s . d T t 認 i e d h t _ f e e s 理 ス レ ブ 作 o エ レ ) v . . . g e - e 証 n s = e o e o . l q t オ テ ス ジ r 成 n ラ ス : e g g g e r A n の g r r n b u f u a ブ ー ポ ェ e さ . ー ポ r e e e t s P t ヘ = b s i t j r . e t ジ タ ン ク s れ d : ン r t t t e I - ッ = a z - e l h s u ェ ス ス ト p た u ス i e e e n = - T ダ a s = a T c } e t s ク コ : の o 物 m { : d n n n v K y ー f u e t y t / a s _ ト ー 情 n 理 p r e v v v ( { e p を " t 6 { i p s a d . c が ド { 報 s オ s e { = ( ( ( " y e 作 { h 4 o e ( p e p o 作 : r e ブ ( s r T " " " a " " 成 u _ . n " s i r o d 成 e . ジ r p e r a u p p : : s s b " : e / s s e さ { s j ェ e o s u t s a i e t 6 : l p , t れ r p s ク s n p e o e s _ a " r r 4 " f h ( i ま e o o ト u s o ) m r s k p a n i e f a , y p u n し s n n I l e n _ n w e i p a n n " p s h r た p s ( D t . s u a o y _ p m g c B p p i y l [ ! o e ) : , s e r m r " k l e . o a l h c s , 2 " n . t . l e d ) e i } e d s i y a i 0 ) s t { i a t " " " y c : n e i c s l c h 0 e e r n t e ) ) ) , a { c ( c a i o a e , . x e d u x t p o a t c b l a s t s e s t i a d u { i a j _ d 2 t } u n _ } o s e t a o l e o e 0 a " l t c " n s ( h u n _ c b r 1 t ) t = o ) / w ' _ t / o t j s ] u . 4 d j o a b h j b s e = : s g ) e s r s y _ s j " c s _ e ) } o d c t b o e t e c t " n } i e 6 n c s l o ( ) " " i s 4 " t ) f d ' ' ) } s . e i ) . " ) h } d d , : e " ' e a ) ) c d } o e " d r ) e s ( , ' a j s s c o i n i = ' p ) h y s i c a l _ o b j e c t s ) 以下で実行します。 ...

2025年3月12日 · 16 分 · Nakamura

GakuNin RDMのAPIを使って、ファイルのアップロードなどを行う

背景 GakuNin RDMのAPIを使って、ファイルのアップロードなどを行う方法の備忘録です。 参考 以下でPAT(パーソナルアクセストークン)の取得方法などを説明しています。 また以下では、OAuth (Open Authorization)を使った方法を紹介しています。Webアプリなどから使用される場合には、こちらが参考になりましたら幸いです。 方法 nbdevを使って、以下のリポジトリを作成しました。 https://github.com/nakamura196/grdm-tools 以下でドキュメントを確認できます。 https://nakamura196.github.io/grdm-tools/ プロバイダ(osfstorage)とフォルダのID(6735a92e6dc8e1001062ac08)は変更する必要がありますが、以下のようなスクリプトにより、特定のフォルダにファイルをアップロードできます。 f i c p f u c r m l r i r l o p i o l l i m o e j e e r n t e _ = n g t t o c p t r k t a f . d o = e _ t " u m s n i h h p _ G = d t l t r o = t o o d s = p a o m . " s d l C e " . : _ s l n y / / f . i v s s / i a e i 8 a f l p n r 6 m i e i t o g p l ( ( n " l e f i . e s i m g . . l p e p r e o t n d _ r ( g m p t ' " . a G n t G R i h r D i , d M . m _ a u C T c r l O . l i K j ) e E p n N / t ' v ) 1 / r e s o u r c e s / { p r o j e c t _ i d } / p r o v i d e r s / o s f s t o r a g e / 6 7 3 5 a 9 2 e 6 d c 8 e 1 0 0 1 0 6 2 a c 0 8 / ? k i n d = f i l e " ソースコードは以下からご確認いただけます。 ...

2024年11月16日 · 2 分 · Nakamura

Omeka Sの特定のvocabularyのプロパティ一覧を取得する

概要 Omeka Sの特定のvocabularyのプロパティ一覧を取得する方法です。 方法 以下を対象にします。 https://uta.u-tokyo.ac.jp/uta/api/properties?vocabulary_id=5 次のプログラムにより、プロパティ一覧をMS Excelに書き込みます。 i i u p d w r f # d d m m r a a h e o f f p p l g t i m r D . o o e a l o a = t r r = _ e r d i d p v d f t o t t = l e a f a a e a o a p _ " i 1 s t t g _ t r F d e p r h 1 s : p a l a e k a r . x a e t t o e b _ e k i a D c n q t n = n r l + y i e f m a e d u p = s ( e i = s n y e t l a e s e r d a s k に a ( s s : [ e a k t 1 = d i e d 変 F " t / ] = s t . a n y e 換 r a a s / p a e [ t l a r s u r o ) x " a r i m c t e n t @ _ e n d e h p a q s = e c l m a ( i d . u e = n o i o d t d v u e . d n s v a a a e - s j 0 ( t t e t [ t s t t s : d e : _ a k a h o s o a x k : e _ u k . n t t e y l b y g ( a " y ] i . o e ) ) , s s x . t : t l a ( " ) s c u @ x . r i " j l d , p " / + , i u n t " " d a & @ e / p t x a a y = p g p F i e e a / = " l p " , s r e o + " ) p o e s : r t v t r o i ( c e p a s a b ? g u v e l o ) a c ) r a y b " u , l a " r o y : _ i i d d " = , 5 " " o : l o c a l _ n a m e " ] 結果 以下のようなMS Excelが得られます。 ...

2024年11月5日 · 6 分 · Nakamura

GakuNin RDM APIをつかってみる

概要 GakuNin RDMでは、以下でAPIが公開されています。このAPIの使用例について備忘録です。 https://api.rdm.nii.ac.jp/v2/ 参考 GakuNin RDMはOSF(Open Science Framework)をベースに構築されており、APIに関するドキュメントは以下で確認することができます。OpenAPIに準拠しています。 https://developer.osf.io/ PATの取得 PAT(パーソナルアクセストークン)を取得します。 ログイン後、以下のURLから作成することができます。 https://rdm.nii.ac.jp/settings/tokens/ 利用 以下のようなスクリプトにより、プログラムからもアクセスすることができます。 a c c e s s _ t o k e n = x x x i i f l l a # u # # r r m m r o o c r e e p p o a a c ア l フ w s s o o m d d e ッ ァ i p p r r _ _ s プ = イ t o u h } o t t d d d s ロ ル h n r e n o o o _ ー f を s l a s r o t t t t ド ' 開 o e , d e e s e e e o U h き p e ' . q n n n k R t 、 e = r A j u v v v e L t P n s u s e ( ( n に p U ( r = t o s i v " ク s T f e { h n t m e . = エ : リ i q o ( s p r / リ / ク l u r ) o b e o パ / エ e e i r o n s ラ a ス _ s z t s v . メ p ト p t a e " e ー i で a s t l = ) n タ . ア t . i o T v を r ッ h g o a r i 追 d プ , e n d u r 加 m ロ t ' _ e o . ー ' ( : d ) n n ド r o . i b f t g i ' ' e e . ) B n t a e v ( c a a " . s r a j e c p f r c / i e v l { s 2 e a s / : c _ n c t o e o d s k e s e s _ n / t " ' o ) k e n } ' 参考までに、Authorizationヘッダーが未指定の場合、以下の結果が返却されました。 ...

2024年10月26日 · 3 分 · Nakamura

校異源氏物語テキストDBで公開するTEI/XMLファイルに対するDTS APIのGitHubリポジトリ

概要 以下の記事で紹介したAPIのGitHubリポジトリを公開しました。 リポジトリは以下です。 https://github.com/nakamura196/dts-typescript 不完全な点があるかと思いますが、参考になりましたら幸いです。 メモ vercelのrewrite 以下のように設定することで、/へのアクセスを/api/dtsにリダイレクトさせることができました。 { } " " ] " ] " ] v b , r , r e u e e r i w d s l { } r { } i { } i d i r o s t e n " e c " : " " s " " t " " " : s u " s d s s d p [ r s : o e " o e e 2 c e u s : u s r , " " [ r t r t m : : c i [ c i a e n e n n " " " a " a e s @ : t : t n r v i i t c e " " " / r n n : i c a " " " n e p : , : t d l i r e / / " " u x n d / / e . o t s a t d s r p s e ( c i " " . / , i d ) n t " d s , e " x , . t s " collectionのID コレクションのIDとして以下を使用しています。 ...

2024年9月4日 · 2 分 · Nakamura

校異源氏物語テキストDBで公開するTEI/XMLファイルに対するDTS APIを作成する

概要 校異源氏物語テキストDBで公開するTEI/XMLファイルに対するDTS(Distributed Text Services) APIを作成したので、備忘録です。 背景 校異源氏物語テキストDBは以下です。 https://kouigenjimonogatari.github.io/ TEI/XMLファイルを公開しています。 開発したDTS 開発したDTSは以下です。 https://dts-typescript.vercel.app/api/dts Express.jsをVercelに設置しています。 DTSは以下を参考にしてください。 MyCapytainライブラリ 以下の記事で、DTSをPythonから利用するライブラリを紹介しました。 本ライブラリを使用して、開発したDTSを利用してみます。 Create the resolver With the following line we create the resolver : f r r e o s m o l M v y e C r a p = y t H a t i t n p . D r t e s s R o e l s v o e l r v s e . r d ( t " s h . t a t p p i s _ : v / 1 / d i t m s p - o t r y t p e H s t c t r p i D p t t s . R v e e s r o c l e v l e . r a p p / a p i / d t s " ) Require metadata : let’s visit the catalog The following code is gonna find each text that is readable by Alpheios ...

2024年9月4日 · 20 分 · Nakamura

WordPress REST APIで非公開の投稿も含めて検索する

背景 WordPress REST APIで非公開の投稿も含めて検索する方法の備忘録です。 以下が参考になりました。 https://wordpress.org/support/topic/wordpress-rest-api-posts-not-showing-other-than-published/ 具体的には、以下のように、引数statusを使い、複数の状態を指定することで、それらを含む記事の一覧を取得できました。 GET /wp-json/wp/v2/posts?status=publish,draft,trash 参考になりましたら幸いです。

2024年5月29日 · 1 分 · Nakamura

cwrcのwikidata-entity-lookupを試す

概要 以下の記事の続きです。 LEAF-WRITERの特徴として、以下が挙げられています。 the ability to look up and select identifiers for named entity tags (persons, organizations, places, or titles) from the following Linked Open Data authorities: DBPedia, Geonames, Getty, LGPN, VIAF, and Wikidata. この機能は、以下のようなライブラリが使用されています。 https://github.com/cwrc/wikidata-entity-lookup この機能を試しています。 使い方 以下などで、npmパッケージが公開されています。 https://www.npmjs.com/search?q=cwrc 上記のリストにはありませんが、今回は以下を対象にします。 https://www.npmjs.com/package/wikidata-entity-lookup 以下でインストールします。 n p m i w i k i d a t a - e n t i t y - l o o k u p wikidataLookup.findPersonは、以下のように実行することができました。 ...

2024年5月16日 · 2 分 · Nakamura

ArchivematicaでAmazon S3を処理対象およびAIPの保存先に設定する

概要 Archivematicaにおいて、Amazon S3上のファイルやフォルダを処理対象として、さらに処理結果であるAIPをS3に保存する方法に関する備忘録です。 S3をストレージとして利用することにより、他のシステムとの連携の容易化や、AIPの長期保存に関する選択肢が増えると考えられます。 ウェルカムコレクションの以下の記事が参考になりました。 https://docs.wellcomecollection.org/archivematica/administering-archivematica/bootstrapping Amazon S3の設定 バケットを作成します。今回、us-east-1リージョンに、archivematica.aws.ldas.jpというバケットを作成しました。 そして処理対象のファイルなどを格納する「transfer_source」、処理結果であるAIPを格納する「aip_storage」というフォルダを作成しておきます。これらの名前や階層は任意で、後述の過程でどのフォルダを使用するか設定できます。 Archivematica Storage Serviceの設定 Dockerを使ってArchivematicaをインストールした場合、以下のようなURLでArchivematica Storage Serviceにアクセスできます。 http://127.0.0.1:62081/ ログイン後、以下にアクセスします。「Create new space」リンクをクリックします。 /spaces/ 「Create Space」の画面で、以下のように入力します。「Access protocol」にS3を選択し、Access Keyなどを入力します。 Staging pathについてはよくわからず、以下の記事の値を入力します。 https://docs.wellcomecollection.org/archivematica/administering-archivematica/bootstrapping#step_7 Spaceを作成後、「Create Location here」を押して、ロケーションを作成します。2つリンクがありますが、どちらも同じでした。 ここで、2つのロケーションを作成します。一つは、以下のような、Purposeを「Transfer Source」とするロケーションです。 Relative Pathについては、「Browse」ボタンから、先に作成したフォルダから選択します。 また上記ではPipelineがひとつですが、複数のPipelineを作成している場合には、関連づけるものを選択することになると思います。 もう一つは、以下のような、Purposeを「AIP Storage」とするロケーションです。 それぞれの画面で、「Set as global default location for its purpose:」という項目がありますが、これをチェックしておくと、後述するデフォルト設定などが不要になります。 確認 ここまでの設定により、/spaces/にアクセスすると、デフォルトのAccess Protocolが「Local Filesystem」のスペースに加えて、Access Protocolが「S3」のスペースが追加されていることが確認できます。 さらに、/locations/にアクセスすると、追加した2つのロケーションが追加されていることが確認できます。 Archivematica Dashboardの設定 Dockerを使ってArchivematicaをインストールした場合、以下のようなURLでArchivematica Dashboardにアクセスできます。 http://127.0.0.1:62080/ AIPの格納先の設定 そして以下にアクセスして、例えばプロセスautomatedを編集します。 /administration/processing/ ...

2024年2月3日 · 1 分 · Nakamura