0

I am trying to write data from Strava to a treeview, however, when it writes I will get the error

_tkinter.TclError: character U+1f1e8 is above the range (U+0000-U+FFFF) allowed by Tcl

I realised this was due to someone using an emoji in the name of their ride. I wrote code that only skips some Unicode values and not others. My code is seen below:

    count = 0
    distanceM = 0
    distanceML = 0
    elevationM = 0
    elevationFT = 0
    full_name = ""
    for row in strava.get_children():
        strava.delete(row)


    auth_url = "https://www.strava.com/oauth/token"
    activites_url = "https://www.strava.com/api/v3/clubs/2885/activities"

    payload = {
        'client_id': "XXXXX",
        'client_secret': 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
        'refresh_token': 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
        'grant_type': "refresh_token",
        'f': 'json'
    }
    res = requests.post(auth_url, data=payload, verify=False)
    access_token = res.json()['access_token']
    ride_name = ""
    header = {'Authorization': 'Bearer ' + access_token}
    param = {'per_page':200, 'page':1}
    my_dataset = requests.get(activites_url, headers=header, params=param).json()

    for i in range (0,len(my_dataset)):
        entry = 1
        strava.tag_configure('odd',background = "#fc4d03")
        strava.tag_configure('even', background = 'white')
        full_name = str(my_dataset[i]["athlete"]["firstname"])+ " " + str(my_dataset[i]["athlete"]["lastname"])
        distanceM = int(my_dataset[i]["distance"])
        distanceML = distanceM * 0.000621371
        distanceML = '%.2f'%(distanceML)
        elevationM = int(my_dataset[i]["total_elevation_gain"])
        elevationFT = elevationM * 3.28084
        elevationFT = '%.0f'%(elevationFT)
        ride_name = (my_dataset[i]["name"])
        try:
            ride_name.encode('ascii')
        except UnicodeEncodeError:
            entry = 0
        if entry == 1:
            if count%2 == 0:
                strava.insert("", "end", text="", values=(full_name,my_dataset[i]["name"],distanceML,elevationFT), tag = ('even',))
            else:
                strava.insert("", "end", text="", values=(full_name,my_dataset[i]["name"],distanceML,elevationFT), tag = ('odd',))

            count = count+1
Cameron McCusker
  • 43
  • 1
  • 1
  • 6
  • Does not fixed for more than 3 years? [Why does tcl/tkinter only support BMP characters?](https://stackoverflow.com/questions/48310132/). – JosefZ Jan 27 '21 at 17:57
  • @JosefZ `tkinter` in Python 3.9.1 works with >BMP (on Windows at least). – Mark Tolonen Jan 29 '21 at 06:35

0 Answers0