davidteather / TikTok-Api

The Unofficial TikTok API Wrapper In Python
https://davidteather.github.io/TikTok-Api
MIT License
4.72k stars 958 forks source link

User example returns EmptyResponseException #1067

Open pam-param-pam opened 11 months ago

pam-param-pam commented 11 months ago

EmptyResponseException is not able to be raised properly when fetching user data

EmptyResponseException is tried to be raised ending with typeError missing required args for the exception

ms_token = "ms_token_here" # get your own ms_token from your cookies on tiktok.com

async def user_example():
    async with TikTokApi() as api:
        await api.create_sessions(ms_tokens=[ms_token], num_sessions=1, sleep_after=3)
        user = api.user("therock")
        user_data = await user.info()
        print(user_data)

        async for video in user.videos(count=30):
            print(video)
            print(video.as_dict)

if __name__ == "__main__":
    asyncio.run(user_example())

Two diffrent rracebacks are randomly returned(depending on the mood of the program ig) Traceback 1

Traceback (most recent call last):
  File "C:\Users\jedrz\PycharmProjects\Tiktok1\test.py", line 21, in <module>
    asyncio.run(user_example())
  File "C:\Users\jedrz\AppData\Local\Programs\Python\Python39\lib\asyncio\runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "C:\Users\jedrz\AppData\Local\Programs\Python\Python39\lib\asyncio\base_events.py", line 642, in run_until_complete
    return future.result()
  File "C:\Users\jedrz\PycharmProjects\Tiktok1\test.py", line 12, in user_example
    user_data = await user.info()
  File "C:\Users\jedrz\Pobrane\Tiktok1\lib\site-packages\TikTokApi\api\user.py", line 76, in info
    resp = await self.parent.make_request(
  File "C:\Users\jedrz\Pobrane\Tiktok1\lib\site-packages\TikTokApi\tiktok.py", line 429, in make_request
    raise EmptyResponseException()
TypeError: __init__() missing 2 required positional arguments: 'raw_response' and 'message'

Traceback 2

Traceback (most recent call last):
  File "C:\Users\jedrz\PycharmProjects\Tiktok1\test.py", line 21, in <module>
    asyncio.run(user_example())
  File "C:\Users\jedrz\AppData\Local\Programs\Python\Python39\lib\asyncio\runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "C:\Users\jedrz\AppData\Local\Programs\Python\Python39\lib\asyncio\base_events.py", line 642, in run_until_complete
    return future.result()
  File "C:\Users\jedrz\PycharmProjects\Tiktok1\test.py", line 12, in user_example
    user_data = await user.info()
  File "C:\Users\jedrz\Pobrane\Tiktok1\lib\site-packages\TikTokApi\api\user.py", line 76, in info
    resp = await self.parent.make_request(
  File "C:\Users\jedrz\Pobrane\Tiktok1\lib\site-packages\TikTokApi\tiktok.py", line 416, in make_request
    signed_url = await self.sign_url(encoded_params, session_index=i)
  File "C:\Users\jedrz\Pobrane\Tiktok1\lib\site-packages\TikTokApi\tiktok.py", line 353, in sign_url
    x_bogus = (await self.generate_x_bogus(url, session_index=i)).get("X-Bogus")
  File "C:\Users\jedrz\Pobrane\Tiktok1\lib\site-packages\TikTokApi\tiktok.py", line 341, in generate_x_bogus
    result = await session.page.evaluate(
  File "C:\Users\jedrz\Pobrane\Tiktok1\lib\site-packages\playwright\async_api\_generated.py", line 8665, in evaluate
    await self._impl_obj.evaluate(
  File "C:\Users\jedrz\Pobrane\Tiktok1\lib\site-packages\playwright\_impl\_page.py", line 389, in evaluate
    return await self._main_frame.evaluate(expression, arg)
  File "C:\Users\jedrz\Pobrane\Tiktok1\lib\site-packages\playwright\_impl\_frame.py", line 271, in evaluate
    await self._channel.send(
  File "C:\Users\jedrz\Pobrane\Tiktok1\lib\site-packages\playwright\_impl\_connection.py", line 61, in send
    return await self._connection.wrap_api_call(
  File "C:\Users\jedrz\Pobrane\Tiktok1\lib\site-packages\playwright\_impl\_connection.py", line 482, in wrap_api_call
    return await cb()
  File "C:\Users\jedrz\Pobrane\Tiktok1\lib\site-packages\playwright\_impl\_connection.py", line 97, in inner_send
    result = next(iter(done)).result()
playwright._impl._api_types.Error: TypeError: Cannot read properties of undefined (reading 'frontierSign')
    at eval (eval at evaluate (:216:30), <anonymous>:1:38)
    at UtilityScript.evaluate (<anonymous>:223:19)
    at UtilityScript.<anonymous> (<anonymous>:1:44)

Windowns 10 TikTokApi==6.1.1

Cxmrykk commented 11 months ago

Yep can confirm I'm getting the same error on Debian 12 x86_64 when executing with Headless=False, otherwise I get the following when Headless=True (default):

2023-09-23 13:58:09,787 - TikTokApi.tiktok - ERROR - Got an unexpected status code: {'userInfo': {'user': {}, 'stats': {}, 'shareMeta': {}}}
Traceback (most recent call last):
  File "/home/mezza/Developer/Testing/tiktokapi/test.py", line 18, in <module>
    loop.run_until_complete(user_example())
  File "/usr/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/home/mezza/Developer/Testing/tiktokapi/test.py", line 8, in user_example
    user_data = await user.info()
                ^^^^^^^^^^^^^^^^^
  File "/home/mezza/Developer/Testing/tiktokapi/venv/lib/python3.11/site-packages/TikTokApi/api/user.py", line 87, in info
    self.__extract_from_data()
  File "/home/mezza/Developer/Testing/tiktokapi/venv/lib/python3.11/site-packages/TikTokApi/api/user.py", line 204, in __extract_from_data
    data["userInfo"]["user"]["id"],
    ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
KeyError: 'id'
mimounelh commented 11 months ago

I also confim having the same issue, and i also use a Debian machine (Debian 11 x86_64). Maybe TikTok changed something and broke up the whole API.

koemigg commented 10 months ago

I also encountered same issue, at MBP M1 Pro, macOS Ventura 13.0.1.

Raghbinho commented 9 months ago

I also encountered same issue:

2023-12-04 15:27:58,904 - TikTokApi.tiktok - ERROR - Got an unexpected status code: {'userInfo': {'user': {}, 'stats': {}, 'shareMeta': {}}} Traceback (most recent call last): File "C:\dev\gettiktok.py", line 23, in asyncio.run(user_example()) File "C:\Python311\Lib\asyncio\runners.py", line 190, in run return runner.run(main) ^^^^^^^^^^^^^^^^ File "C:\Python311\Lib\asyncio\runners.py", line 118, in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Python311\Lib\asyncio\base_events.py", line 653, in run_until_complete return future.result() ^^^^^^^^^^^^^^^ File "C:\dev\gettiktok.py", line 14, in user_example user_data = await user.info() ^^^^^^^^^^^^^^^^^ File "C:\Python311\Lib\site-packages\TikTokApi\api\user.py", line 87, in info self.extract_from_data() File "C:\Python311\Lib\site-packages\TikTokApi\api\user.py", line 204, in extract_from_data data["userInfo"]["user"]["id"],


KeyError: 'id'
ThomasAndreatta commented 7 months ago

same error here