GithubHelp home page GithubHelp logo

captainjamason / boorudownloader Goto Github PK

View Code? Open in Web Editor NEW
2.0 1.0 0.0 153 KB

Lightweight Cross-Platform batch image downloader from Danbooru

License: GNU General Public License v3.0

C++ 86.98% Shell 10.34% Meson 2.67%
cpp curl danbooru danbooru-downloader json made-with-love

boorudownloader's Introduction

booruDownloader

A lightweight cross-platform C++ program for downloading images in bulk from imageboard sites.

Features:

  • Meson integrated build system.
  • Danbooru support.
  • Gelbooru support.
  • More site support (Hopefully module flexibility?)
  • Basic GUI done in wxwidgets
  • Real time progress outputs in a non-invasive way.
  • Multithreading
  • Sorting by tag or rating into folders
  • Customizable config

Requirements

  • libcurl >= 8.5.0
  • jsoncpp >= 1.9.5
  • clang >= 17 (My primary compiler choice, May work with GCC...)
  • meson >= 1.3.1

Build Instructions:

Auto Route:

./install.sh is a script written to check for dependencies and build as necessary. along with installing the binary to /usr/local/bin. Other options available with ./install.sh:

  • --only-build: Will only output to ./build/src/boorudownloader, Won't install binary anywhere.
  • --clean: Will clean the repository folder of any build remnants.
  • --rebuild: Same idea as --clean but will also rebuild in the process.
  • --uninstall: Will remove the binary from /usr/local/bin and delete /etc/boorudownloader/
  • IN DEV: --portable: Will put the binary and config in ./bin, Handy for moving things around to different systems.

Manual Route:

  • meson setup build && cd build
  • meson compile Output will be in build/src/boorudownloader by default. This is useful for debugging any issues related to ./install.sh.

Configuration:

Configuration is handled inside one of three json formatted configuration files.

  • ~./config/booruDownloader/config.json (preferred)
  • /etc/booruDownloader/conf (example configuration)

It will also look for conf.json in the same folder as the binary. Useful for portable installs.

Please copy the example configuration to one of these folders; like so: mkdir ~./config/booruDownloader && cp /etc/booruDownloader/conf.json ~/.config/booruDownloader/conf.json

Options:

  • user: Allows for input of username and API key for danbooru, Not currently used, May be handy to be integrated in future...
  • testbooru: Enables or disables the use of testbooru in favor of danbooru. Mainly useful for debugging and development.

<3

Copyright 2024 - JPD/hurbIndustries

boorudownloader's People

Contributors

captainjamason avatar

Stargazers

 avatar  avatar

Watchers

 avatar

boorudownloader's Issues

Multithreading

This is a big one....

Nothing has been outright written with multithreading in mind. but it would be miles preferred.

If anyone has information to chime in on how to best approach this and pull it off that would be awesome.

Cleanup CLI Code

Yes, It's messy, No... I'm not proud of it...

I think if the arguments maybe got popped into a vector we'd be able to organize them a bit easier? It's something that will need to be done, no doubt about it.

Cmake build system.

This i'd like to get fledged out before we do any indev binary releases... I don't mind our current build system. But cmake would be a nice addition and help with cross platform interoperability.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.