-
-
Save Rihcus/4a217e0092e1fa34299e395222759165 to your computer and use it in GitHub Desktop.
| #!/usr/bin/python3 | |
| from plexapi.myplex import MyPlexAccount | |
| import sys | |
| import json | |
| import requests | |
| import time | |
| import socket | |
| # please make sure to install PlexAPI via pip, "pip install PlexAPI" | |
| # makesure to update the duckdns url with token and domainname | |
| # don't forget to add ur username and pasword | |
| # need time for ngrok to start up before requesting data | |
| print("Waiting 5 seconds for ngrok to start up") | |
| time.sleep(5) | |
| def get_ngrok_port(): | |
| url = "http://localhost:4040/api/tunnels" | |
| res = requests.get(url) | |
| res_unicode = res.content.decode("utf-8") | |
| res_json = json.loads(res_unicode) | |
| for i in res_json["tunnels"]: | |
| if i['proto'] == 'tcp': | |
| return i['public_url'].split(':')[-1] | |
| def get_ngrok_url(): | |
| url = "http://localhost:4040/api/tunnels" | |
| res = requests.get(url) | |
| res_unicode = res.content.decode("utf-8") | |
| res_json = json.loads(res_unicode) | |
| for i in res_json["tunnels"]: | |
| if i['proto'] == 'tcp': | |
| return i['public_url'].split(':')[-2] | |
| # get and clean up ngrok tcp url for later (this code is messy) :( | |
| ngrokurl=get_ngrok_url() | |
| ngrokurlclean= ngrokurl.split('//')[-1] | |
| print("ngrok base url = " + ngrokurlclean) | |
| # get ngrok url ip | |
| ngrokip = socket.gethostbyname(ngrokurlclean) | |
| print("ngrok url and ip no port = " + ngrokip) | |
| #update duckdns with ngrok ip make sure to change [] or copy url from duckdns install guide | |
| duckdnsupdateurl="https://www.duckdns.org/update?domains=[yourname]&token=[yourapitoken]&ip=" + ngrokip | |
| res = requests.get(duckdnsupdateurl) | |
| print(res.status_code) | |
| def build_url_list(): | |
| NGROK_PORT = get_ngrok_port() | |
| NGROK_BASES = ["https://[yourname].duckdns.org:"] | |
| NGROK_URLS = map(lambda base: base + NGROK_PORT, NGROK_BASES) | |
| CUSTOM_URL = "" | |
| for url in NGROK_URLS: | |
| CUSTOM_URL += url + ", " | |
| CUSTOM_URL = CUSTOM_URL[:-2] | |
| return CUSTOM_URL | |
| # Load user defined config" | |
| PLEX_USER = "email" | |
| PLEX_PWORD = "password" | |
| PLEX_SERVER = "plex server name" | |
| # stores plex user login info into a variable | |
| account = MyPlexAccount(PLEX_USER, PLEX_PWORD) | |
| plex = account.resource(PLEX_SERVER).connect() # returns a PlexServer instance | |
| # displays current plex custom url settings. Not needed but nice to see | |
| print("Old settings: " + plex.settings.customConnections) | |
| # sets plex's "Custom server access URLs" with one from Ngrok | |
| customUrl = plex.settings.get('customConnections') | |
| customUrl.set(build_url_list()) | |
| plex.settings.save() | |
| # displays new custom plex url from Ngrok. Not needed but nice to see | |
| account = MyPlexAccount(PLEX_USER, PLEX_PWORD) | |
| plex = account.resource(PLEX_SERVER).connect() # returns a PlexServer instance | |
| print("New settings: " + plex.settings.customConnections) |
I made a fork of this script here:
https://gist.github.com/anjumrafidofficial/fe3b986ff15246a47851f9d0da0e202fMain change is this scripts will use token instead of password.
Thanks for the fix 👍
to add here is a guide on getting the token
I made a fork of this script here:
https://gist.github.com/anjumrafidofficial/fe3b986ff15246a47851f9d0da0e202f
Main change is this scripts will use token instead of password.Thanks for the fix +1
to add here is a guide on getting the token
Was a docker container of your script ever made?
I made a fork of this script here:
https://gist.github.com/anjumrafidofficial/fe3b986ff15246a47851f9d0da0e202f
Main change is this scripts will use token instead of password.Thanks for the fix +1
to add here is a guide on getting the token
https://unraid-guides.com/2021/01/31/how-to-connect-plex-to-apps-that-dont-support-two-factor-authentication-2fa/Was a docker container of your script ever made?
Truth be told I have little experience making docker containers and haven't used Plex in a while. There seems to be a ngrok Plex docker solution present though not by me
I made a fork of this script here:
https://gist.github.com/anjumrafidofficial/fe3b986ff15246a47851f9d0da0e202f
Main change is this scripts will use token instead of password.Thanks for the fix +1
to add here is a guide on getting the token
https://unraid-guides.com/2021/01/31/how-to-connect-plex-to-apps-that-dont-support-two-factor-authentication-2fa/Was a docker container of your script ever made?
I've created one. Have a look: https://github.com/origamiofficial/docker-ngrok-plex
I made a fork of this script here:
https://gist.github.com/anjumrafidofficial/fe3b986ff15246a47851f9d0da0e202f
Main change is this scripts will use token instead of password.