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 .
# 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/ PlexBot

17
Jenkinsfile vendored
View File

@ -49,18 +49,19 @@ pipeline {
steps {
sh ''' source /var/lib/jenkins/miniconda3/etc/profile.d/conda.sh
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.
Do not import this module, it is intended to be
used exclusively within a docker environment.
"""
Plex music bot for discord.
Do not import this module, it is intended to be
used exclusively within a docker environment.
"""
import logging
import sys

View File

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

View File

@ -1,2 +1,5 @@
"""Track version number of package"""
VERSION = "0.0.6"
"""Track version number of package."""
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 io
import logging

104
README.md
View File

@ -1,28 +1,70 @@
# 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.
![screenshot](assets/screenshot.png)
## 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/).
1. Clone the repository and `cd` into it:
1. Create a new folder and `cd` into it:
```
$ git clone https://github.com/jarulsamy/Plex-Bot
$ cd Plex-Bot
```
```bash
mkdir 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"
```
```
$ mkdir config
$ cp sample-config.yaml config/config.yaml
```
3. Create a new `config` folder and create a config file like this::
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).
@ -38,23 +80,38 @@ $ cp sample-config.yaml config/config.yaml
6. Click Create Bot User
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
```
$ docker-compose up --build
Set any remaining settings in the config file that you would like. Such as music library, and base url of the Plex server.
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
```
```text
General:
kill - Stop the bot.
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.
```
## 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:
plex-bot:
container_name: "PlexBot"
build: .
image: jarulsamy/plex-bot:latest
environment:
- PUID=1000
- PGID=1000
@ -10,4 +10,4 @@ services:
# Required dir for configuration files
volumes:
- "./config:/config:ro"
restart: "no"
restart: "unless-stopped"