67 lines
1.9 KiB
Bash
67 lines
1.9 KiB
Bash
#!/bin/bash
|
|
|
|
token_from_Pref_XML() {
|
|
# ChuckPa already wrote a great function for getting host info
|
|
source ./HostConfig.sh
|
|
|
|
echo "Getting Host Information"
|
|
HostConfig
|
|
|
|
PLEX_PREFERENCES_XML="$AppSuppDir/Plex Media Server/Preferences.xml"
|
|
if [[ -f "$PLEX_PREFERENCES_XML" ]]; then
|
|
echo "Plex Preferences.xml found: $PLEX_PREFERENCES_XML"
|
|
# get token
|
|
LOCAL_PLEX_TOKEN=`cat "${PLEX_PREFERENCES_XML}" | sed -e 's;^.* PlexOnlineToken=";;' | sed -e 's;".*$;;' | tail -1`
|
|
echo "Local Token found: $LOCAL_PLEX_TOKEN"
|
|
else
|
|
echo "Plex Preferences.xml not found"
|
|
exit
|
|
fi
|
|
}
|
|
|
|
token_from_api() {
|
|
if [ -z "$PLEX_LOGIN" ] || [ -z "$PLEX_PASSWORD" ]; then
|
|
PLEX_LOGIN=$1
|
|
PLEX_PASSWORD=$2
|
|
fi
|
|
|
|
while [ -z "$PLEX_LOGIN" ]; do
|
|
>&2 echo -n 'Your Plex login (e-mail or username): '
|
|
read PLEX_LOGIN
|
|
done
|
|
|
|
while [ -z "$PLEX_PASSWORD" ]; do
|
|
>&2 echo -n 'Your Plex password: '
|
|
read PLEX_PASSWORD
|
|
done
|
|
|
|
>&2 echo 'Retrieving a X-Plex-Token using Plex login/password...'
|
|
|
|
curl --silent -qu "${PLEX_LOGIN}":"${PLEX_PASSWORD}" 'https://plex.tv/users/sign_in.xml' \
|
|
-X POST -H 'X-Plex-Device-Name: PlexMediaServer' \
|
|
-H 'X-Plex-Provides: server' \
|
|
-H 'X-Plex-Version: 0.9' \
|
|
-H 'X-Plex-Platform-Version: 0.9' \
|
|
-H 'X-Plex-Platform: xcid' \
|
|
-H 'X-Plex-Product: Plex Media Server'\
|
|
-H 'X-Plex-Device: Linux'\
|
|
-H 'X-Plex-Client-Identifier: XXXX' --compressed >/tmp/plex_sign_in >> /dev/null 2>&1
|
|
X_PLEX_TOKEN=$(sed -n 's/.*<authentication-token>\(.*\)<\/authentication-token>.*/\1/p' /tmp/plex_sign_in)
|
|
if [ -z "$X_PLEX_TOKEN" ]; then
|
|
cat /tmp/plex_sign_in
|
|
rm -f /tmp/plex_sign_in
|
|
>&2 echo 'Failed to retrieve the X-Plex-Token.'
|
|
exit 1
|
|
fi
|
|
rm -f /tmp/plex_sign_in
|
|
|
|
>&2 echo "Your X_PLEX_TOKEN:"
|
|
|
|
echo $X_PLEX_TOKEN
|
|
}
|
|
|
|
token_from_Pref_XML
|
|
token_from_api
|
|
|
|
exit
|