Giter VIP home page Giter VIP logo

pytwitchapi's People

Contributors

asishm avatar aw-was-here avatar braastos avatar d7415 avatar dependabot[bot] avatar duskofdawn avatar gitagogaming avatar iprodigy avatar jc-chung avatar joostlek avatar latent-logic avatar lynara avatar meduris avatar moralrecordings avatar parmenashp avatar rubrodapa avatar stolenvw avatar teekeks avatar tempystral avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pytwitchapi's Issues

Twitch doesn't register webhook subscription

I want to subscribe to stream changes and I use slightly modded of webhook_example.py:

twitch = Twitch(APP_ID, APP_SECRET)
twitch.authenticate_app([])

hook = TwitchWebHook("https://nikitacartes.xyz:8100/", APP_ID, 8101)
hook.authenticate(twitch.get_app_token())
hook.start()

success, uuid_stream = hook.subscribe_stream_changed(USER_ID, callback_stream_changed)

print(f'was subscription successfull?: {success}')
print(twitch.get_webhook_subscriptions())

But get_webhook_subscriptions says, what i have 0 subscription.

was subscription successfull?: True
{'total': 0, 'data': [], 'pagination': {}}

For proxy from 8100 port to Plain 8101 I use maproxy, if this is important.

import tornado.ioloop
import maproxy.proxyserver

ssl_certs = {"certfile":  "nikitacartes.xyz/fullchain.pem", "keyfile": "nikitacartes.xyz/privkey.pem"}

server = maproxy.proxyserver.ProxyServer("0.0.0.0", 8101, client_ssl_options=ssl_certs)
server.listen(8100)
tornado.ioloop.IOLoop.instance().start()

Use hookable log

Currently, twitchAPI just uses the default logger, for better customization options it should use its own loggers.

auth.authenticate() - Task was destroyed but it is pending

Hello

While using the example code detailed in the chapter "User Authentication" of https://pypi.org/project/twitchAPI/

I get an error in the end of the program, that uses "token, refresh_token = auth.authenticate()"

The twitch page opens, i am redirected on http://localhost:17563/?code=(...), and the execution continues, until the program stops and then :

Task was destroyed but it is pending!
task: <Task pending name='Task-7' coro=<IocpProactor.accept..accept_coro() running at f:\dev\python\install\lib\asyncio\windows_events.py:566> wait_for=<_OverlappedFuture cancelled>>
Task was destroyed but it is pending!
task: <Task pending name='Task-5' coro=<IocpProactor.accept..accept_coro() running at f:\dev\python\install\lib\asyncio\windows_events.py:566> wait_for=<_OverlappedFuture cancelled>>
Exception ignored in: <function _ProactorBasePipeTransport.del at 0x00000169C487BD30>
Traceback (most recent call last):
File "f:\dev\python\install\lib\asyncio\proactor_events.py", line 116, in del
File "f:\dev\python\install\lib\asyncio\proactor_events.py", line 108, in close
File "f:\dev\python\install\lib\asyncio\base_events.py", line 746, in call_soon
File "f:\dev\python\install\lib\asyncio\base_events.py", line 510, in _check_closed
RuntimeError: Event loop is closed
Task was destroyed but it is pending!
task: <Task pending name='Task-8' coro=<RequestHandler.start() running at F:\Dev\Python\Projects\myProject\lib\site-packages\aiohttp\web_protocol.py:398> wait_for=<Future pending cb=[<TaskWakeupMethWrapper object at 0x00000169C4DA1A90>()]>>

It seems the asyncio event stop is not handled properly. Am i doing something wrong or is there something missing in the sample code provided ?

asyncio.CanceldError in oauth.__run()

When the Auth Flow is used, i regularly get an asyncio.CanceldError.
In your oauth.py you catch an CancelledError, but you dont catch the asyncio.CanceldError.

Small errors in documentation

In the imports of the code snippet for user authentication you import twitch.types instead of twitchAPI.types.
In that same snippet the variable twitch passed to the UserAuthenticator is not yet defined.

Datetime.datetime not accepted "as is" as parameter in get_clips (for started_at)

Hi again !

Still working on get_clips to try to get the list of clips of some streamers.

I used the temporary workaround you provide me to not use "clip_id"

test = twitch.get_clips(streamer.get('to_id'), Game.get('id'), [], first=100, started_at=timeStart)
I get an answer from twitch (no exception in the code) that is :
{'error': 'Bad Request', 'status': 400, 'message': 'parsing time "2020-10-26T19:30:50.688906" as "2006-01-02T15:04:05Z07:00": cannot parse "" as "Z07:00"'}

I tried using a timeStart generated by the two codes :
timeStart = datetime.datetime(datetime.date.today().year, datetime.date.today().month, datetime.date.today().day)
timeStart = datetime.datetime.now()

Meaning my timeStart is coded : 2020-10-26 19:30:50.688906

Should the get_clips function "transform" the datetime.datetime given by adding something in the end before sending it to twitch? Or is there something i missed ? Or is the "Z07:00" something that i can provide ?

I tried playing with tznames from datetime but i can't find a way to make this work...

OSError: [Errno 99] error while attempting to bind on address ('::1', 17563, 0, 0): cannot assign requested address

I was trying to run the example WebSocket code and it crashes on this:

Exception in thread Thread-1:
Traceback (most recent call last):
  File "/usr/lib/python3.7/threading.py", line 926, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.7/threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/local/lib/python3.7/dist-packages/twitchAPI/oauth.py", line 103, in __run
    self.__loop.run_until_complete(site.start())
  File "/usr/lib/python3.7/asyncio/base_events.py", line 579, in run_until_complete
    return future.result()
  File "/usr/local/lib/python3.7/dist-packages/aiohttp/web_runner.py", line 104, in start
    reuse_port=self._reuse_port)
  File "/usr/lib/python3.7/asyncio/base_events.py", line 1374, in create_server
    % (sa, err.strerror.lower())) from None
OSError: [Errno 99] error while attempting to bind on address ('::1', 17563, 0, 0): cannot assign requested address

The example I used can be found here

get_clips is not usable without clip_id

Hi,

I am trying to get the list of clips of a streamer, from a game. I have the broadcaster ID and the game ID but no clip id (that's what i am looking for)

Reading the twitch api on https://dev.twitch.tv/docs/api/reference#get-clips i should be using "get_clips".
i read the sentence : "For a query to be valid, id (one or more), broadcaster_id, or game_id must be specified. You may specify only one of these parameters." just before the optional query parameter.

The python TwitchAPI doesn't let me go without the clip_id. When i try the call :
test = twitch.get_clips(broadcaster_id=streamer.get('to_id'),game_id=Game.get('id'),first=100,started_at=timeStart)

i get the error :
TypeError: get_clips() missing 1 required positional argument: 'clip_id'

Is it a difference between the python Twitch API and the Twitch API or should i do this differently ?

add a authenticate_app flag to __init__ of Twitch

Since the Twitch API currently does not have any call that is not requiring at elast a app token, add a flag to init for automatic authentication.

This will save one line of code that will be required in almost all circumstances of using the library.

Non-dynamic Redirect URI

Hello,

I am currently trying to get the ouath section of this work. In order for this to work you must have a redirect URI for your site that is set inside the settings for your twitch site as you mention here: https://pytwitchapi.readthedocs.io/en/latest/modules/twitchAPI.oauth.html?highlight=redirect#requirements
However, I did not see a way for you to change the redirect URI, which means that the only valid redirect uri is 'localhost:17563' as seen here under the UserAuthenticator class: https://github.com/Teekeks/pyTwitchAPI/blob/master/twitchAPI/oauth.py

Did I miss something in the documentation? Or was there a way of directly changing the uri in the UserAuthenticator class?

twitch.py wrong URL in channel point subroutines

Hi,

I found a bug inside of twitch.py.

The subroutines:

  • delete_custom_reward
  • get_custom_reward
  • get_custom_reward_redemption
  • update_redemption_status
    are missing the TWITCH_API_BASE_URL inside the call of the build_url function.

At the moment they are defined as:
url = build_url('channel_poi......
but should look like:
url = build_url(TWITCH_API_BASE_URL + 'channel_poi......

Could you please fix that?

regards
Thomas

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.