Anpanator / jnc-downloader

A python script to automatically (pre-)order books and download them from your J-Novel.club library.
The Unlicense
8 stars 5 forks source link

jnc-api as separate project #12

Closed wolfpackmars2 closed 3 years ago

wolfpackmars2 commented 3 years ago

A request to decouple and maintain the api tools separate from the downloader app. Maybe add the api tools to pypi.

Anpanator commented 3 years ago

I like the idea. However for this I'd first like to separate the concerns better. Currently there's a lot of printing/user confirmation going on which could and should be separated out. I think it makes most sense to do this once that has happened.

wolfpackmars2 commented 3 years ago

I've gone through most of the updates you made recently to the API. Looks very good and separating the API tool as a separate project seems in line with your recent refactoring. Good use of Type hinting as well - do you have experience in a typed language?

I may post from time to time issue requests which are minor and I'll try to link pull requests. Mainly code clean up - which isn't to say there's a problem with your code! to be clear. I still need to play with the API some more. I'm thinking of implementing some caching features to reduce requests to JNC where some information may not update frequently.

Thanks for your effort!

-SG

Anpanator commented 3 years ago

This is my first python project, and originally it was just a bash script until holatuwol was kind enough to do the initial conversion to python. Initially it was only for downloading and small enough that clean code didn't matter. But as functionality grew, that changed. My main experience lies with php and a little Java and I've worked with the former long enough that I know what the pains and pitfalls of missing type hints can be as a project grows. Even if the type hints in python are literally just that: hints, without any enforcement, it still eases working with the code greatly. Using flat dicts everywhere was turning out to be quite painful.

Still, it's still not in a state I want it, and things take some time for me as I'm learning the language as I go (on top of not having too much spare time). And of course, contributions are completely welcome! That's why I made it a public project in the first place. Caching was something I had actually considered implementing too, especially for getting series information. Other things just had priority.

Anpanator commented 3 years ago

@wolfpackmars2 Hey, I've given this some thoughts and while I think with the recent changes the JNClient (and to an extent the JNCUtils) are usable on their own, I'm not ready to commit to maintaining this as a separate project because I won't be able to appropriately support it in a timely fashion. I don't want people relying on this and expect me to keep up with API changes on JNC side in a quick fashion, because I cannot guarantee that.

Now, I'm not against the idea of adding this to pypi, but I'm not sure if its possible to add a single file from a project there, I'm just saying I won't be the one to do it. The one thing I'll guarantee is that I will properly tag new releases in master, if that helps.