{"id":21620820,"url":"https://github.com/miku/issnlister","last_synced_at":"2025-04-11T09:19:11.682Z","repository":{"id":63536559,"uuid":"220986309","full_name":"miku/issnlister","owner":"miku","description":"List of valid, registered ISSN ","archived":false,"fork":false,"pushed_at":"2024-04-10T11:39:22.000Z","size":156315,"stargazers_count":10,"open_issues_count":1,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-04-10T12:40:59.547Z","etag":null,"topics":["code4lib","harvest","issn","metadata"],"latest_commit_sha":null,"homepage":"https://git.io/Jf8sa","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/miku.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2019-11-11T13:22:46.000Z","updated_at":"2024-04-23T11:52:14.568Z","dependencies_parsed_at":"2023-02-10T10:00:35.590Z","dependency_job_id":"c847f117-0ed7-4467-896a-c3b0fdbbdaa4","html_url":"https://github.com/miku/issnlister","commit_stats":{"total_commits":171,"total_committers":2,"mean_commits":85.5,"dds":0.005847953216374324,"last_synced_commit":"5967c7542411dad56bbfa8430bcba55575be8652"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miku%2Fissnlister","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miku%2Fissnlister/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miku%2Fissnlister/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miku%2Fissnlister/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/miku","download_url":"https://codeload.github.com/miku/issnlister/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248366928,"owners_count":21092068,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["code4lib","harvest","issn","metadata"],"created_at":"2024-11-24T23:13:01.609Z","updated_at":"2025-04-11T09:19:11.673Z","avatar_url":"https://github.com/miku.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ISSN lister\n\nThis [project](https://github.com/miku/issnlister) aims to provide a fairly current\n[list of valid ISSN](https://git.io/Jf8sa). It was developed at the [Internet\nArchive](https://archive.org/).\n\n\u003e ISSN-LIST-DATE: 2025-04-07 -- [download](https://git.io/Jf8sa)\n\u003e COUNT: 2409515\n\nPublicly available metadata has been archived at:\n\n* [https://archive.org/details/issn_public_data_20191125](https://archive.org/details/issn_public_data_20191125)\n\n## International Standard Serial Number\n\n[International Standard Serial\nNumber](https://en.wikipedia.org/wiki/International_Standard_Serial_Number), is\nan eight-digit serial number used to uniquely identify a serial publication,\nsuch as a magazine.\n\nIssuing organisation: [issn.org](http://www.issn.org/).\n\n\u003e The CIEPS, also known as the ISSN International Centre, is an\nintergovernmental organization which manages at the international level the\nidentification and the description of serial publications and ongoing\nresources, print and online, in any subject.\n\n## Variants\n\n* E-ISSN (electronic), P-ISSN (print), ISSN-L (link)\n\n\u003e Conversely, as defined in ISO 3297:2007, every serial in the ISSN system is\nalso assigned a linking ISSN (ISSN-L), typically the same as the ISSN assigned\nto the serial in its first published medium, which links together all ISSNs\nassigned to the serial in every medium\n\n## Usage\n\n```\n$ issnlister -h\nUsage of issnlister:\n  -b int\n        batch size per worker (default 100)\n  -c string\n        continue harvest into a given file (implies -m)\n  -d string\n        path to cache dir (default \"/home/tir/.cache/issnlister\")\n  -i string\n        path to file with ISSN to ignore, one ISSN per line, e.g. ...\n  -l    list all cached issn, one per line\n  -m    download public metadata in JSON format\n  -q    suppress any extra output\n  -s string\n        the main sitemap (default \"https://portal.issn.org/sitemap.xml\")\n  -ua string\n        set user agent (default \"issnlister/0.1.0 (https://github.com/miku/issnlister)\")\n  -version\n        show version\n  -w int\n        number of workers (default 16)\n```\n\n## Generate a new list\n\nUpdate list and README with a simple `make issn.tsv` (assuming sed, awk and sort installed).\n\n## Start a harvest or continue a harvest\n\nWith `-c` you can start or continue an interrupted harvest into the same file.\n\n```\n$ issnlister -c file.ndj\n```\n\n## Basic ISSN validation\n\n```python\ndef calculate_issn_checkdigit(s):\n    \"\"\"\n    Given a string of length 7, return the ISSN check digit.\n    \"\"\"\n    if len(s) != 7:\n        raise ValueError('seven digits required')\n    ss = sum([int(digit) * f for digit, f in zip(s, range(8, 1, -1))])\n    _, mod = divmod(ss, 11)\n    checkdigit = 0 if mod == 0 else 11 - mod\n    if checkdigit == 10:\n        checkdigit = 'X'\n    return '{}'.format(checkdigit)\n```\n\n## Number of ISSN\n\n* ~2714711 (as of 2019-11-11 per website), but\n\nGrowth at about 50k to 120k updates and additions per year.\n\n```\n$ curl -sL https://git.io/Jf8sa | wc -l\n2139915\n```\n\n## Upper limit of valid ISSN?\n\n* 10^7\n\nCurrent probability that a random, valid ISSN is registered: ~0.213 (2020-05-12).\n\n## Distribution\n\nSnapshot, 2019-11-11, 15:00, UTC+1.\n\n![](static/map.png)\n\n## Formats\n\nVarious formats are available.\n\n* [xml](https://portal.issn.org/resource/ISSN/2257-6754?format=xml), [json](https://portal.issn.org/resource/ISSN/2257-6754?format=json), ...\n\n## List of ISSN\n\nList ISSN, quietly.\n\n```\n$ issnlister -l -q\n```\n\nAll data is cached\n([XDG](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html)),\nby default under `$HOME/.cache/issnlister/2019-11-11/...` where raw downloads\nand combined data lives.\n\nAlternatively:\n\n```\n$ find ~/.cache/issnlister/2019-11-20 -name 'sitemap*xml' -exec 'cat' {} \\; | \\\n    grep 'https://portal.issn.org/resource/ISSN/[^\"]*' | \\\n    grep -oE '[0-9]{4}-[0-9]{3}[0-9xX]' | LC_ALL=C sort -u\n```\n\n## Bulk ISSN check\n\nThere is a bulk ISSN check tool included in this repo, `issncheck`. It does not\ncheck whether a ISSN is \"valid\" (that's an [algorithm](https://en.wikipedia.org/wiki/ISSN#Code_format)), but whether it \"actually exists\" (which is a dataset; with some\nlatency, since the binary [embeds](https://pkg.go.dev/embed) the data).\n\nTo build:\n\n```\n$ make issncheck\n```\n\nYou need to feed it one ISSN per line to stdin - it will output a TSV with \"0\", \"1\" or \"X\" (unparsable) and the value.\n\n```\n$ head -10 sample.tsv\n20140827\n1932-6203\n0000-0002\n00032489\n0030-1558\n2009-1005\n31735070\n1476-2986\n31735066\n0000-0003\n\n$ cat sample.tsv | ./issncheck\n1       2014-0827\n1       1932-6203\n0       0000-0002\n0       0003-2489\n1       0030-1558\n0       2009-1005\n0       3173-5070\n1       1476-2986\n0       3173-5066\n0       0000-0003\n```\n\nData point: The `issncheck` tool can verify about 700K ISSN per second on a\n[i7-8550U](https://www.intel.com/content/www/us/en/products/sku/122589/intel-core-i78550u-processor-8m-cache-up-to-4-00-ghz/specifications.html).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmiku%2Fissnlister","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmiku%2Fissnlister","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmiku%2Fissnlister/lists"}