{"id":13583374,"url":"https://github.com/animetosho/Nyuu","last_synced_at":"2025-04-06T18:32:17.858Z","repository":{"id":38431371,"uuid":"53252715","full_name":"animetosho/Nyuu","owner":"animetosho","description":"Flexible usenet binary posting tool","archived":false,"fork":false,"pushed_at":"2025-02-05T11:15:46.000Z","size":977,"stargazers_count":243,"open_issues_count":19,"forks_count":36,"subscribers_count":20,"default_branch":"master","last_synced_at":"2025-04-05T16:48:14.187Z","etag":null,"topics":["nntp","nzb","usenet","usenet-posters","usenet-uploader"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/animetosho.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"publiccode":null,"codemeta":null}},"created_at":"2016-03-06T12:02:27.000Z","updated_at":"2025-03-29T13:35:29.000Z","dependencies_parsed_at":"2024-01-14T09:59:54.494Z","dependency_job_id":"86304e5e-7da9-44fc-8547-c70f1f06ac5d","html_url":"https://github.com/animetosho/Nyuu","commit_stats":null,"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/animetosho%2FNyuu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/animetosho%2FNyuu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/animetosho%2FNyuu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/animetosho%2FNyuu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/animetosho","download_url":"https://codeload.github.com/animetosho/Nyuu/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247369937,"owners_count":20927927,"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":["nntp","nzb","usenet","usenet-posters","usenet-uploader"],"created_at":"2024-08-01T15:03:26.044Z","updated_at":"2025-04-06T18:32:17.165Z","avatar_url":"https://github.com/animetosho.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"Nyuu\n====\n\n\u003e   *A powerful beast hidden by a deceptively cute exterior*\n\nNyuu is a **command-line [binary usenet poster](\u003chttps://en.wikipedia.org/wiki/Usenet#Binary_content\u003e)**.\n\nNyuu is designed primarily to be fast/efficient, reliable and customizable,\nexposing all the interesting bits and pieces. From what I’ve seen, Nyuu excels\nmore than any other usenet posting client in these aspects.\n\nNyuu runs on top of node.js (which *everyone* knows is [bad ass rock star\ntech](https://www.youtube.com/watch?v=bzkRVzciAZg)) with minimal dependencies.\nIt does require one compiled module,\n[yencode](https://animetosho.org/app/node-yencode), for ultra fast yEnc and\nCRC32 calculation.\n\nFeatures\n========\n\n**All the standard stuff:** i.e. Nyuu doesn’t miss out on what you need\n\n-   NNTP SSL support\n\n-   yEnc encoding\n\n-   NZB creation, with minification \u0026 compression\n\n-   Sub-directory handling\n\n**Fast \u0026 efficient:** Nyuu is amongst the fastest (if not [the\nfastest](bench/info.md#benchmark-2)) usenet posters, designed to run on low\npower, overloaded servers with \\\u003e= 1Gbps connections\n\n-   Multiple uploading connections\n\n-   Post checking is asynchronous (minimal impact on speed)\n\n-   Fastest yEnc and CRC32 implementations\n\n-   Buffered async I/O (minimise the effects of slow disks)\n\n-   No temporary files, no disk writes (except for writing the NZB output)\n\n-   No unnecessary disk reads - only performs a single, sequential read pass\n    over files\n\n    -   If a post needs to be resubmitted, due to a check failure, and it is not\n        cached, it will need to be re-read off disk\n\n    -   PAR2 generation (when integrated) will require an extra initial pass of\n        just the first 16KB of each file, and may require multiple read passes\n        if all recovery blocks cannot fit in memory\n\n**Reliable:** Nyuu was designed for automation and its reliability requirements\n\n-   Requests are all retryable\n\n-   Able to recover from connection failures/dropouts\n\n-   Timeouts and limits to deal with unexpected server hangs or faults\n\n-   Can selectively skip/ignore some errors\n\n-   Post checking (aka header checks), with multiple attempts and post retrying\n\n-   Unusual or unexpected events are logged\n\n-   Includes some optional workarounds for server bugs\n\n**Highly configurable:** tuning knobs for everything\n\n-   Lots of connection and SSL options\n\n-   NNTP article posting: article/line sizes, header customisation\n\n-   Configure timeouts, delays and error handling parameters\n\n-   NZB meta tags\n\n**Unique features:** the not so usual stuff\n\n-   Pipe input/output from/to processes instead of files, plus the ability to\n    pipe out a copy of read input to an external process without incurring\n    additional disk reads\n\n-   Extensive upload diagnostic details available (via optional TCP/HTTP status\n    server) to help tune settings or find problems\n\nInstallation \u0026 Requirements\n===========================\n\nPre-Built Binaries\n------------------\n\nStatic pre-built binaries with Node 4.x may be found on [the releases\npage](https://github.com/animetosho/Nyuu/releases) if I can be bothered to\nprovide them. These can simply be extracted and run.\n\n### Arch\n\nArchlinux users can install the latest binary-release by installing `nyuu-bin` from the AUR.\n\n*Please note that [this Package](https://aur.archlinux.org/packages/nyuu-bin/) is maintained by a third party and not officially supported. If you have an issue please contact the maintainer.*\n\nInstall Via NPM\n---------------\n\nIf NPM is installed (usually comes bundled with\n[node.js](https://nodejs.org/en/download/)), the following command can be used\nto install Nyuu:\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nnpm install -g nyuu --production\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nYou’ll then be able to run Nyuu via the **nyuu** command.\n\nIf the **npm** command isn’t available, it can probably be installed via your\npackage manager (`apt-get install npm` for Debian), or see the following section\ntitled “Node.js” for more details.\n\nIf you get a `gyp ERR! stack Error: EACCES: permission denied` error when installing, try the following command instead:\n\n```\nnpm install -g nyuu --production --unsafe-perm\n```\n\nNote: on some systems, you won’t get an error during installation, but when running Nyuu, it crashes with the error `Error: Cannot find module './build/Release/yencode.node'`. If that is the case, you may need to run the above command to get it to install properly.\n\nYou can then later uninstall Nyuu via:\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nnpm uninstall -g nyuu\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nInstall From Source\n-------------------\n\nNote that code from Git is considered to be unstable (or rather, less stable\nthan release versions). Stable packages can be found on [the releases\npage](https://github.com/animetosho/Nyuu/releases).\n\n### Node.js\n\nNyuu should run on node.js 0.10.x and later. Recent Linux distributions should\nhave *nodejs* in their repositories, otherwise, see [installing via package\nmanager](https://nodejs.org/en/download/package-manager/) or\n[NodeSource](https://github.com/nodesource/distributions). For Windows/OSX\nbuilds, they [can be found here](https://nodejs.org/en/download/stable/).\nAlthough node.js 0.10.x is supported, newer versions of Node (\\\u003e=4 recommended)\nprovide greatly improved SSL performance.\n\n### Dependencies\n\nIf you have NPM installed (may come with your install of NodeJS, or you may need\nto install it like you did with NodeJS if your package system doesn’t include\nthem together), the following command (executed inside the Nyuu directory) is\nall you need to set up the dependencies:\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nnpm install --production\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIf you don’t want to use NPM, you can use your package manager instead if it has\nall the necessary packages - on Debian 8 / Ubuntu 14.04:\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\napt-get install node-async\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nAlternatively, you can grab the dependencies manually: create a directory named\n*node_modules* in the Nyuu directory. Inside of which, place\n[async](https://github.com/caolan/async/releases).\n\nFor yencode, you’ll need to place it in the *node_modules* directory as well,\nthen follow [the installation\ninstructions](https://animetosho.org/app/node-yencode).\n\nAt the end, the folder structure should resemble something like (not all files\nshown):\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nNyuu/\n- bin/\n- lib/\n- node_modules/\n  - async/\n    - package.json\n  - yencode/\n    - index.js\npackage.json\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n### “no suitable image found” error on MacOS 10.15\n\nDue to security changes in OSX 10.15, libraries may require code signing to work. To deal with this, you’ll either need to [disable this security option](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_disable-library-validation?language=objc) or [codesign the built yencode module](https://successfulsoftware.net/2018/11/16/how-to-notarize-your-software-on-macos/). Note that I do not have OSX and can’t provide much support for the platform.\n\n### Executable\n\nOnce dependencies have been installed, Nyuu can be run via `node bin/nyuu` or\n`nodejs bin/nyuu`. If you wish to just use `nyuu` instead, you need to link to\nit from somewhere your *PATH* environment points to. For example, on Linux you\nmight do\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nln -s \"`pwd`/bin/nyuu.js\" /usr/bin/nyuu\nchmod a+x bin/nyuu.js\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n(if Node is running via *nodejs* instead of *node*, you can edit the first line\nin *bin/nyuu.js* to fix this)\n\nFor Windows, you can make a file named *nyuu.cmd* and place it in your system\ndirectory, with the following contents:\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n@\"C:\\node\\node.exe\" \"C:\\path\\to\\nyuu\\bin\\nyuu.js\" %*\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n(obviously, fix the paths to what they actually are)\n\nDevelopment\n===========\n\nRunning Tests\n-------------\n\nTests are run via *mocha*, installable via `npm install -g mocha`, and can be\nrun simply by using the `mocha` command inside Nyuu’s root directory.  \nNote that some test cases test functionality of timeouts; to reduce time it\ntakes to run these tests, timeouts are set relatively small, which means that a\nslow computer may not be able to service them as expected.\n\nBuilding Binary\n---------------\n\nA basic script to compile the Nyuu binary is provided in the *nexe* folder. The script has been tested with NodeJS 12.20.0 and may work on other 12.x.x versions. For NodeJS 8.x.x and older, see section below.\n\n1. If you haven’t done so already, do an `npm install` in Nyuu’s folder to ensure its dependencies are available\n2. Enter the *nexe* folder and do an `npm install` to pull down required build packages (note, nexe requires NodeJS 10 or greater)\n3. If desired, edit the variables at the top of *nexe/build.js*\n4. Run `node build`. If everything worked, there’ll eventually be a *nyuu* or *nyuu.exe* binary built.\n   If it fails during compilation, enter the *nexe/build/12.20.0* (or whatever version of NodeJS you’re using) and get more info by:\n   * Linux: build using the `make` command\n   * Windows: build using `vcbuild.bat` followed by build options, e.g. `vcbuild nosign x86 noetw intl-none release static no-cctest without-intl ltcg`\n5. If building for Linux, optionally `strip` the executable to reduce size\n\n### Building for NodeJS 8.x.x or older\n\nCompiling Nyuu into a single binary can be done via\n[nexe](https://github.com/nexe/nexe) 1.x. There is a little complication with\nbundling the *yencode* module, but a rather fragile script has been supplied in\n*nexe1/build.js* to help with the process. The following general steps need to be\ntaken:\n\n1.  Ensure that *nexe* is installed (doesn’t need to be globally installed) and\n    [its requirements](https://github.com/nexe/nexe#building-requirements) met\n2.  Download a Node.js source package. The script has mostly been tested with\n    Node 4.x.x, it may work with other versions\n3.  The required Nyuu libraries need to be installed into the *node_modules*\n    folder\n4.  Inside the *nexe1* folder (the one containing *build.js*), create the\n    following two folders: *node* and *yencode-src*\n5.  Inside the *node* folder, create a folder with the version number of the\n    package you downloaded in step 2, for example “4.9.1”. Inside *this* folder,\n    create one named “\\_” and place the downloaded sources in this folder. After\n    doing this, the file *nexe1/node/x.x.x/\\_/node.gyp* should exist, where\n    *x.x.x* is the node version number\n6.  Inside the *yencode-src* folder, copy the source code for the *yencode* (v1.0.x)\n    module\n7.  Edit *nexe1/build.js*; options that are likely to be edited are at the top of\n    the file. You’ll likely need to change *nodeVer* to be the version of node\n    you’re using\n8.  You may need to edit *bin/nyuu.js* to fix the location of nexe’s *package.json* path (search *bin/nyuu.js* for `nexe/package.json` and update if necessary)\n9.  In the *nexe1* folder, run *build.js*. This script patches node to embed the\n    yencode module, and customises a few compiler options, then calls nexe to\n    build the final executable. If it worked, you should get a binary named\n    *nyuu* or *nyuu.exe* in the *nexe1* folder\n\nNote that this will be built with the `-flto` option on non-Windows platforms.\nIf this causes build failures, your system’s `ar` utility may not support LTO\nobjects, which can be worked around if you have `gcc-ar` installed by issuing a\ncommand like `export AR=gcc-ar`\n\nUsage\n=====\n\nFor command line usage, [see here](help-full.txt), [or here](help.txt) for a\nsummarized list of options.\n\nDefault Configuration\n---------------------\n\nAs entering long command lines may be tiresome, you may use a config file with\nNyuu via the `--config` or `-C` option. You may use the *config-sample.json*\nfile as reference to what a config file should be like.\n\nIf a config file isn't specified, Nyuu will also search the `NYUU_CONFIG`\nenvironment variable for a default configuration (saving you from needing to\nspecify this file on every run, if you set the environment up in your shell).\n\nPlanned Features\n================\n\n-   Integrate [ParPar](https://animetosho.org/app/parpar) for streaming PAR2\n    creation\n\n-   Streaming 7-Zip creation\n\n-   Improve multi-server support for both posting and checking\n\n-   Repost missing articles from NZB, and/or some sort of resumption support\n\n-   SOCKS proxy support\n\n-   A web (HTTP) interface would be nice as an alternative to the command line\n    interface; not sure if it will be done however\n\nNot planned\n-----------\n\n-   RAR support, since 7-Zip should cover everything  \n\nAlternatives\n============\n\nA list of Usenet posters I’ve come across can [be found\nhere](https://github.com/animetosho/Nyuu/wiki/Usenet-Uploaders).\n\n[Here's a benchmark comparison](bench/info.md) between a few of the command line\nposters.\n\nLicense\n=======\n\nNyuu is **Public Domain** or [CC0](https://creativecommons.org/publicdomain/zero/1.0/legalcode) (or equivalent) if PD isn’t recognised. Use her as you will, at your own risk of course\n(don’t come back crying if you lose a limb or two).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanimetosho%2FNyuu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanimetosho%2FNyuu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanimetosho%2FNyuu/lists"}