Git Product home page Git Product logo

nefarious's Introduction

nefarious

Build Status Docker Pulls

nefarious is a web application that helps you download Movies and TV Shows.

It aims to combine features of Sonarr, Radarr and Ombi.

It uses Jackett and Transmission under the hood. Jackett searches for torrents and Transmission does the downloading.

Features:

  • Search TV & Movies
  • Auto download TV (individual episodes or full season)
  • Auto download Movies
  • Discover TV & Movies (by popularity, genres, year etc)
  • Find similar TV & Movies
  • Find recommended TV & Movies
  • Manually search jackett's torrent results and download
  • Supports blacklisting torrent results (i.e avoid a bad/fake torrent that should be avoided)
  • Supports quality profiles (i.e only download 1080p Movies and any quality TV)
  • Supports whether to download media with hardcoded subtitles or not
  • Supports user defined keywords to filter results (i.e ignore "x265", "hevc" codecs)
  • Auto download TV & Movies once it's released (routinely scan)
  • Monitor transmission results & status from within the app
  • Self/auto updating application
  • Supports multiple users and permission groups (i.e admin users and regular users)
  • Responsive Design (looks great on desktops, tablets and small devices like phones)
  • Movie trailers
  • Automatically renames media
  • Supports multiple languages (TMDB supports internationalized Titles, Descriptions and Poster artwork)
  • Support user requests (i.e an unprivileged user must "request" to watch something)

Contents

Demo

Screenshots

Login

Search

TV Result

Movie Result

Movie Custom Quality Profile

Download Status

Discover

Wanted

Watching

Settings

Search Manual

Mobile Friendly

Dependencies

nefarious is best run via Docker through Docker Compose.

Install those two programs and you're all set. If your OS isn't listed in the Docker downloads, see the OS specific instructions below.

OS specific dependencies

Follow some guidelines for installing Docker and Docker Compose for various OS's.

Arch

You should be able to install docker and docker-compose from the default Software Center/repositories.

Solus OS

You should be able to install docker and docker-compose from the default Software Center/repositories.

Ubuntu/Debian

Ensure that git and curl are already installed, then run the following commands:

sudo apt-get update
sudo apt-get install -y docker.io
# this commands refers to the current latest docker compose version of 1.18.0.  See latest versions at https://github.com/docker/compose/releases
sudo curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Fedora

Install the Docker repository and update metadata cache

sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
sudo dnf makecache

Install docker and docker-compose from repository

sudo dnf install docker-ce
sudo dnf -y install docker-compose

At the moment Docker-Compose doesn't fully work without modification on Fedora 31. 30,29,28, and so on should work however. If you're running Fedora 31, use the following Reddit thread and most recent post at your own discretion. https://www.reddit.com/r/Fedora/comments/d8ukd0/has_anyone_managed_to_run_docker_ce_on_fedora_31/

Windows

You'll need to ensure that your PC is running a version of Windows 10 64-bit Professional, Education, or Enterprise. Docker for Windows requires Hyper-V technology, which is not supported by Windows 10 Home. You'll also need to ensure that your PC has Virtualization enabled in BIOS before attempting to install Docker for Windows. While nefarious is not by any means a Linux exclusive application, it is much easier to setup on either a Linux based OS, or on a Linux Virtual Machine through your preferred VM software on any actively updated version of Windows. Consult appropriate documentation relating to said software if you wish to setup folder shares between your Linux VM and your Windows install. Docker Toolbox is also an option, as it runs docker commands on non-Hyper-V supported OSes by running them through an integrated Linux VM. If you'd prefer to avoid using something like Virtualbox, VMWare, or other separate Virtualization software, this would would probably work best for you. That being said, we'd recommend this only be done by experienced users of Docker software.

Setup

Part 1 - Setup performed from terminal

Run the following commands:

sudo systemctl start docker.service
sudo systemctl enable docker.service
sudo groupadd -f docker
sudo usermod -aG docker $USER
newgrp docker

This will:

  • verify docker is initialized
  • add current user to the docker group
  • update the current shell session to use new login group

You'll now be able to run Docker commands without needing to call sudo each time.

Ensure that Docker is setup correctly. Run the following command which should respond with "success":

docker run --rm -it --init alpine echo "success"

Ensure that docker-compose is setup correctly. This shows the version of docker-compose currently installed on the system:

docker-compose --version

Clone the nefarious repository and start all the Docker containers:

git clone https://github.com/lardbit/nefarious.git
cd nefarious
docker-compose up -d

Your default local addresses for the various services will be:

NOTE: See Part 2 for finalizing the configuration.

ARM devices

For those running ARM devices like the raspberry pi, odroid, pine etc:

You will need to reference the docker-compose.arm.yml file when running docker commands instead of the docker-compose.yml file.

For example, run the following to bring up all the services on ARM devices:

docker-compose -f docker-compose.arm.yml up -d

Part 2 - Setup performed from GUI or text editor

The default nefarious user/password is admin/admin. On first login you will be directed to the main nefarious settings and asked to configure your Jackett API token. Jackett's host in the main settings should remain jackett and the port should remain 9117. Copy your API Token from Jackett into the appropriate nefarious section. Don't forget to also add some indexers in Jackett to track your preferred content, and be sure to test them to see that they're working. Some popular examples are The Pirate Bay, 1337x, RARBG.

Transmission's host should remain transmission and port should remain 9091. It's possible to configure it with a username and password, but defaults to keeping them both blank. Entering both username and password in the nefarious settings should only be done if the Transmission settings of 'transmission-settings.json' were also configured for your desired user/pass. The Download Subdirectories can also be configured here as well. Bear in mind these are subdirectories, and that we will be configuring the parent download directory shortly. Leaving these as they are will be perfectly fine.

Global Language, Keyword Exclusions, Subtitles, and Picture Quality can also be configured here. TV and Movie quality profiles can be changed independently of each other if you wish to have differing profiles. Finally, user accounts and passwords can be added or modified as well. Feel free to change the defaults now if you so desire, or add additional users on your PC/system. Once all of your Settings are to your preference, first click Save then be sure to Verify Settings.

Transmission Configuration

In order to change the download folder (which is set to /tmp/transmission by default) look for the docker-compose.yml file in your nefarious folder and edit

/tmp/transmission:/downloads

to be like

/Your/Desired/Folder:/downloads

Leave the right side alone and only change the left side. The structure of the folder path is the same for both Linux and Windows. Once you've made your changes, save your docker-compose.yml file, open a terminal to your nefarious folder and type

docker-compose up -d

to update and apply your updates.

There is no default transmission user/pass, but feel free to edit the transmission-settings.json beforehand following the official settings to make any changes you'd like.

NOTE if you make any changes to transmission-settings.json you'll have to recreate the transmission container for the changes to take place:

docker-compose up -d --force-recreate transmission

Troubleshooting

# logs for main app
docker-compose logs -f nefarious

# logs for tasks (search results)
docker-compose logs -f celery

# list all services (they should all be "up")
docker-compose ps

# use a hammer and restart everything (you won't lose your settings, though)
docker-compose down
docker-compose up -d

Development

If you're interested in contributing or simply want to run nefarious without docker then follow these instructions.

nefarious is built on:

  • Python 3.6
  • Django 2
  • Angular 6
  • Bootstrap 4

Note: Review the Dockerfile for all necessary dependencies.

Install python dependencies

This assumes you're either installing these packages in your global python environment (in which case you probably need to use sudo) or, even better, install a virtual environment first.

pip install -r src/requirements.txt

Build database

python src/manage.py migrate

Run nefarious init script

This creates a default user and pass (admin/admin).

python src/manage.py nefarious-init admin admin@localhost admin

Build front-end resources

First install the frontend dependencies:

npm --prefix src/frontend install

Then build the frontend html/css stuff (angular):

npm --prefix src/frontend run build

Note: run npm --prefix src/frontend run watch to automatically rebuild while you're developing the frontend stuff.

Run nefarious

Run the python application using django's development runserver management command:

DEBUG=1 python src/manage.py runserver 8000

It'll be now running at http://127.0.0.1:8000

Run celery (task queue)

Celery is a task queue and is used by nefarious to queue downloads, monitor for things, etc.

Run the celery server:

cd src
celery -A nefarious worker --loglevel=INFO

You'll see all download logs/activity come out of here.

Dependencies

Jackett, Redis and Transmission are expected to be running somewhere.

You can download and run them manually, or, for simplicity, I'd just run them via docker using the docker-compose.yml file.

Run redis, jackett and transmission from the docker-compose.yml file:

docker-compose up -d redis jackett transmission

nefarious's People

Contributors

lardbit avatar hustlintom avatar sajnapraveen avatar

Watchers

James Cloos avatar

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.