AttributeError: 'ImageDraw' object has no attribute 'textsize'への対応

PythonのPillowで以下を使用していた際、 t f t e o x x n w t t , s i = t z x e I h m = a = g 1 e d 4 F r o a n w t . . t t e r x u t e l t e y n p g e t ( h " ( A l r a i b a e l l , U n f i o c n o t d = e f . o t n t t f ) " , s i z e = t e x t s i z e ) 以下のエラーが発生しました。 ...

2023年11月26日 · 2 分 · Nakamura

Amazon SNSを用いたEC2上のVirtuosoの再起動

概要 以下の記事で、ヘルスチェックを行う方法について記述しました。 また、Virtuosoが停止した際の再起動のためのコマンドを以下に記述しました。 今回は、Amazon SNSを用いた通知に合わせて、Virtuosoを再起動してみます。 方法 EC2インスタンスにsudo rm -rf /usr/local/var/lib/virtuoso/db/virtuoso.lck && ...のようなコマンドを送信するには、SSM(AWS Systems Manager)に関する設定が必要でした。 IAMロールとポリシー IAMロールを新規に作成して、AmazonSSMFullAccessというポリシーを許可しました。はじめ、AmazonSSMManagedInstanceCoreというポリシーを許可していましたが、後述するlambda実行時に以下のようなエラーが発生して、うまく動作させることができませんでした。 A n e r r o r o c c u r r e d ( I n v a l i d I n s t a n c e I d ) w h e n c a l l i n g t h e S e n d C o m m a n d o p e r a t i o n : I n s t a n c e s [ [ i - x x x x x x ] ] n o t i n a v a l i d s t a t e f o r a c c o u n t x x x x x x EC2インスタンスの「IAMロールを変更」から、作成したIAMロールを選択して更新しました。 ...

2023年11月24日 · 11 分 · Nakamura

Google Mapsの短縮URLから緯度経度を取得する際の備忘録

概要 以下のようなGoogle Mapsの短縮URLから緯度経度を取得する機会がありました。 https://goo.gl/maps/aPxUgDJ9KP2FLFkN7 https://goo.gl/maps/aPxUgDJ9KP2FLFkN7 この時、2つの緯度経度が取得できたので、その備忘録です。 抽出方法 GPT-4から以下の回答が得られました。 -– 以下、回答 — Google Mapsの短縮URL (goo.gl/maps/...) から直接緯度経度を抽出することはできません。しかし、この短縮URLを展開して元のURLを取得することで、そのURLから緯度経度を抽出することができます。 以下の手順で緯度経度を取得することができます: 短縮URLを展開します。 展開されたURLから緯度経度を抽出します。 以下はPythonでこれを実現する一例です: i i d u l p m m e r a r p p f l t i o o _ n r r g # r i l # m i e = l t t t e e f o a f l o ( t 短 s n 展 t s " n l r r _ 縮 p r g 開 c m e h a e e l U o e r _ さ h a l r : r t = t q a R n s e u れ t a e e t _ u t L s p t r た = c t t t p g l e _ を e o u l U h , u u s e o s l 展 n r R r : r r : t n t o 開 = s n = L e l n n / _ ) s n e か . o / l _ r . N r ら s n f N g a f e s o e 緯 e l o o t r q t n s 度 a = o n o _ o u a e p 経 r a e . l m e t o 度 c m t g o _ s u n を h a ( l n g t s s 抽 ( t l / _ o s _ e 出 r c a m f o . c . ' h t a r g g o h @ . ) p o l e d e ( g , s m e t e a [ r / _ _ ( d \ o f a g u s ! e - u l P o r h = r 0 p o x o l o s - s a U g ( r 3 [ 9 ( t g l s t 0 ' . ) ( D e h _ 2 l ] l J _ o u : o + o 9 u r r c ) n K r t l a , ) P l _ , t ( 2 ( u i [ F u r a o \ L r l l n - F l ) l ' 0 k ) : o ] - N w 9 7 _ . " r ] e + d ) i ' r , e c l t o s n = g F _ a u l r s l e ) ) このコードは、短縮URLを展開して緯度経度を抽出するための基本的なものです。しかし、実際の使用環境や目的に応じて、エラーハンドリングや例外処理を追加することが推奨されます。 ...

2023年8月22日 · 6 分 · Nakamura

Omeka Classic IIIF Toolkitにデータを一括登録する

概要 Omeka Classic IIIF Toolkitにデータを一括登録する方法を説明します。Omeka Classic IIIF Toolkitのセットアップについては、以下を参考にしてください。 また、以下の記事の内容を発展させ、excelデータを入力データとして、より簡便に使用できるようにしたものです。 excelファイルの準備 以下のようなexcelファイルを準備します。 https://github.com/nakamura196/000_tools/blob/main/data/sample.xlsx 「collection」「item」「annotation」の3つのシートを用意します。 collection manifest_uri https://d1fasenpql7fi9.cloudfront.net/v1/manifest/3437686.json item title canvas_uri width height image_url manifest_uri 校異源氏物語. 巻一 [4] https://www.dl.ndl.go.jp/api/iiif/3437686/canvas/4 6890 4706 https://www.dl.ndl.go.jp/api/iiif/3437686/R0000004/full/full/0/default.jpg https://d1fasenpql7fi9.cloudfront.net/v1/manifest/3437686.json 校異源氏物語. 巻一 [4] https://www.dl.ndl.go.jp/api/iiif/3437686/canvas/5 6890 4706 https://www.dl.ndl.go.jp/api/iiif/3437686/R0000005/full/full/0/default.jpg https://d1fasenpql7fi9.cloudfront.net/v1/manifest/3437686.json annotation chars x y w h canvas_uri tag 3125 4898 4008 241 79 https://www.dl.ndl.go.jp/api/iiif/3437686/canvas/4 序 2910 868 147 140 https://www.dl.ndl.go.jp/api/iiif/3437686/canvas/4 913.36 たH 2228 226 586 156 https://www.dl.ndl.go.jp/api/iiif/3437686/canvas/4 或は撮影して、 897 3517 83 434 https://www.dl.ndl.go.jp/api/iiif/3437686/canvas/4 一 810 3528 30 17 https://www.dl.ndl.go.jp/api/iiif/3437686/canvas/4 序 6018 1055 65 65 https://www.dl.ndl.go.jp/api/iiif/3437686/canvas/5 二 6025 3535 49 39 https://www.dl.ndl.go.jp/api/iiif/3437686/canvas/5 殆んどあらゆる現存貴重資料に及び、 5889 707 86 1090 https://www.dl.ndl.go.jp/api/iiif/3437686/canvas/5 一字をも忽にしない細緻な〓究は、 5889 1837 86 1012 https://www.dl.ndl.go.jp/api/iiif/3437686/canvas/5 フイルム等 5501 3614 76 323 https://www.dl.ndl.go.jp/api/iiif/3437686/canvas/5 大島雅太郞氏· 916 3491 89 436 https://www.dl.ndl.go.jp/api/iiif/3437686/canvas/5 序 807 1048 65 61 https://www.dl.ndl.go.jp/api/iiif/3437686/canvas/5 三 815 3517 61 57 https://www.dl.ndl.go.jp/api/iiif/3437686/canvas/5 python 以下のライブラリをインストールします。 ...

2023年7月20日 · 2 分 · Nakamura

WikibaseSyncを試す

概要 以下のWikibaseSyncを試す機会がありましたので、その備忘録です。 https://github.com/the-qa-company/WikibaseSync 以下の論文で、上記のツールを知りました。 https://doi.org/10.11517/jsaisigtwo.2022.SWO-056_04 インストール ソースコードや関連ライブラリをインストールします。 ! c ! g d p e i t W p i c k i l i n o b s n a t e s a e l h S l t y t n - p c r s : r / e / q g u i i t r h e u m b e . n c t o s m . / t t x h t e - q a - c o m p a n y / W i k i b a s e S y n c Bot Accountの作成 事前に用意したWikibaseにアクセスし、「Special pages」から、「Bot passwords」をクリックします。 ...

2023年7月19日 · 5 分 · Nakamura

wikibaseのapiをつかってみる

概要 wikibaseのapiをpythonクライアントから使用する機会がありましたので、その備忘録です。 以下のライプラリを使用しました。 https://wikibase-api.readthedocs.io/en/latest/index.html インストール 以下でインストールします。 ! p i p i n s t a l l w i k i b a s e - a p i Read 今回は、以下のwikibaseインスタンスに対して処理を行います。 https://nakamura196.wikibase.cloud/ f a w r p r p b r o i = i m _ = n u w t w r W b ( i l i . r k k e ) i = i n b b t a " a i s h s t e t e y _ t ( . a p a g p s p e i : i t / _ ( i / u " m n r Q p a l 1 o k = " r a a ) t m p u i W r _ i a u k 1 r i 9 l b 6 ) a . s w e i k i b a s e . c l o u d / w / a p i . p h p " 上記により、Q1に関する情報を取得することができました。 ...

2023年7月19日 · 8 分 · Nakamura

Dataverseを試す

概要 Dataverseを試す機会がありましたので、その備忘録です。以下のデモ環境を使用します。 https://demo.dataverse.org/ アカウント作成 Sign Upからアカウントを作成します。 Dataverseの作成 Dataverseを作成してみます。 以下のようなDataverseを作成しました。 https://demo.dataverse.org/dataverse/nakamura196 Datasetの作成 Add Dataから、データセットを作成します。 以下が登録画面です。 以下が登録結果の画面です。 URLは以下になっており、自動的に付与されるDOIをシステム内の識別子として利用しているようでした。 https://demo.dataverse.org/dataset.xhtml?persistentId=doi:10.70122/FK2/HBXQPZ Whole Tale Access Datasetボタンのオプションに、Whole Taleというものがありました。 アカウントを作成して、Compute EnvironmentをJupyter Notebookに設定してみます。 Acknowledge allボタンを押します。 結果、以下のようなJupyter Notebookの環境が作成されました。 Pythonを使って、ダウンロードした画像を表示してみます。 上記のように、データセットやソースコードに対する動作確認や検証もシームレスに実行できるようでした。 Widgets 以下の「Thumbnails + Widgets」を押してみます。 以下の「Widgets」タブを表示してみます。 上記のコードを埋め込んでみると、以下に示すように、データセットに関する情報を埋め込み表示することができました。 https://codepen.io/satoru196/pen/NWEMvEV?editors=1000 API Pythonのライブラリを使ってみます。 https://pydataverse.readthedocs.io/en/latest/ ライブラリをインストールします。 ! p i p i n s t a l l p y D a t a v e r s e データのダウンロード 以下のページを参考にしました。 ...

2023年7月19日 · 6 分 · Nakamura

Omeka Classicでコレクションを一括削除する方法

概要 Omeka Classicでコレクションを一括削除する方法の一例を紹介します。Omeka Classic (Version 3.1.1)では、コレクションを複数選択して削除するGUIは提供されていません。アイテムについては、同機能が提供されています。 そこで、APIを用いてコレクションの一括削除を行います。 APIキーの取得 以下を参考に、APIの有効化とAPIキーの発行を行います。 https://omeka.org/classic/docs/Admin/Settings/API_Settings/ 具体的には、まず以下のページにアクセスします。 /admin/settings/edit-api そして、ユーザ毎のページにアクセスして、「API Keys」のタブを選択します。「New key label」からAPIキーを発行します。 /admin/users/api-keys/1 Pythonスクリプト 以下のようなPythonスクリプトにより、コレクションの一括削除を行うことができます。以下では、アイテム数が0のコレクションのみを削除するように設定しています。 i a e p } # u c f m p n a r o o p i d r コ l l r # i i o _ p a レ l t f r k o m " ク = e c コ e # r t e i s k シ c o レ m i e y n e ョ f t l ク s ア t u q r t = y ン " i l シ _ イ e r u e = " 一 { o e ョ c テ m l e q = { : 覧 e n c ン o ム s _ s u " の n s t に u 数 _ c t e < " a 取 d i 含 n が c o s s 取 h p 得 p = o ま t 0 o l . t 得 t i o n れ の u l d s し t _ i r る = 場 n e e た p k n e i ア 合 t c l A s e t q n イ c t e P : y } u テ o = i t I / / e c ム l = o e キ / c s o 数 l n ( ー e o t l を e 0 f > x l s l 取 c : = " " a l . e 得 t { m e g c i c u # p c e t o o r l t t i n l l 要 e i ( o [ l _ 変 . o u n " e c 更 o n r s i c o r s l : t t l g " , e i l / m o e o p s n c m a " [ t e r ] " i k a [ u o a m " r n / s c l } a = o " " p p u ] , i a n " r t p a " a # m ] r s a 要 ) m 変 . s 更 j = s p o a n r ( a ) m s ) まとめ Omeka Classicでコレクションを一括削除する際の参考になりましたら幸いです。 ...

2023年6月27日 · 2 分 · Nakamura

bagit-pythonを試す

bagitは以下のように説明されています。 bagit is a Python library and command line utility for working with BagIt style packages. 本ライブラリを試すGoogle Colabのノートブックを作成しました。 https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/bagit_python.ipynb bagitの利用にあたり、参考になりましたら幸いです。

2023年6月20日 · 1 分 · Nakamura

DjangoとAWS OpenSearchを接続する

概要 DjangoとAWS OpenSearchを接続する方法に関するメモです。以下の記事が参考になりました。 https://testdriven.io/blog/django-drf-elasticsearch/ ただし、上記の記事はElasticsearchを対象にした設定のため、OpenSearchに応じた変更が必要です。 変更点 以下のElasticsearch Setupの部分から、OpenSearchに応じた変更が必要でした。 https://testdriven.io/blog/django-drf-elasticsearch/#elasticsearch-setup 具体的には、以下の2つのライブラリが必要でした。 ( ( e e n n v v ) ) $ $ p p i i p p i i n n s s t t a a l l l l o d p j e a n n s g e o a - r o c p h e - n p s y e a r c h - d s l その後は、django_elasticsearch_dslとなっている箇所をdjango-opensearch-dslに、elasticsearch_dslをopensearchpyに書き換えることで、記事の通りに進めることができました。 ...

2023年6月19日 · 18 分 · Nakamura

Drupal Key authを用いたコンテンツの登録と多言語対応

概要 以下の記事で、Basic認証を使ったPythonによるコンテンツ登録を行いました。 今回は、以下の記事を参考に、API Key Authenticationを試しました。 https://designkojo.com/post-drupal-using-jsonapi-vuejs-front-end API Key Authentication 以下のモジュールを使用しました。 https://www.drupal.org/project/key_auth ユーザの編集画面に「Key authentication」というタブが表示され、APIキーを生成できました。 APIキーを使用する場合には、以下のようなプログラムで実行することができました。 i e k h } p } r r m n e e a . p d y a y = j o p d l s r o = e ' ' " o " } r o t i r A C a a d e n n ' s c o p d a q ( r t { c n i t u ) e A = e t - = a " " } e q = P p e k " t a s u I { t n e { : y t t e ' キ ' t y p t s s h ー : - " { e r " " } . t t } T : " i t b p s t ' ' y : b i o o p a p k u t d s : p e e " t l y " " t / p ' y n e e " v f ( / l : o s " : a o e { i d " : l r n i c ' e : { u m d p a a - " e a p ア t p - { W " t o ド i p a h : " i レ o l r a : n ス n i t t " t / c i ' B " , o v a c s e p r n t l l h d i e u w a e ド . o " p a i a メ a n , t n d イ p / f e _ e ン i v r r t r 名 + n o . e s } j d m x = / s . M t h j o a P y " e s n p y a o ' i t f d n , + h r e a j o i r p s n e s i o " n , / n , d n ' s j o , . s d " o e , n / = a p r a t y i l c o l a e d ' ) 多言語対応における注意点 注意点として、翻訳データの作成はできないようでした。 ...

2023年6月9日 · 4 分 · Nakamura

Wagtailを試す

概要 Wagtailを試してみましたので、躓いた点などの備忘録です。 基本的には、以下のチュートリアルを参考に進めました。 https://docs.wagtail.org/en/v5.0.1/getting_started/tutorial.html 検索機能 「はじめての記事」という日本語のタイトルを持つページを追加した際、以下ではヒットしませんでした。 http://localhost:8000/admin/pages/search/?q=はじめて 一方、以下ではヒットしました。日本語の部分一致検索はデフォルトではできないようでした。 http://localhost:8000/admin/pages/search/?q=はじめての記事 Wagtail API APIについては、以下に記載がありました。 https://docs.wagtail.org/en/v5.0.1/advanced_topics/api/index.html 上記のサイトを参考に、rest_frameworkも追加することで、以下のように結果を得ることができました。 ただし、localhost:8000で立ち上げているアプリに対して、得られる結果のホスト名がlocalhostになっていました。 この点については、以下の記事を参考に、管理画面から修正できました。 https://stackoverflow.com/questions/52540254/edit-approved-email-points-to-localhost 具体的には、以下の/admin/sites/のページで、ポート番号を変更しました。 ?searchパラメータ 先の検索機能と同様、日本語については完全一致が必要なようでした。 http://localhost:8000/api/v2/pages/?search=はじめての記事 Elasticsearch Elasticsearchとの連携を試みました。 https://docs.wagtail.org/en/v5.0.1/topics/search/backends.html 今回はawsのopensearchを試してみましたが、以下のようなエラーが出てしまいました。 e l a s t i c s e a r c h . e x c e p t i o n s . U n s u p p o r t e d P r o d u c t E r r o r : T h e c l i e n t n o t i c e d t h a t t h e s e r v e r i s n o t E l a s t i c s e a r c h a n d w e d o n o t s u p p o r t t h i s u n k n o w n p r o d u c t 以下で同様のissueが上がっていましたが、現時点ではまだ未対応のようでした。 ...

2023年6月9日 · 1 分 · Nakamura

Django REST framework JSON:API(DJA)に独自のモデルのビューをカスタマイズする

概要 以下の記事で追加したモデルのビューをカスタマイズしてみます。 sort ordering_fieldsを追加してみます。 c l a s s o q s d r u e e U d e r f s e r i e r y a g e i r r i s l e n f e I n e i t t t n g t z _ r e u f _ e o y n r r o f = r b _ t e n V i _ j p r t i e U c e k y u s e l s l c _ r u w d e a t = p n p s s r s ( k e e I s s s E r t = n e e i n ( ( f = l l s t ) M ( o f f r . o " . U ) . n y g d u o s : k o . e e s b e w t o t l e j r a b _ V r e I r N j o i _ c n g o e b e n t f s n c j w a s o . e t e S m . S g : s c e e a e e . t t " l r t g ( ) , l i ( e ) : ( a " t ) ) l e ( i n i # z t d e r = こ r y e こ _ n を p t 追 k r 加 " y , _ p N k o ) n . e b ) l o g 結果、「Filters」の表示で、user_nameのみが選択できるようになりました。 ...

2023年6月5日 · 5 分 · Nakamura

Django REST framework JSON:API(DJA)に独自のモデルを追加する

概要 以下の記事で、Django REST framework JSON:API(DJA)の基本的な操作方法を確認しました。 本記事では、DJAに独自のモデルを追加してみます。 参考 以下の記事を参考に、UserInfoモデルを追加してみます。 https://tech-blog.rakus.co.jp/entry/20220329/python 手順 モデルを定義 以下を追記します。 # c l ユ a ー s ザ s u b a c 情 s i g r 報 U e r e e を s r t a 格 e _ h = t 納 r n _ e す I a d m d る n m a o _ f e y d a o e t ( = = l B s = a m m . s o o P m e d d o o M e e s d o l l i e d s s t l e . . i s l C D v . ) h a e D : a t S a r e m t F F a e i i l T e e l i l l I m d d n e ( ( t F v v e i e e g e r r e l b b r d o o F ( s s i v e e e e _ _ l r n n d b a a ( o m m v s e e e e = = r _ ' ' b n ユ 生 o a ー 年 s m ザ 月 e e 名 日 _ = ' ' n ' , ) a 作 m m 成 a e 日 x = 時 _ ' ' l 年 , e 齢 a n ' u g , t t n o h u _ = l n 3 l o 2 = w ) T _ r a u d e d , = u T n r i u q e u ) e = F a l s e ) # # # ユ 生 ー 年 年 ザ 月 齢 名 日 データベースを構築 以下を実行します。 ...

2023年6月5日 · 11 分 · Nakamura

Django REST framework JSON:API(DJA)を試す

概要 Django REST framework JSON:API(DJA)を試す機会がありましたので、その備忘録です。 https://django-rest-framework-json-api.readthedocs.io/en/stable/index.html インストール 以下のページに記載があるexample appを起動します。 https://django-rest-framework-json-api.readthedocs.io/en/stable/getting-started.html g c p s p d d d i d y o i j j j t t u p a a a d h r n n n c j o c i g g g l a n e n o o o o n 3 s - - - n g e t a a a e o - n a d d d - m v l m m m h r / l i i i t e b n n n t s e i - p t n n U m l r s - v / r i o u : f a g a n / r e c r r d s / a n t e a d e g m v i q t a r i e v u e t v t w a i a e h o t r r u r e e - d b k m s r . - e e f - c j n t _ s o s t t e e m s i x t n . n a t d - t g m i j a x s p n a p t = l g n i e e s g x = o a e - m - x j p s a s l e m o e t p n . t l - s i e a e n . p t g s i t s e / i = t d n e t j g x i a s a n n m g g p s o l - e r . e s s e t t - t f i r n a g m s e w o r k - j s o n - a p i . g i t 結果、以下の画面などが得られました。 ...

2023年6月5日 · 3 分 · Nakamura

IIIFマニフェストファイルからPDFファイルを作成する

概要 IIIFマニフェストファイルからPDFファイルを作成する機会がありました。このソリューションとして、以下のリポジトリが見つかりましたが、うまく動かすことができませんでした。 https://github.com/jbaiter/pdiiif そこで、上記リポジトリはJavaScriptを使用していますが、今回はPythonを用いた変換ツールを作成しました。 使い方 以下のノートブックからお試しいただけます。 https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/iiif2pdf.ipynb 初回インストール時に、img2pdfをインストールしますが、PILのバージョンの関係で、「RESTART RUNTIME」ボタンが表示されますので、クリックの上、再度同じセルを実行してください。 オプションとして、「IIIFマニフェストURLの指定」「画像が格納されているフォルダのパスの指定」「ローカルに存在するIIIFマニフェストファイルのパスの指定」の3種類を用意しています。 注意点として、2023年5月末時点では、IIIF Presentation API v2にのみ対応しています。v3へは今後の対応を検討しています。 まとめ IIIFからのPDFファイルの作成にあたり、参考になりましたら幸いです。

2023年5月26日 · 1 分 · Nakamura

JPCOARスキーマ(v1)を用いたxmlファイルのバリデーションツールの試作

以前に以下の記事を執筆しました。JPCOARスキーマを用いたxmlファイルのバリデーションを試しました。 今回は、上記の記事での検証を元に、Google Colabを用いた検証ツールを作成しました。以下のURLからお試しいただけます。 https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/JPCOARスキーマ_v1を用いたxmlファイルのバリデーション.ipynb 公開済みのxmlファイルのURLを指定する、またはローカルファイルをアップロードすることで、対象ファイルのバリデーションを行うことができます。 JPCOARスキーマ(v1)を用いたxmlファイルの作成にあたり、参考になりましたら幸いです。

2023年4月19日 · 1 分 · Nakamura

Google Colabを用いたNDL古典籍OCRチュートリアルの不具合の修正および機能追加を行いました。

概要 以下の記事で紹介している、Google Colabを用いたNDL"古典籍"OCRアプリのチュートリアルを作成しています。 今回、以下の更新を行いました。 利用条件の追加 不具合の修正 IIIF Presentation API v3のマニフェストファイルの入力への対応 更新したノートブックは、これまでと同じ以下のURLでアクセスいただけます。 https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/NDL古典籍OCRの実行例.ipynb 利用条件の追加 ノートブック自体はCC0でご利用ください。ただし、「NDL古典籍OCRアプリケーション」は国立国会図書館がCC BY 4.0ライセンスで公開するものですので、クレジットの表示をお願いいたします。また、OCR適用対象の資料の利用条件などについても、それぞれご確認ください。 不具合の修正 OCR結果が出力されない不具合が発生していました。また、ライブラリのインストールにも長い時間がかかるようになっていました。これらの2点を修正しています。 IIIF Presentation API v3のマニフェストファイルの入力への対応 これまで、IIIF Presentation API v2のマニフェストファイルの入力のみに対応していました。 今回、v3への対応を行いました。この検証にあたり、以下の記事で紹介したIIIF Presentation API v3のマニフェストファイルを使用しました。 まとめ この間、不具合が発生しており申し訳ありません。NDL古典籍OCRの活用に役立つことができれば幸いです。

2023年4月12日 · 1 分 · Nakamura

Pythonを使ってDrupalのタクソノミーの登録とコンテンツへの追加

概要 以下のシリーズの続きです。 今回は、タクソノミーの登録とコンテンツへの追加を行います。 タクソノミーの登録 事前に、ne_classというタクソノミーをGUIを通じて作成しました。以下のようなURLで一覧できます。 /jsonapi/taxonomy_term/ne_class 以下、新しいタクソノミーを登録するプログラムです。host, username, passwordは適宜設定してください。 p } _ u r r a t r . y y l = j l p s o " } e = r o a d e n d a = f q ( t " u ) = a " " } " { e " t a n h s { : y t e o t p t _ s s { e r " c t . " i n l } p : b a a / o u m s j s " t e s s t t e " " o ( a s : n u x " a r o : " p l n 干 i , o { 瀬 / m " t h y , a e _ x a t o d e n e r o r m m s - y = - _ h n t e e e a _ r d c m e l / r a { s s _ , s t " y a , p u e t } h " = ( u s e r n a m e , p a s s w o r d ) , j s o n = p a y l o a d ) 以下のような結果が得られます。 ...

2023年4月11日 · 4 分 · Nakamura

Pythonを使ってDrupalのコンテンツを更新・削除する

概要 以下の記事で、コンテンツの新規登録の方法を記載しました。 今回は、既存のコンテンツの更新・削除を試みます。 アイテムの絞り込み 以下のようなプログラムにより、登録済みのコンテンツを取得することができます。今回は、titleが「更新前のタイトル」のコンテンツを取得しました。res["data"]は配列になります。 u p h q } i f f f e r r l s a o u t i o i n e e e s s e e l r l d = s n r s t r m t t p ( n w y " _ e k f e o r = r a o = t t r e i r i e e m r = i y s y l _ n q r s e d " t p , t s t u . [ x { l e = e t e j ' = = x e v r r = s s d x " = [ a s t o a " " " : ] l . = f s n t x x " u a ' . ( a x x " a e p ' { g ) ' x x 更 r p & h e ] " " 新 t i e ' o t ) 前 i n n . s ( の c d j t e タ l q ( o } n イ e u f i / d ト " e ' n j p ル r f ( s o " y i f o i . l i n n i t l a t t e t p , e r e i m [ r / h s { s n e ( k ) o a ) e d d : y e e } / r ] { s = i = { t h v e e a m a l _ d u t e e y r } p s ' e , ) } ? a { u f t i h l = t ( e u r s _ e s r t n r a } m ' e , p a s s w o r d ) ) 更新対象のコンテンツのID取得 730f844d-b476-4485-8957-c33fccb7f8acのようなIDが得られます。 ...

2023年4月11日 · 4 分 · Nakamura