Sonst vielleicht mit einem Bash-Skript? Ich hab mal ein vorhandenes Skript angepasst:
#/usr/bin/env bash
fetch_token() {
file=$1 ; count=$2
if [ $verb == "ListSets" ]
then
tee >(xmlstarlet sel -t -v "//_:setName" >> "$file-set-names.txt") | xmlstarlet sel -t -v "//_:resumptionToken"
else
tee >(xmlstarlet fo - > "$file-$(printf "%04d" $count).xml") | xmlstarlet sel -N oai="http://www.openarchives.org/OAI/2.0/" --template --match "/oai:OAI-PMH/oai:${verb}/oai:resumptionToken" --value-of "."
fi
}
server=$1
verb=$2
file=$(echo $server | sed -E 's/^https?:\/\///; s/[\.:\/]/-/g')
count=1
token=$(curl -s -g "$server?verb=${verb}" -H 'Accept: application/xml' | fetch_token $file $count)
while [ $token ] ; do
((count++))
token=$(curl -s -g "$server?verb=${verb}&resumptionToken=$token" -H 'Accept: application/xml' | fetch_token $file $count)
done
Wenn Du das als oai.sh speicherst und so bash oai.sh https://www.canal-u.tv/oai ListSets ausführst, dann schreibt es die Namen der Sets in eine txt-Datei.
$ catmandu convert OAI --url https://www.canal-u.tv/oai/ --listSets 1
Use of uninitialized value $ns in string eq at /usr/local/share/perl/5.38.2/Catmandu/Importer/OAI.pm line 114.
Use of uninitialized value $ns in string eq at /usr/local/share/perl/5.38.2/Catmandu/Importer/OAI.pm line 119.
Use of uninitialized value $ns in string eq at /usr/local/share/perl/5.38.2/Catmandu/Importer/OAI.pm line 124.
[{"setSpec":"chaine","_id":"chaine","setDescription":[],"setName":"Toutes les chaines"},{"setSpec":"discipline","setName":"Toutes les disciplines","_id":"discipline","setDescription":[]}Oops! Can't locate object method "read" via package "XML::LibXML::Text" at /usr/lib/x86_64-linux-gnu/perl5/5.38/XML/LibXML/Reader.pm line 138.
Oder auch sets, mit automatischer Paginierung (ich finde 853 Sets für den Endpunkt).
$ metha-id https://www.canal-u.tv/oai | jq -rc '.sets[].setName' | head
Toutes les chaines
Toutes les disciplines
Académie de Rennes
ADBU
AFRINUM
Agreenium
Ambiances Architectures Urbanités
anatomie 3D Lyon1
A.P.D.E.N. (ex FADBEN) - Association des professeurs documentalistes de l’Éducation nationale
Archéorient - Environnements et sociétés de l'Orient ancien
Danke! Genau das habe ich gebraucht. Ich hatte mir zwar schon metha angeschaut, aber beim durchsuchen der Man Page und der Readme nichts zu ListSets gefunden.
Mit dem Ergebnis kann ich gut arbeiten.