mytwitch
Overview
Security Warning
As this package allows you to easily generate a user access token with the specified permissions, it too has access to send your token off to a third party without your knowledge. You are advised to always check the source code for such operations of any application you use and make sure this isn't the case.
Where to look?
It would be best for you to search through the entire package to assure you aren't being mislead.
However, this is time consuming, so if you're not inclined, here are links to the supposedly relevant files. You can also browse the files after installation to make sure the published content doesn't differ from that in the repository.
Installation
python -m pip install mytwitch
Application setup for authentication
Redirect URI
- Log in to Twitch Developers.
- Go to the Applications tab.
- Register your application with the URL as
http://localhost:
followed by the port you choose to use. By default, this package uses 6319
. This would be http://localhost:6319
.
Client ID
- Log in to Twitch Developers.
- Go to the Applications tab.
- Select Manage by the application you're using.
- The client ID should be found on this page.
NOTE: Client IDs are public and may be shared. You may use Mytwitch's client ID, but you're advised to set up your own application in case this were to ever get removed for any reason. Mytwitch's client ID can be imported from mytwitch.client_id
.
Examples
IRC
from mytwitch.auth import UserToken
from mytwitch.irc import TwitchIRC
client_id = 'abcdefghijklmnopqrstuvwxyz0123456789'
scope = ['chat:read']
user_token = UserToken(client_id, scope)
channel = 'twitch'
irc = TwitchIRC(user_token, [channel])
for message in irc.feed():
print(message)
PubSub
from mytwitch.auth import UserToken
from mytwitch.pubsub import TwitchPubSub
client_id = 'abcdefghijklmnopqrstuvwxyz0123456789'
scope = ['channel:read:redemptions']
user_token = UserToken(client_id, scope)
class MyPubSub(TwitchPubSub):
async def on_open(self, websocket):
print('PubSub has been opened.')
async def on_message(self, ws, message):
print(f'Message received:\n{message}\n\n')
async def on_close(self):
print('PubSub has been closed.')
async def on_error(self, ws, exception):
print(f'An error has occurred:\n{exception}\n\n')
topics = [f'channel-points-channel-v1.{user_token.user_id}']
pubsub = MyPubSub(user_token, topics)
pubsub.connect()
User access token
from mytwitch.auth import UserToken
client_id = 'abcdefghijklmnopqrstuvwxyz0123456789'
scope = ['chat:read']
user_token = UserToken(
client_id,
scope,
immed_auth = True
)
print(f'My requested token is `{user_token}`')
Terminal Commands
There are commands for authentication if you don't want to have to set up a file for such simple operations.
These commands use Mytwitch's client ID, by default, but you can specify your own with -C
.
Authentication
Create new token
python -m mytwitch auth -NS 'chat:read' 'chat:edit'
Revoke token
python -m mytwitch auth -RT 'abcdefghijklmnopqrstuvwxyz0123456789'