Skip to content

Syncing Friendly Names

A number of people have now asked if Ombi and Tautulli can synchronise 'friendly names' or 'aliases' for users.
At present there is no built-in support for this.

Contributor

One of the Discord users (thanks, DirtyCajunRice) wrote a python script to achieve this.

The Method

Either copy/paste the contents of The Script into a file (saved somewhere logical) named sync_aliases.py, or download the file.
Something simple like the following is preferred:

  • Windows: C:\Scripts\
  • Linux: /opt/scripts/

Note: This script requires the requests module to be installed. You can install this with
pip install requests.

Once the script is in place, you'll need to edit the script to include your urls and API keys (both for Tautulli and Ombi).
Then, enter a command prompt/terminal in that folder and run python sync_aliases.py to run the script and have it match entries.

If you'd like to make this sync happen on a schedule, then setting a scheduled task or cron job to run the python script will achieve this. A handy utility for managing this kind of thing is Chronos (or you can create a scheduled task in Windows using Powershell).

The Script

from requests import Session
from urllib3 import disable_warnings
from urllib3.exceptions import InsecureRequestWarning

OMBI_URL = ''
OMBI_APIKEY = ''

TAUTULLI_URL = ''
TAUTULLI_APIKEY = ''

# Don't Edit Below #
disable_warnings(InsecureRequestWarning)
SESSION = Session()
SESSION.verify = False
HEADERS = {'apiKey': OMBI_APIKEY}
PARAMS = {'apikey': TAUTULLI_APIKEY, 'cmd': 'get_users'}
TAUTULLI_USERS = SESSION.get('{}/api/v2'.format(TAUTULLI_URL.rstrip('/')), params=PARAMS).json()['response']['data']
TAUTULLI_MAPPED = {user['username']: user['friendly_name'] for user in TAUTULLI_USERS
                   if user['user_id'] != 0 and user['friendly_name']}
OMBI_USERS = SESSION.get('{}/api/v1/Identity/Users'.format(OMBI_URL.rstrip('/')), headers=HEADERS).json()

for user in OMBI_USERS:
    if user['userName'] in TAUTULLI_MAPPED and user['alias'] != TAUTULLI_MAPPED[user['userName']]:
        print("{}'s alias in Tautulli ({}) is being updated in Ombi from {}".format(
            user['userName'], TAUTULLI_MAPPED[user['userName']], user['alias'] or 'empty'
        ))
        user['alias'] = TAUTULLI_MAPPED[user['userName']]
        put = SESSION.put('{}/api/v1/Identity'.format(OMBI_URL.rstrip('/')), json=user, headers=HEADERS)
        if put.status_code != 200:
            print('Error updating {}'.format(user['userName']))

Scheduling this task with Powershell

$action = New-ScheduledTaskAction -Execute 'C:\Python27\python.exe' -Argument 'C:\Scripts\sync_aliases.py'
$trigger = New-ScheduledTaskTrigger -Daily -At 5am
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "Sync Friendly Names" -Description "Synchronize friendly names between Tautulli and Ombi" -User "SYSTEM"