- Ported to Python 3, since Python 2 will not be maintaned past 2020
- added webroot option to configuration, useful for proxy pass configurations (issue #24)
- little unrar automation: after pip installation, run `paver libunrar' to automatically fetch compile and install the unrar library.
- now the scanning component ignores hidden (dot) files (issue #26)
- added new logo from blindpet (issue #27)
- upgraded to latest releases of various dependent packages
- refactoring database access in a Library object (see library branch)
- fulltext indexing and faceting support using whoosh (see whoosh branch)
- mobile optimized user interface based on angularjs and bootstrap. Designed to work with the new search api with facet support
All of these features are experimental and still unfinished.
ComicStreamer is a media server app for sharing a library of comic files via a simple REST API to client applications. It allows for searching for comics based on a rich set of metadata including fields like series name, title, publisher story arcs, characters, and creator credits. Client applications may access comics by entire archive file, or by fetching page images, one at a time.
A web interface is available for searching and viewing comics files, and also for configuration, log viewing, and some control operations.
It's best used on libraries that have been tagged internally with tools like ComicTagger or ComicRack. However, even without tags, it will try to parse out some information from the filename (usually series, issue number, and publication year).
ComicStreamer is very early ALPHA stages, and may be very flakey, eating up memory and CPU cycles. In particular, with very large datasets, filters on the sub-lists (characters, credits, etc. ) can be slow.
If you have web development or graphic design skills, and would like to help out, please contact me at comictagger@gmail.com. In particular, ComicStreamer needs a new logo!
Chunky Comic Reader for iPad has added experimental ComicStreamer support. Pro upgrade required, but it's well worth it for the other features you get. Check it out! If you are comic reader developer (any platform), and would like to add CS support, please contact me if you need any special support or features.
- Python 3.5 or later
- Extra Python modules installed via pip (
python3 -m pip install -r requirements.txt
) - Optionally, pybonjour, for automatic server discovery
For source, just unzip somewhere. For the binary packages, it's the usual drill for that platform. (No setup.py yet, sorry)
Settings, database, and logs are kept in the user folder:
- On Linux: "~/.ComicStreamer"
- On Mac OS: "~/Library/Application Support/ComicStreamer"
- On Windows: "%APPDATA%\ComicStreamer"
From the source, just run "comicstreamer" in the base folder (on windows you may want to rename it comicstreamer.py).
For the binary builds, run from the installed app icon. There should be no taskbar/dock presence, but an icon should appear in the system tray (windows), or status menu (mac).
A web browser should automatically open to http://localhost:32500". On your first run, use the "config" page to set the comic folders, and the "control" page to restart the server. It will start scanning, and all comics in the given folders and sub folders will be added to database.
Some tips:
- Use "--help" option to list command-line options
- Use the "--reset" option (CLI) or control page "Rebuild Database" to wipe the database if you're having problems.
The following packages have to be installed:
- python3
- python3-dev
- python3-venv
- libavahi-compat-libdnssd1
- libjpeg-dev
- libpng-dev
- zlib1g-dev
- libwebp-dev
For example:
apt install python3 python3-dev python3-venv libavahi-compat-libdnssd1
apt install libjpeg-dev libpng-dev zlib1g-dev libwebp-dev
The following packages have to be installed:
sudo pacman -S --needed make gcc libwebp python3 unzip wget
After installing and configuring ComicStreamer, the following packages can be removed:
sudo pacman -Rs gcc binutils libmpc wget gc guile libatomic_ops libtool make
The following packages have to be installed:
- python3
- jpeg
- libpng
- webp
brew install python jpeg libpng webp
The following software has to be installed:
- python 3
- Bonjour (optional)
Create and activate venv:
python3 -m venv /opt/comicstreamer
source /opt/comicstreamer/bin/activate
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade setuptools
python3 -m pip install wheel
Download ComicStreamer and install needed modules and libraries:
cd /opt/comicstreamer/
curl -OL https://github.com/kounch/ComicStreamer/archive/master.zip
unzip master.zip
rm master.zip
mv ComicStreamer-master master
cd master
python3 -m pip install -r requirements.txt
python3 -m paver libunrar
Optionally, install extra module:
python3 -m pip install https://github.com/kounch/pybonjour-python3/releases/download/1.1.3/pybonjour-1.1.3.tar.gz
Test everything is ok, with an execution from shell:
/opt/comicstreamer/bin/python3 /opt/comicstreamer/master/comicstreamer --nobrowser --user-dir /opt/comicstreamer/.ComicStreamer
Launch a cmd
Window, then create and activate venv:
py -3 -m venv comicstreamer
comicstreamer\Scripts\activate.bat
python -m pip install --upgrade pip setuptools
python -m pip install wheel
Download ComicStreamer and install needed modules and libraries:
cd comicstreamer
%windir%\explorer.exe https://github.com/kounch/ComicStreamer/archive/master.zip
Decompress the ZIP file inside the comicstreamer folder and rename to master
cd master
python -m pip install -r requirements.txt
python -m paver libunrar
Follow the instructions to copy UnRAR DLL to libunrar.so
.
Optionally, if you have installed Bonjour, install extra module:
python -m pip install https://github.com/kounch/pybonjour-python3/releases/download/1.1.3/pybonjour-1.1.3.tar.gz
Test everything is ok, with an execution from cmd:
python comicstreamer
You can create a systemd service. For example, create the file /etc/systemd/system/comicstreamer.service
[Unit]
Description=ComicStreamer Service
Requires=network.target local-fs.target remote-fs.target
After=network.target local-fs.target remote-fs.target
[Service]
Restart=always
RestartSec=120
ExecStart=/opt/comicstreamer/bin/python3 /opt/comicstreamer/master/comicstreamer --nobrowser --user-dir /opt/comicstreamer/.ComicStreamer
TimeoutStopSec=20
[Install]
WantedBy=multi-user.target