10 Commits

Author SHA1 Message Date
7f49c4d958 🔖 Tag release 2020-08-10 02:33:15 -06:00
ed1a64cb52 🎨 Fix style of docstrings 2020-08-10 02:26:38 -06:00
7471da85f7 Seperate field for pushing package 2020-08-10 02:25:48 -06:00
4633247004 🐛 Cleaner builds, allow some compilation 2020-08-10 02:25:33 -06:00
98a36c6cbc 🐛 Update to support shell scripts for deploy 2020-08-10 02:18:06 -06:00
b7ab589f6e 🎨 Switch to shell scripts for deployment 2020-08-10 02:16:11 -06:00
4aadd886d5 📝 Format fixes 2020-08-09 20:12:31 -06:00
33bbf21bab Merge branch 'master' into dev 2020-08-09 15:26:01 -06:00
253f2a9a82 🚀 Use docker pull instead of building repo 2020-08-09 15:24:50 -06:00
af91883635 📝 Overhaul docs
Add better detail of bot creation

Add badges

Add sample docker-compose.yml
2020-08-09 15:24:15 -06:00
13 changed files with 130 additions and 65 deletions

View File

@ -14,7 +14,7 @@ WORKDIR /src
COPY requirements.txt . COPY requirements.txt .
# Install all dependencies. # Install all dependencies.
RUN pip install --only-binary all --no-cache-dir -r requirements.txt RUN pip install --no-cache-dir -r requirements.txt
# Copy PlexBot over to src. # Copy PlexBot over to src.
COPY PlexBot/ PlexBot COPY PlexBot/ PlexBot

17
Jenkinsfile vendored
View File

@ -49,17 +49,18 @@ pipeline {
steps { steps {
sh ''' source /var/lib/jenkins/miniconda3/etc/profile.d/conda.sh sh ''' source /var/lib/jenkins/miniconda3/etc/profile.d/conda.sh
conda activate ${BUILD_TAG} conda activate ${BUILD_TAG}
python deploy/build.py ./deploy/build.sh
''' '''
} }
post {
always {
// Archive unit tests for the future
archiveArtifacts (allowEmptyArchive: true,
artifacts: 'dist/*whl',
fingerprint: true)
sh 'python deploy/push.py'
} }
stage('Push Image') {
when {
expression {
currentBuild.result == 'SUCCESS'
}
}
steps {
sh './deploy/push.sh'
} }
} }
} }

View File

@ -1,8 +1,8 @@
"""Plex music bot for discord. """
Plex music bot for discord.
Do not import this module, it is intended to be
used exclusively within a docker environment.
Do not import this module, it is intended to be
used exclusively within a docker environment.
""" """
import logging import logging
import sys import sys

View File

@ -1,7 +1,6 @@
"""Main entrypoint for bot """
Main entrypoint script.
Sets up loggers and initiates bot. Sets up loggers and initiates bot.
""" """
import logging import logging

View File

@ -1,2 +1,5 @@
"""Track version number of package""" """Track version number of package."""
VERSION = "0.0.6" VERSION = "1.0.0"
if __name__ == "__main__":
print(VERSION)

View File

@ -1,4 +1,4 @@
""" All discord bot and Plex api interactions""" """All discord bot and Plex api interactions."""
import asyncio import asyncio
import io import io
import logging import logging

104
README.md
View File

@ -1,28 +1,70 @@
# Plex-Bot # Plex-Bot
[![GPLv3 license](https://img.shields.io/badge/License-GPLv3-blue.svg)](http://perso.crans.org/besson/LICENSE.html)
![docker pulls](https://img.shields.io/docker/pulls/jarulsamy/plex-bot)
![docker img size](https://img.shields.io/docker/image-size/jarulsamy/plex-bot)
![black badge](https://img.shields.io/badge/code%20style-black-000000.svg)
A Python-based Plex music bot for discord. A Python-based Plex music bot for discord.
![screenshot](assets/screenshot.png)
## Setup ## Setup
Plex-Bot runs entirely in a Docker container. Ensure you have Docker and docker-compose installed according to the official Docker [documentation](https://docs.docker.com/get-docker/). Plex-Bot runs entirely in a Docker container. Ensure you have Docker and docker-compose installed according to the official Docker [documentation](https://docs.docker.com/get-docker/).
1. Clone the repository and `cd` into it: 1. Create a new folder and `cd` into it:
``` ```bash
$ git clone https://github.com/jarulsamy/Plex-Bot mkdir Plex-Bot
$ cd Plex-Bot cd Plex-Bot
``` ```
2. Create a configuration folder: 2. Make a `docker-compose.yml` file or use this sample:
Create a new `config` folder and copy the sample config file into it: ```yml
version: "3"
services:
plex-bot:
container_name: "PlexBot"
image: jarulsamy/plex-bot:latest
environment:
- PUID=1000
- PGID=1000
- TZ=America/Denver
# Required dir for configuration files
volumes:
- "./config:/config:ro"
restart: "unless-stopped"
```
``` 3. Create a new `config` folder and create a config file like this::
$ mkdir config
$ cp sample-config.yaml config/config.yaml
```
3. Create a Discord bot application: ```bash
mkdir config
cd config
touch config.yaml
```
```yml
# Create a file called config.yaml with the following contents
root:
log_level: "info"
discord:
prefix: "?"
token: "<BOT_TOKEN>"
log_level: "debug"
plex:
base_url: "<BASE_URL>"
token: "<PLEX_TOKEN>"
library_name: "<LIBRARY_NAME>"
log_level: "debug"
```
4. Create a Discord bot application:
1. Go to the Discord developer portal, [here](https://discord.com/developers/applications). 1. Go to the Discord developer portal, [here](https://discord.com/developers/applications).
@ -38,23 +80,38 @@ $ cp sample-config.yaml config/config.yaml
6. Click Create Bot User 6. Click Create Bot User
This will provide you with your bot Username and Token This will provide you with your bot Username and Token
7. Fill in all the necessary numbers in `config/config.yaml` 7. Fill in the bot token in `config/config.yaml`
4. Get your plex token: 5. Get your plex token:
Refer to the official [plex documentation](https://support.plex.tv/articles/204059436-finding-an-authentication-token-x-plex-token/). * Refer to the official [plex documentation](https://support.plex.tv/articles/204059436-finding-an-authentication-token-x-plex-token/).
Add it to `config/config.yaml` in the appropiate spot. * Add it to `config/config.yaml` in the appropiate spot.
5. Start the service: 6. Customize remaining settings
``` Set any remaining settings in the config file that you would like. Such as music library, and base url of the Plex server.
$ docker-compose up --build
7. Start the service:
```bash
docker-compose up -d
```
## Logs
You can view the logs with the following command
```bash
docker-compose logs -f CONTAINER_NAME_OR_ID
# For example
docker-compose logs -f PlexBot
``` ```
## Usage ## Usage
``` ```text
General: General:
kill - Stop the bot. kill - Stop the bot.
Plex: Plex:
@ -71,11 +128,4 @@ Type ?help command for more info on a command.
You can also type ?help category for more info on a category. You can also type ?help category for more info on a category.
``` ```
## Support
Reach out to me at one of the following places!
- Email (Best) at joshua.gf.arul@gmail.com
- Twitter at <a href="http://twitter.com/jarulsamy_" target="_blank">`@jarulsamy_`</a>
* * * * * *

BIN
assets/screenshot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@ -1,8 +0,0 @@
import os
import sys
sys.path.append("PlexBot")
from __version__ import VERSION
sys.exit(os.system(f"docker build -t jarulsamy/plex-bot:{VERSION} ."))

14
deploy/build.sh Executable file
View File

@ -0,0 +1,14 @@
#!/usr/bin/env bash
VERSION=$(python PlexBot/__version__.py)
docker build -t "jarulsamy/plex-bot:$VERSION" .
if [ $? -eq 0 ]
then
echo "Successfully build docker image."
exit 0
else
echo "Failed to build docker image." >&2
exit 1
fi

View File

@ -1,8 +0,0 @@
import os
import sys
sys.path.append("PlexBot")
from __version__ import VERSION
sys.exit(os.system(f"docker push jarulsamy/plex-bot:{VERSION}"))

14
deploy/push.sh Executable file
View File

@ -0,0 +1,14 @@
#!/usr/bin/env bash
VERSION=$(python PlexBot/__version__.py)
docker push "jarulsamy/plex-bot:$VERSION"
if [ $? -eq 0 ]
then
echo "Successfully pushed docker image."
exit 0
else
echo "Failed to push docker image." >&2
exit 1
fi

View File

@ -2,7 +2,7 @@ version: "3"
services: services:
plex-bot: plex-bot:
container_name: "PlexBot" container_name: "PlexBot"
build: . image: jarulsamy/plex-bot:latest
environment: environment:
- PUID=1000 - PUID=1000
- PGID=1000 - PGID=1000
@ -10,4 +10,4 @@ services:
# Required dir for configuration files # Required dir for configuration files
volumes: volumes:
- "./config:/config:ro" - "./config:/config:ro"
restart: "no" restart: "unless-stopped"