(Go: >> BACK << -|- >> HOME <<)

Page MenuHomePhabricator

User notice for no ISBN support in Citoid
Closed, ResolvedPublic

Description

May 17:
Per https://phabricator.wikimedia.org/T336298#8859917 , the ability to add automatic citations from ISBNs is now restored.

Previous week
The following message has been sent to the list of 120 wikis (with citoid) listed below on May 11. En.wp had received a similar message on May 10.

from: https://meta.wikimedia.org/wiki/User:Elitre_(WMF)/ISBN

We have recently become unable to access the WorldCat API which provided the ability to generate citations using ISBN numbers. The Wikimedia Foundation's Editing team is investigating several options to restore the functionality, but will need to disable ISBN citation generation for now.

This affects citations made with the VisualEditor Automatic tab, and the use of the citoid API in gadgets and user scripts, such as the autofill button on refToolbar. Please note that all the other automatic ways of generating citations, including via URL or DOI, are still available.

You can keep updated on the situation via Phabricator, or by reading the next issues of m:Tech News. If you know of any users or groups who rely heavily on this feature (for instance, someone who has an upcoming editathon), I'd appreciate it if you shared this update with them.

Tech News related request from the team:
Starting on May 9, we no longer have access to the WorldCat API which provided the ability to add citations using ISBN.

Section:

Recent changes

Timing:

In the next issue

Message:

Effective May 9th, citoid will not be able to make automatic citations from an ISBN. This affects citations made with the VisualEditor Automatic tab, and the use of the citoid api in gadgets and user scripts, such as the autofill button on refToolbar.

Wikis with Citoid enabled (affected wikis):

Generated using Wikimedia Global Search on 2023-05-10 15:29

WikiPage title
ary.wikipediaميدياويكي:Citoid-template-type-map.json
arz.wikipediaميدياويكى:Citoid-template-type-map.json
azb.wikipediaمدیاویکی:Citoid-template-type-map.json
ban.wikipediaMédiaWiki:Citoid-template-type-map.json
bar.wikipediaMediaWiki:Citoid-template-type-map.json
bh.wikipediaमीडियाविकि:Citoid-template-type-map.json
bjn.wikipediaMediaWiki:Citoid-template-type-map.json
bn.wikipediaমিডিয়াউইকি:Citoid-template-type-map.json
bs.wikipediaMediaWiki:Citoid-template-type-map.json
ca.wikipediaMediaWiki:Citoid-template-type-map.json
ca.wikiquoteMediaWiki:Citoid-template-type-map.json
ckb.wikipediaمیدیاویکی:Citoid-template-type-map.json
cs.wikipediaMediaWiki:Citoid-template-type-map.json
cs.wikiversityMediaWiki:Citoid-template-type-map.json
cy.wikipediaMediaWici:Citoid-template-type-map.json
dag.wikipediaMiidiyaWiki:Citoid-template-type-map.json
de.wikipediaMediaWiki:Citoid-template-type-map.json
de.wiktionaryMediaWiki:Citoid-template-type-map.json
el.wikipediaMediaWiki:Citoid-template-type-map.json
en.wikibooksMediaWiki:Citoid-template-type-map.json
en.wikiversityMediaWiki:Citoid-template-type-map.json
en.wiktionaryMediaWiki:Citoid-template-type-map.json
es.wikiversityMediaWiki:Citoid-template-type-map.json
et.wikipediaMediaWiki:Citoid-template-type-map.json
eu.wikipediaMediaWiki:Citoid-template-type-map.json
ext.wikipediaMediaWiki:Citoid-template-type-map.json
fi.wikibooksJärjestelmäviesti:Citoid-template-type-map.json
fr.wikibooksMediaWiki:Citoid-template-type-map.json
fr.wikiversityMediaWiki:Citoid-template-type-map.json
ga.wikipediaMediaWiki:Citoid-template-type-map.json
gl.wikipediaMediaWiki:Citoid-template-type-map.json
gom.wikipediaमिडियाविकी:Citoid-template-type-map.json
gom.wiktionaryमिडियाविकी:Citoid-template-type-map.json
gor.wikipediaMediaWiki:Citoid-template-type-map.json
gu.wikipediaમીડિયાવિકિ:Citoid-template-type-map.json
hi.wikipediaमीडियाविकि:Citoid-template-type-map.json
hi.wikibooksमीडियाविकि:Citoid-template-type-map.json
hi.wikiversityमीडियाविकि:Citoid-template-type-map.json
hi.wiktionaryमीडियाविकि:Citoid-template-type-map.json
hr.wikipediaMediaWiki:Citoid-template-type-map.json
ht.wikipediaMedyaWiki:Citoid-template-type-map.json
hu.wikipediaMediaWiki:Citoid-template-type-map.json
hy.wikipediaMediaWiki:Citoid-template-type-map.json
hyw.wikipediaMediaWiki:Citoid-template-type-map.json
ig.wikipediaMidiaWiki:Citoid-template-type-map.json
ilo.wikipediaMediaWiki:Citoid-template-type-map.json
is.wikipediaMelding:Citoid-template-type-map.json
is.wikibooksMelding:Citoid-template-type-map.json
it.wikipediaMediaWiki:Citoid-template-type-map.json
jv.wikipediaMédhiaWiki:Citoid-template-type-map.json
ka.wikipediaმედიავიკი:Citoid-template-type-map.json
km.wikipediaមេឌាវិគី:Citoid-template-type-map.json
ko.wikipedia미디어위키:Citoid-template-type-map.json
ko.wikinews미디어위키:Citoid-template-type-map.json
ks.wikipediaمیٖڈیاوِکی:Citoid-template-type-map.json
ku.wikipediaMediaWiki:Citoid-template-type-map.json
lb.wikipediaMediaWiki:Citoid-template-type-map.json
lv.wikipediaMediaWiki:Citoid-template-type-map.json
min.wikipediaMediaWiki:Citoid-template-type-map.json
mk.wikipediaМедијаВики:Citoid-template-type-map.json
ml.wikipediaമീഡിയവിക്കി:Citoid-template-type-map.json
mni.wikipediaꯃꯦꯗꯤꯌꯥꯋꯤꯀꯤ:Citoid-template-type-map.json
mni.wiktionaryꯃꯦꯗꯤꯌꯥꯋꯤꯀꯤ:Citoid-template-type-map.json
mn.wikipediaМедиаВики:Citoid-template-type-map.json
mr.wikipediaमिडियाविकी:Citoid-template-type-map.json
mr.wikibooksमिडियाविकी:Citoid-template-type-map.json
mr.wikisourceमिडियाविकी:Citoid-template-type-map.json
mt.wikipediaMediaWiki:Citoid-template-type-map.json
nds.wikipediaMediaWiki:Citoid-template-type-map.json
ne.wikipediaमीडियाविकि:Citoid-template-type-map.json
nn.wikipediaMediaWiki:Citoid-template-type-map.json
no.wikipediaMediaWiki:Citoid-template-type-map.json
or.wikipediaମିଡ଼ିଆଉଇକି:Citoid-template-type-map.json
pa.wikipediaਮੀਡੀਆਵਿਕੀ:Citoid-template-type-map.json
pt.wikinewsMediaWiki:Citoid-template-type-map.json
sat.wikipediaᱢᱤᱰᱤᱭᱟᱣᱤᱠᱤ:Citoid-template-type-map.json
sa.wikipediaमीडियाविकि:Citoid-template-type-map.json
sco.wikipediaMediaWiki:Citoid-template-type-map.json
sc.wikipediaMediaWiki:Citoid-template-type-map.json
sd.wikipediaذريعات وڪي:Citoid-template-type-map.json
sh.wikipediaMediaWiki:Citoid-template-type-map.json
simple.wikipediaMediaWiki:Citoid-template-type-map.json
sk.wikipediaMediaWiki:Citoid-template-type-map.json
sl.wikipediaMediaWiki:Citoid-template-type-map.json
smn.wikipediaSysteemviestâ:Citoid-template-type-map.json
sq.wikipediaMediaWiki:Citoid-template-type-map.json
sr.wikipediaМедијавики:Citoid-template-type-map.json
su.wikipediaMédiaWiki:Citoid-template-type-map.json
sw.wikipediaMediaWiki:Citoid-template-type-map.json
ta.wikipediaமீடியாவிக்கி:Citoid-template-type-map.json
tcy.wikipediaಮಾದ್ಯಮೊ ವಿಕಿ:Citoid-template-type-map.json
test2.wikipediaMediaWiki:Citoid-template-type-map.json
test.wikipediaMediaWiki:Citoid-template-type-map.json
te.wikipediaమీడియావికీ:Citoid-template-type-map.json
tg.wikipediaМедиавики:Citoid-template-type-map.json
th.wikipediaมีเดียวิกิ:Citoid-template-type-map.json
tl.wikipediaMediaWiki:Citoid-template-type-map.json
tw.wikipediaMediaWiki:Citoid-template-type-map.json
ur.wikipediaمیڈیاویکی:Citoid-template-type-map.json
uz.wikipediaMediaWiki:Citoid-template-type-map.json
vec.wikipediaMediaWiki:Citoid-template-type-map.json
xh.wikipediaMediaWiki:Citoid-template-type-map.json
zh-yue.wikipediaMediaWiki:Citoid-template-type-map.json
fa.wikipediaمدیاویکی:Citoid-template-type-map.json
he.wikipediaמדיה ויקי:Citoid-template-type-map.json
id.wikipediaMediaWiki:Citoid-template-type-map.json
nl.wikipediaMediaWiki:Citoid-template-type-map.json
pl.wikipediaMediaWiki:Citoid-template-type-map.json
ro.wikipediaMediaWiki:Citoid-template-type-map.json
sv.wikipediaMediaWiki:Citoid-template-type-map.json
tr.wikipediaMediaWiki:Citoid-template-type-map.json
uk.wikipediaMediaWiki:Citoid-template-type-map.json
vi.wikipediaMediaWiki:Citoid-template-type-map.json
zh.wikipediaMediaWiki:Citoid-template-type-map.json
ar.wikipediaميدياويكي:Citoid-template-type-map.json
fi.wikipediaJärjestelmäviesti:Citoid-template-type-map.json
pt.wikipediaMediaWiki:Citoid-template-type-map.json
es.wikipediaMediaWiki:Citoid-template-type-map.json
ja.wikipediaMediaWiki:Citoid-template-type-map.json
fr.wikipediaMediaWiki:Citoid-template-type-map.json
ru.wikipediaMediaWiki:Citoid-template-type-map.json
meta.wikimediaMediaWiki:Citoid-template-type-map.json
en.wikipediaMediaWiki:Citoid-template-type-map.json

Details

Other Assignee
Quiddity

Event Timeline

Mvolz updated the task description. (Show Details)
Mvolz updated the task description. (Show Details)
Mvolz updated the task description. (Show Details)
Mvolz updated the task description. (Show Details)
Mvolz updated the task description. (Show Details)
Peachey88 renamed this task from no ISBN support in Citoid to User notice for no ISBN support in Citoid.May 9 2023, 8:30 PM
Elitre triaged this task as High priority.
Elitre updated the task description. (Show Details)

Is this a security issue? Has anyone contacted WorldCat to find out why our API access stopped working? According to pages like https://help.oclc.org/Librarian_Toolbox/OCLC_APIs/Troubleshooting/How_do_I_request_an_API_WSKey and https://www.oclc.org/en/partnerships.html#section-apiservices the API seems to be available, including to organizations.

Mvolz updated the task description. (Show Details)
Mvolz updated the task description. (Show Details)
Mvolz updated the task description. (Show Details)

Is this a security issue? Has anyone contacted WorldCat to find out why our API access stopped working? According to pages like https://help.oclc.org/Librarian_Toolbox/OCLC_APIs/Troubleshooting/How_do_I_request_an_API_WSKey and https://www.oclc.org/en/partnerships.html#section-apiservices the API seems to be available, including to organizations.

Please see my comment at T336297#8842993 - we know what the issue is, it's just going to take some effort to resolve.

I just sent the Mass message, please LMK if there's any problem with it. I'd like to publicly thank my many colleagues at WMF who are working hard to resolve this issue, and I ask for your patience and understanding on the matter. I'll make sure that this task is updated whenever we have anything worth sharing.

Elitre lowered the priority of this task from High to Medium.May 11 2023, 7:50 PM

Stupid question. Is the Open Library API https://openlibrary.org/dev/docs/api/books a usable alternative? In particular ISBN via the .json format?

Frostly subscribed.

Stupid question. Is the Open Library API https://openlibrary.org/dev/docs/api/books a usable alternative? In particular ISBN via the .json format?

I presume that Open Library is not as comprehensive (it's the same as any other downstream collection like Google Books, it doesn't contain all possible ISBNs).

Confirmed w/ Mek @ IA that there should be no problem hitting their /isbn endpoint at 5rps.
We may want to start with OL as the primary resolver, and only fall back to Worldcat if OL doesn't have full metadata for that ISBN - especially if WC continues with its quota system.

In T336298#8849499, @EpicPupper wrote:

Stupid question. Is the Open Library API https://openlibrary.org/dev/docs/api/books a usable alternative? In particular ISBN via the .json format?

I presume that Open Library is not as comprehensive (it's the same as any other downstream collection like Google Books, it doesn't contain all possible ISBNs).

WorldCat also doesn't contain all possible books. For example many Polish books are not there (or was not there last time I checked).

In OpenLibrary you can also add a book if it is missing so that is a bit better.

Note that OL can be integrated into e.g. refToolbar. It does allow CORS, so it can be used directly (without proxy). You neeed two API calls because the author is not provided in ISBN call.

var re = await fetch("https://openlibrary.org/isbn/9780140328721.json", {
	"credentials": "omit",
	"method": "GET",
	"mode": "cors"
});
var json = await re.json();
console.log(json);
// 1st author
var authorKey = json.authors[0].key;
var author = await fetch('https://openlibrary.org/authors/OL34184A.json', {
	"credentials": "omit",
	"method": "GET",
	"mode": "cors"
})
.then(response => response.json())
;
console.log(author);

I've written a tool for OL itself, but it can be changed to support refToolbar or a standalone on-wiki gadget. See load function here:
https://github.com/Eccenux/wiki-CytujOpenLibrary/blob/master/CytujOpenLibrary.user.js#L18

Instead of readAuthors() call you just need to do above, extra call.

In T336298#8849499, @EpicPupper wrote:

Stupid question. Is the Open Library API https://openlibrary.org/dev/docs/api/books a usable alternative? In particular ISBN via the .json format?

I presume that Open Library is not as comprehensive (it's the same as any other downstream collection like Google Books, it doesn't contain all possible ISBNs).

In T336298#8849508, @Sj wrote:

Confirmed w/ Mek @ IA that there should be no problem hitting their /isbn endpoint at 5rps.
We may want to start with OL as the primary resolver, and only fall back to Worldcat if OL doesn't have full metadata for that ISBN - especially if WC continues with its quota system.

This is a great suggestion - we have now enabled Zotero's isbn endpoint internally, which uses Library of Congress, BnF ISBN (French library), and K10plus ISBN (German repository) (T336727). I'm not sure how IA compares to LoC in terms of coverage? Definitely worth looking into. I know there is an IA translator in Zotero but not for the isbn endpoint.

I've been using Zotero for managing my personal library extensively over the years. It always used to be superior to the solution we had in Citoid. So I would second using Zotero's ISBN endpoint in Citoid. The Internet Archive cannot be better than that because the national libraries' catalogues are the reference for metadata of any book in print. I'm looking forward to the improvements you are about to implement!

Zotero seems ideal. Thank you!

@Mvolz @VPuffetMichel Please let us know if this should be resolved just by adding a note about it in Tech News.

After some testing in my fields of interest I just would like to thank you for this major improvement in Citoid! In fact, it's amazing, much better that what we've had before. :)

Unfortunately, as for now, many books issued in Poland are not covered. However, @Nux informed me that he had already added the Polish 'National Library' database, which, he hopes, will be included in the next implementation.

I presume that Open Library is not as comprehensive (it's the same as any other downstream collection like Google Books, it doesn't contain all possible ISBNs).

Not a safe assumption. I don't know what you mean by "downstream" or "all possible", but OpenLibrary attempts to import all known ISBN codes with sufficient metadata. Some of their sources can be seen at:

ISBNdb is more comprehensive, but their licensing is less clear.

I'm not sure how IA compares to LoC in terms of coverage?

LoC dumps get imported somewhat regularly, I'm not sure about updates between dump releases. It's possible to inspect the dumps to compare: https://openlibrary.org/developers/dumps

So I would second using Zotero's ISBN endpoint in Citoid. The Internet Archive cannot be better than that because the national libraries' catalogues are the reference for metadata of any book in print.

Yes and no. Zotero is great and we should use it wherever possible, but it's impractical to run it through hundreds of targets. So it would be far easier to target a meta-catalogue.

Not all national libraries are tasked with cataloguing the entire national book production, and those who do tend to be more active in the open data field, which means their data is more likely to be in OpenLibrary.

K10plus is amazing but it probably skews towards books published in USA/Europe. OpenLibrary can be a good default to cover anything else which we don't know where to search.

Well, not exactly. A meta catalogue is always inferior to the original source because information gets lost. Citoid never worked fine as long as we had only WorldCat there. No objections to additional sources, but please leave K1plus, as is now.

I presume that Open Library is not as comprehensive (it's the same as any other downstream collection like Google Books, it doesn't contain all possible ISBNs).

Not a safe assumption. I don't know what you mean by "downstream" or "all possible", but OpenLibrary attempts to import all known ISBN codes with sufficient metadata. Some of their sources can be seen at:

ISBNdb is more comprehensive, but their licensing is less clear.

I'm not sure how IA compares to LoC in terms of coverage?

LoC dumps get imported somewhat regularly, I'm not sure about updates between dump releases. It's possible to inspect the dumps to compare: https://openlibrary.org/developers/dumps

So I would second using Zotero's ISBN endpoint in Citoid. The Internet Archive cannot be better than that because the national libraries' catalogues are the reference for metadata of any book in print.

Yes and no. Zotero is great and we should use it wherever possible, but it's impractical to run it through hundreds of targets. So it would be far easier to target a meta-catalogue.

Not all national libraries are tasked with cataloguing the entire national book production, and those who do tend to be more active in the open data field, which means their data is more likely to be in OpenLibrary.

K10plus is amazing but it probably skews towards books published in USA/Europe. OpenLibrary can be a good default to cover anything else which we don't know where to search.

Well, not exactly. A meta catalogue is always inferior to the original source because information gets lost. Citoid never worked fine as long as we had only WorldCat there. No objections to additional sources, but please leave K1plus, as is now.

I think our policy is definitely going to be to keep the existing translators that Zotero offers (primarily at this point because they understand their codebase best).

There is some comment from the Zotero developers on whether and how many national libraries to target in the PR for the Poland translator @Nux wrote here: https://github.com/zotero/translators/pull/3036

I think the consensus there seems to be that be filtering by the isbn prefix (which has location information) is a good way to enable a proliferation of more translators for the time being.

Targeting of more meta catalogues would probably be something we'd want to discuss with them too, but to me it seems like a good idea to me as a fall back option for where we don't have a national library data, because there will be ones we miss.

There is also the possibility of starting to store some of this data on wikidata and making it a meta catalogue... which right now doesn't really have many books. This would enable us to enhance citations with wikilinks to the authors or the book itself on the wiki, but that'd be pretty pie in the sky at this point.

This ticket is probably the most appropriate place to continue this -> T212585

@Mvolz I think we're technically done with the scope of this task? Thanks.