---
updatedAt: 2025-11-20T22:42:06.000Z
agentTools:
  projectIndex: https://docs.uplynk.com/llms.txt
---

# Tokenize Uplynk URL (External ID)

```python Python
#############################################################################
# uplynktoken_eid.py
# 
# This script is used adding a token to an Uplynk URL when using an Uplynk
# URL with an External ID.
#
# Python 3.X is required for running this script.  It will not run under 
# Python 2.7.
#
# Usage:
#
# python3 uplynktoken_eid.py
#############################################################################

import sys, base64, json, datetime, os, urllib.parse
import hmac, hashlib, time, random

#############################################################################
# Globals
#############################################################################

# Expire URL time in minutes

EXPIRE_MIN = 30
        
############################################################
# Function: SignPlaybackUrl_EID
# 
# Sign the Uplynk URL that uses an External ID
############################################################

def SignPlaybackUrl_EID(play_url, owner_id, external_id, secret):
 
    # Combine all of the parameters except the signature
    
    queryStr = urllib.parse.urlencode(dict(
        tc = '1',                               # Token check algorithm version
        exp = int(time.time()) + 60*EXPIRE_MIN, # Expire EXPIRE_MIN minutes from now
        rn = str(random.randint(0, 2**32)),     # Random number
        ct = 'a',                               # An asset
        eid = external_id,                      # External ID
        oid = owner_id                          # Owner ID
    ))
 
    # Compute the signature and add it to the *end*

    sig = hmac.new(secret, queryStr.encode("utf-8"), hashlib.sha256).hexdigest()
    queryStr = queryStr + '&sig=' + sig
    
    # Add the query string to the playback URL

    play_url = play_url + '?' + queryStr
        
    return play_url     
            
############################################################
############################################################
#
# Main Program
#
############################################################
############################################################

if (__name__ == "__main__"):

    # Check the command-line parameters

    if (len(sys.argv) == 1):
        print("Usage: python3 uplynktoken_eid.py <owner> <secret> <external_id> <uplynk_url>")
        print("      <owner>          = Uplynk User ID")
        print("      <secret>         = Uplynk API Key")
        print("      <external_id>    = External ID for the asset")
        print("      <uplynk_url>     = Uplynk URL without token")
        print("\n")
        print("This script uses Python 3.X and will not run under Python 2.7.\n")
        sys.exit()
    
    # Get Uplynk info
    
    owner_id = sys.argv[1]
    
    secret_str = sys.argv[2]
    
    secret = secret_str.encode("utf-8")
    
    external_id = sys.argv[3]
    
    uplynk_url = sys.argv[4]
            
    # Sign the URL
            
    token_url = SignPlaybackUrl_EID(uplynk_url, owner_id, external_id, secret)
        
    # Print tokenized URL
    
    print(f"TOKENIZED URL: {token_url}")
```

# SignPlaybackURL_EID

<!-- python@32-54 -->

Function for signing an Uplynk playback URL

# Invoke SignPlaybackURL_EID

<!-- python@92-92 -->

Invoke the SignPlaybackUrl_EID function.