• AnyStream is having some DRM issues currently, Netflix is not available in HD for the time being.
    Situations like this will always happen with AnyStream: streaming providers are continuously improving their countermeasures while we try to catch up, it's an ongoing cat-and-mouse game. Please be patient and don't flood our support or forum with requests, we are working on it 24/7 to get it resolved. Thank you.

Discussion Another way to download from Crunchyroll (and Funimation+Hidive)

Jaynator495

Member
Thread Starter
Joined
Sep 17, 2021
Messages
20
Likes
31
Long time lurker, first time really contributing; I hope this helps some people!

I recently saw someone asking about how to download Crunchyroll, and thought it would be useful to share my tool for easily searching and downloading from various anime websites including (for now) Crunchyroll, Funimation, and Hidive.

Notes about the tool:
1) The tool is free and open source
2) The tool has both a GUI & CLI for ease of use.
3) It's available currently for Mac, Ubuntu, Windows, and Arm, (or whatever nodejs is available on if you run the code version)
4) It allows to download multiple languages (of both dub's and sub's) if desired and available
5) Requires ffmpeg and/or mkvmerge if you want to remux the final product into a single file
6) Requires a premium account for the services to download most things (Up to the individual service for what's available without one)

You can find this tool here:

And the documentation for the CLI version here:

The GUI version (I hope) is pretty self-explanatory so I haven't written a documentation for it, but let me know if you have any questions, feedback, or request for either the GUI or CLI and I'll try to implement them if I can


Alright, now that's all out of the way, how to download/use the tool. You have a couple options, there are precompiled releases for all available OS's in the releases section here: https://github.com/anidl/multi-downloader-nx/releases

If you like, you can also compile the tool yourself, detailed instructions for that are available in the readme
 
I downloaded and ran your software and performed a routine security scan using antivirus software and OSINT.
The scan reported a potential Trojan: "Trojan.Agent.Win32.2853154".

I understand that antivirus detections can sometimes yield false positives, particularly when sophisticated scripting or programming methods are involved. However, considering the potential damage a real Trojan could inflict, I am sure you can appreciate my concern.

I have the following questions for your attention:
  1. Could you let me know if you're aware of this issue? Has any other user reported it?
  2. Are there any elements of your software that could lead an antivirus program to flag it as a Trojan?
  3. Can you confirm this is a false positive and not an actual security threat?

Additionally, I noticed that your software makes use of PowerShell. Given the potential security risks associated with PowerShell (if invoked or controlled by malicious programs), such as execution of malicious scripts, bypassing security measures, and potential for "living-off-the-land" attacks, I would appreciate your clarification on why your software requires it.

These concerns are particularly relevant given the Trojan detection in a tool that invokes PowerShell, which raises the possibility that the tool could misuse PowerShell for malicious activities.

Your timely response and clarification on these matters would greatly relieve my worries and assure me of the safety of your software.
 
I downloaded and ran your software and performed a routine security scan using antivirus software and OSINT.
The scan reported a potential Trojan: "Trojan.Agent.Win32.2853154".

I understand that antivirus detections can sometimes yield false positives, particularly when sophisticated scripting or programming methods are involved. However, considering the potential damage a real Trojan could inflict, I am sure you can appreciate my concern.

I have the following questions for your attention:
  1. Could you let me know if you're aware of this issue? Has any other user reported it?
  2. Are there any elements of your software that could lead an antivirus program to flag it as a Trojan?
  3. Can you confirm this is a false positive and not an actual security threat?

Additionally, I noticed that your software makes use of PowerShell. Given the potential security risks associated with PowerShell (if invoked or controlled by malicious programs), such as execution of malicious scripts, bypassing security measures, and potential for "living-off-the-land" attacks, I would appreciate your clarification on why your software requires it.

These concerns are particularly relevant given the Trojan detection in a tool that invokes PowerShell, which raises the possibility that the tool could misuse PowerShell for malicious activities.

Your timely response and clarification on these matters would greatly relieve my worries and assure me of the safety of your software.
1) I am, though I'm not sure what causes it. I believe it to be a false positive raised from the upstream package we use to actually bundle the software. I actually stopped using Electron because that was an issue. The packager we use for reference is node pkg: https://www.npmjs.com/package/pkg. There is a bug report for the exact version of pkg I currently use, so I should look into updating the pkg dependency: https://github.com/vercel/pkg/issues/1899
2) I don't believe so, I'm aware bit defender doesn't like the curl requests we make sometimes
3) It is absolutely a false positive and not a security threat, the code is completely open source and you can compile it yourself if you wish

As for the powershell, I don't believe it does make use of powershell, but it does execute commands on the system for merging files using mkvmerge or ffmpeg (depending on what's available). It does this by making use of node.exec, which can be seen in the compilation file (tsc.ts & build.ts), and the merger file in (module.merger.ts)

All in all, I appreciate the concern and I hope this answers your questions!

UPDATE: For additional information, here are the virustotal results for the 7z of the gui for windows, and the executable itself respectively
 
Last edited:
1) I am, though I'm not sure what causes it. I believe it to be a false positive raised from the upstream package we use to actually bundle the software. I actually stopped using Electron because that was an issue. The packager we use for reference is node pkg: https://www.npmjs.com/package/pkg. There is a bug report for the exact version of pkg I currently use, so I should look into updating the pkg dependency: https://github.com/vercel/pkg/issues/1899
2) I don't believe so, I'm aware bit defender doesn't like the curl requests we make sometimes
3) It is absolutely a false positive and not a security threat, the code is completely open source and you can compile it yourself if you wish

As for the powershell, I don't believe it does make use of powershell, but it does execute commands on the system for merging files using mkvmerge or ffmpeg (depending on what's available). It does this by making use of node.exec, which can be seen in the compilation file (tsc.ts & build.ts), and the merger file in (module.merger.ts)

All in all, I appreciate the concern and I hope this answers your questions!

UPDATE: For additional information, here are the virustotal results for the 7z of the gui for windows, and the executable itself respectively


I appreciate your quick and comprehensive response. It provides some valuable insights into the situation.

However, during my use and analysis of the software, I observed that it appears to open a PowerShell window. This observation was surprising, given your explanation, so it would be essential to bring it to your attention.

I have included a screenshot of the PowerShell window as it appears during the operation of your software. Your code may not directly intend this, or it may be a result of some other process or interaction, but given the potential security implications, it is essential to highlight.

Could there be a part of the code or a dependency that might be causing this?


powershell.jpg
 
I appreciate your quick and comprehensive response. It provides some valuable insights into the situation.

However, during my use and analysis of the software, I observed that it appears to open a PowerShell window. This observation was surprising, given your explanation, so it would be essential to bring it to your attention.

I have included a screenshot of the PowerShell window as it appears during the operation of your software. Your code may not directly intend this, or it may be a result of some other process or interaction, but given the potential security implications, it is essential to highlight.

Could there be a part of the code or a dependency that might be causing this?


View attachment 72908
Ah! I see what you mean now, that's actually the node application running, though usually that opens it's own window as a runtime environment. It essentially just acts as a window to see logs when reporting bugs or for debugging purposes. It isn't actually a PowerShell window as far as I'm aware, but more like a Nodejs JavaScript Runtime window, or a console for the application if you prefer. I'm sorry for the confusion there

Edit to add additional information: This console window is actually also created by the node pkg packager, and it essentially only logs (It shows information output via the console command in Node). You can likely find more information from the pkg repo I linked above
 
Last edited:
Ah! I see what you mean now, that's actually the node application running, though usually that opens it's own window as a runtime environment. It essentially just acts as a window to see logs when reporting bugs or for debugging purposes. It isn't actually a PowerShell window as far as I'm aware, but more like a Nodejs JavaScript Runtime window, or a console for the application if you prefer. I'm sorry for the confusion there

Edit to add additional information: This console window is actually also created by the node pkg packager, and it essentially only logs (It shows information output via the console command in Node). You can likely find more information from the pkg repo I linked above

Thank you for taking the time to address my concerns.

As I was reviewing the Task Manager, I noticed that the console window running alongside your software is labelled as a PowerShell instance. I believe it's worth investigating further.

I plan to look into this more deeply when I have the time.

If I need more clarity or have any further questions, I will reach out to you.

Thank you for your time and understanding.
 
Thank you for taking the time to address my concerns.

As I was reviewing the Task Manager, I noticed that the console window running alongside your software is labelled as a PowerShell instance. I believe it's worth investigating further.

I plan to look into this more deeply when I have the time.

If I need more clarity or have any further questions, I will reach out to you.

Thank you for your time and understanding.
I appreciate that, I also looked into a little more on my own, and on my own system this is how it appears. 1688733581741.png
As for why it's called "Windows PowerShell" good question, but that's the title of the window (notice it has the Nodejs logo). If you right click it and go to details, it does properly label itself as "aniDL.exe". As for why the Window Title is "Windows PowerShell" I do not know, but I've observed that in a few other apps that use NodeJS pkg (IE: Tdarr). It may be worth it for you to create an issue with pkg to ask about it, especially since they are drafting their next major release RFC: https://github.com/vercel/pkg/issues/1655

It's also worth noting that in older versions of pkg, the window title was the same as the process title, "Node.js JavaScript Runtime (2)", as can be observed in an older version. Bit odd:
1688734746691.png


Edit to add additional information (again): It should be possible to run the GUI (or at least the CLI) as code after compiling the TS to JS, that way you skip the whole pkg part of it. I offer a premade exe to make it more accessible to most people, but also try to make it fully possible to run as code for those more technical

Extra edit: I've updated the project readme with instructions for how to run the GUI (and CLI) version from the code. Additionally, I have spent a lot of time today researching if there are any good alternatives I could use for packaging the application
 
Last edited:
Thank you for taking the time to address my concerns.

As I was reviewing the Task Manager, I noticed that the console window running alongside your software is labelled as a PowerShell instance. I believe it's worth investigating further.

I plan to look into this more deeply when I have the time.

If I need more clarity or have any further questions, I will reach out to you.

Thank you for your time and understanding.
I've done quite a bit of investigating, as well as looking into if there are any good alternatives I could use to bundle the software, but I came up empty handed. Node themselves are working on something, but it doesn't exist in a usable state yet. There is something called Nexe but it's pretty outdated and doesn't support modern node versions.

As for it showing up as PowerShell, that appears to be because it uses the default terminal to execute the node command/executable, since it's pretty much a patched node binary. This means that you can also open CMD, or any shell type really, and run it, and it would run and output to the shell you ran it in. I apologize for my incorrect answers earlier, I was ignorant fully of how pkg worked/what it was doing.

As I said earlier though, you can completely bypass the executable and run it as code by compiling the TS into JS, and then running the "gui.js" or "index.js" depending on if you want CLI or GUI (as noted in the readme). This will completely negate the use of PowerShell.
Full disclosure: It does still however execute commands to merge files using mkvmerge or ffmpeg as noted above, using node.exec
Code:
(https://nodejs.org/api/child_process.html#child_processexeccommand-options-callback)
which spawns a shell process and executes the command, but you can also bypass that by using the `--skipmux` flag. That would make the only time it executes shell commands on your system is when you are compiling it from TypeScript to JavaScript. Would you like me to look into including in the releases section a precompiled version of the code so you can skip that as well?

I hope this helps clear up any misunderstandings and confusion!
 
Last edited by a moderator:
Released version 4.1.0:

Changelog:
  • Add flag --originalFontSize for Hidive, this will disregard the --fontSize flag to use the original fontSize supplied by Hidive
  • Prebuilds now use Node v18 instead of Node v16
  • Fix issue with Crunchy sometimes not detecting episodes properly
  • Added header to GUI service to show which service is selected
  • Add season number to episode list in GUI
  • Added copy summary to clipboard button from search in GUI
  • Add ContextMenu items to both image and summary in Episode List in GUI
Known Issues:
  • A couple AV's mark it as a trojan likely due the way we package the application. It is a false positive.

Virustotal results for Windows GUI: 7zip | executable

Off topic, but I noticed that if I build the application with Node v14, no AV's have a false positive. However, Node v14 is EOL, which means it's subject to security vulnerabilities. But since Node v14 is EOL, and Node v16 will be EOL in a few months, I opted to instead upgrade to Node v18 to have the latest security patches, despite the increase in false positives. You can replicate these tests yourself by changing "nodeVer" in build.ts at line 10, and scanning the resulting executables after you build them. Weird stuff.
Edit: Node v14 virustotal results
 
Last edited:
Hey Jay thanks for popping into my post otherwise I wouldn't have been able to check this out. I wish I knew enough to really contribute but regardless, still very excellent :)
 
Hey Jay thanks for popping into my post otherwise I wouldn't have been able to check this out. I wish I knew enough to really contribute but regardless, still very excellent :)
I'm glad my tool could help! 😁
 
Released version 4.2.0:

Changelog:
  • Add --extid for crunchyroll. Allows to download with Ids from RSS Feeds. Fixes: #351, Fixes #249
  • Add --nosubs support to CR/HD
  • Fix debug command for CR/HD
  • Add --waittime flag. Will wait between downloads, set in milliseconds. Setting this high should help when downloading large numbers of items.
  • Add support for 6 more languages Fixes: #502
    • Chinese (Taiwan)
    • Catalan
    • Polish
    • Thai
    • Tamil (India)
    • Malay (Malaysia)
  • More graceful handling of languages not being known (no longer crashes the program)
  • Fix regression in Funimation introduced into the merger by the Hidive update (Prevented audio from being in the final file)
  • Fix multiple versions with the same language and type (Home Video/Broadcast) breaking Hidive
  • Add --keepAllVideos flag to keep all downloaded videos instead of discarding extras
  • Fix issue where specials weren't being archived properly on Crunchyroll. Fixes: #501
  • Add version declaration when GUI server boots
Known Issues:
  • A couple AV's mark it as a trojan likely due the way we package the application. It is a false positive.

Virustotal results for Windows GUI: 7zip | executable
 
Last edited:
Released version 4.3.0:

Changelog:
  • Fix the indicator for which service you are on in the GUI
  • Background improvements to the code for the GUI
  • Added state saving for the GUI, notably this saves the queue and it is now safe to close and reopen the application or change services without losing the queue
  • Updated dependencies
  • Add icons to service select in the GUI
  • Fixed regression from 4.2.0 where language by default wasn't Japanese, but undefined
  • Fixed archive for Crunchyroll, should now properly archive specials and other seasons
  • Improved archive to prevent duplicate entries in the "already" field
  • Add version number to "Help" menu in the GUI
  • Fix issue for Hidive in the GUI where when downloading the thumbnail would not show
  • Adds --new to Hidive, allowing to view Ids of newly added content
  • Fix issue with --keepAllVideos not working in some circumstances
  • EXPERIMENTAL: Add --syncTiming flag to attempt to detect timing differences in multi-dub downloads and sync them properly
Known Issues:
  • A couple AV's mark it as a trojan likely due the way we package the application. It is a false positive.

Virustotal results for Windows GUI: 7zip | executable
 
A couple AV's mark it as a trojan likely due the way we package the application. It is a false positive.

Tip: AV vendors usually have (at least the serious ones) ways of reporting false positives. I've done that a couple of times and some are actually very good and fast at resolving them. Unfortunately some do not seem to care. But I still think it is worth a shot if you haven't tried. It can involve sending the stuff triggering it to them (or at least a stub) so they have something to work with.
 
Tip: AV vendors usually have (at least the serious ones) ways of reporting false positives. I've done that a couple of times and some are actually very good and fast at resolving them. Unfortunately some do not seem to care. But I still think it is worth a shot if you haven't tried. It can involve sending the stuff triggering it to them (or at least a stub) so they have something to work with.
Thanks for the tip! Unfortunately after looking into it for "Jiangmin", they seem to ignore emails from the numerous online complaints I'm seeing. As for "Zillya", I'm more hopeful for. I'll send them an email and see what happens!
 
Ah, I understand your problem. Haven't been involved with Jiangmin, but Zillya has been helpful a couple of times. Please note that I think that their lab is in Ukraine, maybe they have elsewhere as well, but running an AV lab in Ukraine these times are problematic to say the least...If they do not get back in "due time" if I would contact them I would fully understand...

Good luck!
 
Long time lurker, first time really contributing; I hope this helps some people!

I recently saw someone asking about how to download Crunchyroll, and thought it would be useful to share my tool for easily searching and downloading from various anime websites including (for now) Crunchyroll, Funimation, and Hidive.

Notes about the tool:
1) The tool is free and open source
2) The tool has both a GUI & CLI for ease of use.
3) It's available currently for Mac, Ubuntu, Windows, and Arm, (or whatever nodejs is available on if you run the code version)
4) It allows to download multiple languages (of both dub's and sub's) if desired and available
5) Requires ffmpeg and/or mkvmerge if you want to remux the final product into a single file
6) Requires a premium account for the services to download most things (Up to the individual service for what's available without one)

You can find this tool here:

And the documentation for the CLI version here:

The GUI version (I hope) is pretty self-explanatory so I haven't written a documentation for it, but let me know if you have any questions, feedback, or request for either the GUI or CLI and I'll try to implement them if I can


Alright, now that's all out of the way, how to download/use the tool. You have a couple options, there are precompiled releases for all available OS's in the releases section here: https://github.com/anidl/multi-downloader-nx/releases

If you like, you can also compile the tool yourself, detailed instructions for that are available in the readme

Be a lot easy of AS would just add this.
 
Long time lurker, first time really contributing; I hope this helps some people!

I recently saw someone asking about how to download Crunchyroll, and thought it would be useful to share my tool for easily searching and downloading from various anime websites including (for now) Crunchyroll, Funimation, and Hidive.

Notes about the tool:
1) The tool is free and open source
2) The tool has both a GUI & CLI for ease of use.
3) It's available currently for Mac, Ubuntu, Windows, and Arm, (or whatever nodejs is available on if you run the code version)
4) It allows to download multiple languages (of both dub's and sub's) if desired and available
5) Requires ffmpeg and/or mkvmerge if you want to remux the final product into a single file
6) Requires a premium account for the services to download most things (Up to the individual service for what's available without one)

You can find this tool here:

And the documentation for the CLI version here:

The GUI version (I hope) is pretty self-explanatory so I haven't written a documentation for it, but let me know if you have any questions, feedback, or request for either the GUI or CLI and I'll try to implement them if I can


Alright, now that's all out of the way, how to download/use the tool. You have a couple options, there are precompiled releases for all available OS's in the releases section here: https://github.com/anidl/multi-downloader-nx/releases

If you like, you can also compile the tool yourself, detailed instructions for that are available in the readme

You're a saint among men.. It was a bit clunky to figure out at first but your follow-ups with people asking questions solved any problems I had..

Just when I through I had crawled through all the services and got what I needed, you opened up Funimation and Crunchyroll.. My poor hard drives..
 
Back
Top