aboutsummaryrefslogtreecommitdiffstats
path: root/fix_invalid_issnl.py
diff options
context:
space:
mode:
authorBryan Newbold <bnewbold@archive.org>2019-12-23 19:16:20 -0800
committerBryan Newbold <bnewbold@archive.org>2019-12-23 19:16:20 -0800
commit3232f9509404c75777f23d7272416d8de4a45789 (patch)
tree6a5224d60b14cead9cf4b34ba2e8277e8712437b /fix_invalid_issnl.py
parentf8db4ee808b8e4db0ec413ad942f8129478041cc (diff)
downloadchocula-3232f9509404c75777f23d7272416d8de4a45789.tar.gz
chocula-3232f9509404c75777f23d7272416d8de4a45789.zip
move old scripts into subdirectory
Diffstat (limited to 'fix_invalid_issnl.py')
-rwxr-xr-xfix_invalid_issnl.py75
1 files changed, 0 insertions, 75 deletions
diff --git a/fix_invalid_issnl.py b/fix_invalid_issnl.py
deleted file mode 100755
index 521f334..0000000
--- a/fix_invalid_issnl.py
+++ /dev/null
@@ -1,75 +0,0 @@
-#!/usr/bin/env python3
-
-"""
-This is a one-off script for pushing ISSN-L fixes to fatcat via the API.
-
-It excpects to have fatcat python libraries available. Run it like:
-
- export FATCAT_API_AUTH_TOKEN="..."
- ./fix_invalid_issnl.py ~/code/chocula/invalid_fatcat_issnl.tsv
-
-It creates a new editgroup, which you'll need to merge/accept manually.
-
-Defaults to QA API endpoint; edit the file to switch to prod.
-"""
-
-import os, sys
-import csv
-
-from fatcat_tools import authenticated_api
-from fatcat_client import Editgroup, ContainerEntity
-from fatcat_client.rest import ApiException
-
-API_ENDPOINT = "https://api.qa.fatcat.wiki/v0"
-
-
-def run(api, row_iter):
-
- eg = api.create_editgroup(Editgroup(description=
- "Update or merge containers with invalid (by checksum) ISSN-L. Using the fix_invalid_issnl.py script from chocula repo."))
- print("Editgroup ident: {}".format(eg.editgroup_id))
- for row in row_iter:
- #print(row)
- fixed_issnl = row['fixed_issnl'].strip()
- if not fixed_issnl:
- print("SKIP")
- continue
- assert row['issnl'].strip() != fixed_issnl
- invalid = api.get_container(row['fatcat_ident'])
- assert invalid.state == "active"
- try:
- fixed = api.lookup_container(issnl=row['fixed_issnl'])
- except ApiException as ae:
- if ae.status != 404:
- raise ae
- fixed = None
-
- if fixed:
- # merge/redirect
- assert fixed.state == "active"
- print("MERGE: {} -> {}".format(invalid.ident, fixed.ident))
- invalid.redirect = fixed.ident
- api.update_container(eg.editgroup_id, invalid.ident,
- ContainerEntity(redirect=fixed.ident))
- else:
- # update in-place with fixed ISSN-L
- print("FIX: {}: {}".format(invalid.ident, fixed_issnl))
- invalid.issnl = fixed_issnl
- api.update_container(eg.editgroup_id, invalid.ident, invalid)
-
- # intentionally not merging editgroup
- print("Editgroup ident: {}".format(eg.editgroup_id))
- print("DONE")
-
-def main():
- api = authenticated_api(
- API_ENDPOINT,
- # token is an optional kwarg (can be empty string, None, etc)
- token=os.environ.get("FATCAT_API_AUTH_TOKEN"))
-
- path = sys.argv[1]
- reader = csv.DictReader(open(path), delimiter='\t')
- run(api, reader)
-
-if __name__ == '__main__':
- main()