Files
ezarr/main.py
harmadasg a80d54f93a Add jellyseerr support (#32)
* add jellyseerr support

* Update README.md
2023-06-27 14:54:35 +02:00

138 lines
4.5 KiB
Python

from container_configs import ContainerConfig
from users_groups_setup import UserGroupSetup
services_classed = dict()
def take_input(service_name, service_type):
choice = input()
if choice == 'Y' or choice == 'y' or choice == '':
services_classed[service_type].append(service_name)
elif choice != 'n' and choice != 'N':
print('Invalid input, please enter Y or N. Not adding ' + service_name + ".")
def take_boolean_input(default=True):
while True:
ans = input()
if ans == '':
return default
if ans == 'y' or ans == 'Y':
return True
if ans == 'n' or ans == 'N':
return False
print('Please answer with y or n.', end=' ')
def take_directory_input():
while True:
ans = input()
if ans[0] == '/':
if ans[-1] == '/':
return ans[:-1]
return ans
print('Please make sure the path is absolute, meaning it starts at the root of your filesystem and starts with "/":', end=' ')
print('Welcome to the EZarr CLI.')
print('This CLI will ask you which services you\'d like to use and more. If you\'d like more information about a '
'certain service, look in the README.')
print('\n===SERVARR===')
services_classed['servarr'] = []
print('Use Sonarr? [Y/n]', end=" ")
take_input('sonarr', 'servarr')
print('Use Radarr? [Y/n]', end=" ")
take_input('radarr', 'servarr')
print('Use Lidarr? [Y/n]', end=" ")
take_input('lidarr', 'servarr')
print('Use Readarr? [Y/n]', end=" ")
take_input('readarr', 'servarr')
print('Use Mylar3? [Y/n]', end=" ")
take_input('mylar3', 'servarr')
print('Use Audiobookshelf? [Y/n]', end=" ")
take_input('audiobookshelf', 'servarr')
if len(services_classed['servarr']) == 0:
print('Warning: no media management services selected.')
print('\n===INDEXERS===')
services_classed['indexer'] = []
print('Use Prowlarr? [Y/n]', end=" ")
take_input('prowlarr', 'indexer')
if len(services_classed['indexer']) == 0:
print('Warning: no indexing service selected.')
print('\n===MEDIA SERVERS===')
services_classed['ms'] = []
print('Use PleX? [Y/n]', end=" ")
take_input('plex', 'ms')
if services_classed['ms'].__contains__('plex'):
print('Use Tautulli? [Y/n]', end=" ")
take_input('tautulli', 'ms')
if services_classed['servarr'].__contains__('sonarr') or services_classed['servarr'].__contains__('radarr'):
print('Use Overseerr? [Y/n]', end=" ")
take_input('overseerr', 'servarr')
print('Use Jellyfin? [Y/n]', end=" ")
take_input('jellyfin', 'ms')
if (services_classed['ms'].__contains__('jellyfin')
and (services_classed['servarr'].__contains__('sonarr') or services_classed['servarr'].__contains__('radarr'))):
print('Use Jellyseerr? [Y/n]', end=" ")
take_input('jellyseerr', 'servarr')
if len(services_classed['ms']) == 0:
print('Warning: no media servers selected.')
print('\n===BITTORRENT===')
services_classed['torrent'] = []
print('Use qBittorrent? [Y/n]', end=" ")
take_input('qbittorrent', 'torrent')
print('\n===USENET===')
services_classed['usenet'] = []
print('Use SABnzbd? [Y/n]', end=" ")
take_input('sabnzbd', 'usenet')
if len(services_classed['torrent']) == 0 and len(services_classed['usenet']) == 0:
print('Warning: no usenet or BitTorrent clients selected.')
services = []
for service_class in services_classed.keys():
services.extend(services_classed[service_class])
if len(services) == 0:
print('No services selected. Terminating.')
exit(1)
print('\n===CONFIGURATION===')
print('Please enter your timezone (like "Europe/Amsterdam")', end=' ')
timezone = input()
if len(timezone) == 0:
timezone = 'Europe/Amsterdam'
plex_claim = ''
if services.__contains__('plex'):
print('If you have a PleX claim token, enter it now. Otherwise, just press enter.', end=' ')
plex_claim = input()
print('Where would you like to keep your files?', end=' ')
root_dir = take_directory_input()
compose = open('docker-compose.yml', 'w')
compose.write(
'---\n'
'version: "3.1"\n'
'services:\n'
)
container_config = ContainerConfig(root_dir, timezone, plex_claim=plex_claim)
permission_setup = UserGroupSetup(root_dir=root_dir)
for service in services:
try:
getattr(permission_setup, service)()
except AttributeError:
pass
compose.write(getattr(container_config, service)())
compose.close()
print('Process complete. You can now run "docker compose up -d" to start your containers.')
print('Thank you for using EZarr. If you experience any issues or have feature requests, add them to our issues.')
exit(0)