manetta
6 years ago
4 changed files with 278 additions and 116 deletions
@ -0,0 +1,98 @@ |
|||||
|
# Distribusi CMS |
||||
|
|
||||
|
`distribusi` is a content management system for the web that produces static |
||||
|
index pages based on folders in the filesystem. It is inspired by the automatic |
||||
|
index functions featured in several web servers. It works by traversing the |
||||
|
file system and directory hierarchy to automatically list all the files in the |
||||
|
directory and providing them with html classes and tags for easy styling. |
||||
|
|
||||
|
## Requirements |
||||
|
|
||||
|
While a Pip install will pull in Python dependencies, you might need system |
||||
|
dependencies. This package requires two underlying packages. Those are |
||||
|
`python-magic`, and `pillow`. Here are the installation documentation for those |
||||
|
packages: |
||||
|
|
||||
|
* [github.com/threatstack/libmagic](https://github.com/threatstack/libmagic) |
||||
|
* [pillow.readthedocs.io](https://pillow.readthedocs.io/en/5.3.x/installation.html#external-libraries) |
||||
|
|
||||
|
## Installation |
||||
|
|
||||
|
Using [--user] or [a virtual environment] is recommended: |
||||
|
|
||||
|
[--user]: https://packaging.python.org/tutorials/installing-packages/#installing-to-the-user-site |
||||
|
[a virtual environment]: https://packaging.python.org/tutorials/installing-packages/#creating-virtual-environments |
||||
|
|
||||
|
|
||||
|
```bash |
||||
|
$ pip install --user distribusi |
||||
|
``` |
||||
|
|
||||
|
Note: check if the path of your local bin is added to your shell path (otherwise you cannot run distribusi from the shell directly). |
||||
|
|
||||
|
To check where distribusi is installed: |
||||
|
|
||||
|
$ find * | grep distribusi |
||||
|
|
||||
|
Add local bin to the $PATH variable: |
||||
|
|
||||
|
$ PATH=$PATH:/home/USERNAME/.local/bin/ |
||||
|
|
||||
|
## Usage |
||||
|
|
||||
|
Get help with: |
||||
|
|
||||
|
```bash |
||||
|
$ distribusi --help |
||||
|
``` |
||||
|
|
||||
|
Make a distribusi of your home folder: |
||||
|
|
||||
|
```bash |
||||
|
$ distribusi -d ~/ |
||||
|
``` |
||||
|
|
||||
|
You will find that you now have an `index.html` in every folder. |
||||
|
|
||||
|
Create a quick gallery for the web: |
||||
|
|
||||
|
``` |
||||
|
$ distribusi -d /path/to/my/photos -t |
||||
|
``` |
||||
|
|
||||
|
This creates an `index.html` with `base64` encoded thumbnails. |
||||
|
|
||||
|
Generate verbose output: |
||||
|
|
||||
|
``` |
||||
|
$ distribusi -v |
||||
|
``` |
||||
|
|
||||
|
Make an index of the archive page: |
||||
|
|
||||
|
``` |
||||
|
$ distribusi -d /var/www/archive/my_event -t -v |
||||
|
``` |
||||
|
|
||||
|
# ✌ |
||||
|
|
||||
|
## Change It |
||||
|
|
||||
|
Install [Pipenv] and then run: |
||||
|
|
||||
|
[Pipenv]: https://pipenv.readthedocs.io/en/latest/install/#installing-pipenv |
||||
|
|
||||
|
``` |
||||
|
$ pipenv install --dev |
||||
|
$ pipenv run pip install -e . |
||||
|
$ pipenv run distribusi --help |
||||
|
``` |
||||
|
|
||||
|
|
||||
|
## Release It |
||||
|
|
||||
|
You'll need a [PyPi](https://pypi.org/) account and to be added as a maintainer. |
||||
|
|
||||
|
``` |
||||
|
$ make publish |
||||
|
``` |
@ -1,21 +1,72 @@ |
|||||
html_head = """ |
def html_head(stylesheet): |
||||
|
header = """ |
||||
<!DOCTYPE html> |
<!DOCTYPE html> |
||||
<html lang="en"> |
<html lang="en"> |
||||
<head> |
<head> |
||||
<!-- Generated with distribusi https://git.vvvvvvaria.org/rra/distribusi --> |
<!-- Generated with distribusi https://git.vvvvvvaria.org/rra/distribusi --> |
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
||||
<style> |
{} |
||||
.image{max-width: 100%;} |
|
||||
.pdf {width:100%;} |
|
||||
div{width: 640px;float:left;padding:1em;} |
|
||||
video {width:640px;} |
|
||||
.dir::before{content:"📁";font-size:18px;} |
|
||||
</style> |
|
||||
</head> |
</head> |
||||
<body> |
<body> |
||||
""" |
""".format(stylesheet) |
||||
|
return header |
||||
|
|
||||
html_footer = """ |
html_footer = """ |
||||
</body> |
</body> |
||||
</html> |
</html> |
||||
""" |
""" |
||||
|
|
||||
|
styles = """ |
||||
|
body{ |
||||
|
position: absolute; |
||||
|
top:20px; |
||||
|
} |
||||
|
|
||||
|
.stylesheet{ |
||||
|
display: none; |
||||
|
} |
||||
|
|
||||
|
div{ |
||||
|
width: 640px; |
||||
|
float:left; |
||||
|
padding:1em; |
||||
|
} |
||||
|
div.folder, div.README{ |
||||
|
float: none; |
||||
|
padding: 0.5em 1em; |
||||
|
} |
||||
|
a.dir::before{ |
||||
|
content:"📁"; |
||||
|
font-size:18px; |
||||
|
padding-right: 1em; |
||||
|
text-decoration:none; |
||||
|
} |
||||
|
a.text::before{ |
||||
|
content:"☛"; |
||||
|
font-size:18px; |
||||
|
padding-right: 1em; |
||||
|
text-decoration:none; |
||||
|
} |
||||
|
a.back::before{ |
||||
|
content:"⮪"; |
||||
|
font-size:18px; |
||||
|
padding-right: 1em; |
||||
|
text-decoration:none; |
||||
|
} |
||||
|
a.back{ |
||||
|
position: fixed; |
||||
|
top:0; |
||||
|
left:0; |
||||
|
padding:0.5em; |
||||
|
} |
||||
|
|
||||
|
.image{ |
||||
|
max-width: 100%; |
||||
|
} |
||||
|
.pdf { |
||||
|
width:100%; |
||||
|
} |
||||
|
video { |
||||
|
width:640px; |
||||
|
} |
||||
|
""" |
Loading…
Reference in new issue