![Twitch to Sheets](https://private-user-images.githubusercontent.com/119079347/331697957-c58a8b3c-df07-4379-8980-5fc1fbf1f69a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjE4NDA0NzMsIm5iZiI6MTcyMTg0MDE3MywicGF0aCI6Ii8xMTkwNzkzNDcvMzMxNjk3OTU3LWM1OGE4YjNjLWRmMDctNDM3OS04OTgwLTVmYzFmYmYxZjY5YS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNzI0JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDcyNFQxNjU2MTNaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT05ZDI5N2YzNjFlYzRiZWZjOWNhYTU3N2UxMTA3OTQwNGI3Y2U0YjY4ODY4NzljYWFiMjY1NDY1YWIwYzQ0Y2MwJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.ViRmLqjSe4XKbdVx71UBE_ohdcXlv1SYKflV7ztyz_8)
Proud to introduce CipsToSheets (CTS), a simple python script solving a major problem. I undertook this project to help a few streamer clients and their editors.
I try to write about most of my projects so I can avoid the hurdles on the run back.
The application in itself will not have any major updates in the coming days, however I may update the readMe. I've made some proper documentation on how to use the app from a beginners standpoint.
Explore the docs »
·
Report Bug
·
Request Feature
Table of Contents
Follow the instructions here and then run the following command inside of a powershell / terminal of your choice inside of the directory that holds the script.py:
I needed to add "python" at the start
python -m PyInstaller --onefile .\stream_socket.py
Built with Python 3.10.12
This is an example of how you may give instructions on setting up your project locally. To get a local copy up and running follow these simple example steps.
This setup was built using Python 3.10.12 on Windows 10 Home. It should yield similar results on compatible systems. If you requested the executable version, it will only work if we're on the same OS.
You will need a few tools for this specific setup:
-
OBS Studio
- Download and Setup: Download OBS Studio here. Create an account and follow the basic setup instructions.
-
Twitch
- Account Setup: Set up a Twitch account. This does not need to be the same email as your Google account. It will post to any Google Sheet as long as it is authorized to do so.
-
Streamer.bot
- Download: Get Streamer.bot here. This was the preferred application used by a majority of clients to enable Google Sheets communication.
-
Google Account
-
Account Creation: Create a Google account.
-
Google Developer Console: Configure your Google Developer Console. Once logged in, your page should resemble the image below:
-
Create a Project: Name it whatever you like and hit 'Create'.
-
Configure Your Consent Screen:
- Choose 'External' since 'Internal' requires an organization.
- Fill out your application name.
- Developer contact information is required.
- Scopes: This can be left empty if preferred.
- Test Users: Very important to add your email (the email hosting the Google Sheet is what I used, but any you have local access to is fine) to the test users list for later adjustments.
-
To create OAuth credentials for your application, follow these steps:
-
Navigate to the Dashboard: From the Google Developer Console, click on 'Credentials' on the left-hand side menu.
-
Create OAuth Client ID:
This sets up the authentication framework your application will use to interact with Google services.
- Download JSON:
- Make sure you've completed the ( prerequisites)
- Clone the repo
git clone https://github.com/mako314/ClipsToSheetsPython.git
-
python3 script_name.py python script_name.py
- Grab your "spreadsheet id" and "named range / spread range"
Finding my Spreadsheet Id:
- First it'll help to explain what the spreadhseet is, and where exactly to find the ID.
- So in the example below, our Spreadsheet Id is: 1sQ_IkgaJls2gpW4zBbSSfuzDnqjqyB_tJ_wIwgvvRHM
- Store it in the same folder as your repository or executable.
Finding my range:
- I know I specifically state range, but if you'd like a deeper understanding, this is what I'm actually requesting.
This is the area that we will be able to make changes to!
so for our example, these are our variables: spreadsheetId = 1sQ_IkgaJls2gpW4zBbSSfuzDnqjqyB_tJ_wIwgvvRHM rangeName = A2:C16
It's okay if you forget them, they're easy reacquire and are replaceable
****:
- Easy way:
-
Click Import > Paste into the import string box > Import > Close
-
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
-
Import, close, and ENABLE the command
-
With the Script Running:
- If you haven't navigate to the Servers/Clients > Websocket Clients > Right Click the Existing One > Connnect (Optional: Enable auto and reconnect)
![Timestamp In Use GIF](https://private-user-images.githubusercontent.com/119079347/331684535-a3d9f529-7279-47cd-8707-e4a1b277a5fd.gif?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjE4NDA0NzMsIm5iZiI6MTcyMTg0MDE3MywicGF0aCI6Ii8xMTkwNzkzNDcvMzMxNjg0NTM1LWEzZDlmNTI5LTcyNzktNDdjZC04NzA3LWU0YTFiMjc3YTVmZC5naWY_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNzI0JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDcyNFQxNjU2MTNaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0xMWU4YjVhNjU0NGU2MmE0MzQ5ZjQxNDMwN2RjMmI5YTMzMWM2NDQxYjFjOTBjYjhmMWNhN2U4NGNmMmE3NjFjJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.jp7j7w5DkExUpT792Yrr0Lc9u4X65nvda9TBBS5wKT8)
Description: This GIF demonstrates the practical application of timestamps within the system, showcasing how events are logged and tracked with precision.
![Random User Timestamp GIF](https://private-user-images.githubusercontent.com/119079347/331684624-b0988669-9ae9-42f3-b641-0edb501693fb.gif?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjE4NDA0NzMsIm5iZiI6MTcyMTg0MDE3MywicGF0aCI6Ii8xMTkwNzkzNDcvMzMxNjg0NjI0LWIwOTg4NjY5LTlhZTktNDJmMy1iNjQxLTBlZGI1MDE2OTNmYi5naWY_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNzI0JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDcyNFQxNjU2MTNaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT01MzA4MmQzMDdjMjRiYjMzNzk1NDNlYTI2MDNhOGU1MTJiMWM3Njk2MjRmY2MxMjBhOThkZDhkZjFhMDJkMDE5JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.HK9eHNbHVP7EZ-Em1w9S1WBMGn2NG7HA6DY_C_Smbes)
Description: This GIF provides a visual walkthrough of a random user's timestamp data, highlighting how it appears and functions within the platform.
![Organize Clips By Time GIF](https://private-user-images.githubusercontent.com/119079347/331684638-cbcf93db-6aa0-4312-897e-3321c978810b.gif?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjE4NDA0NzMsIm5iZiI6MTcyMTg0MDE3MywicGF0aCI6Ii8xMTkwNzkzNDcvMzMxNjg0NjM4LWNiY2Y5M2RiLTZhYTAtNDMxMi04OTdlLTMzMjFjOTc4ODEwYi5naWY_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNzI0JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDcyNFQxNjU2MTNaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1jOWY2OTM5YTE5YjI1ODI3ZDVhNTIzNGE3M2Y5OTVmZmE3NzA0MzdiMzVhNjBhZTcwZjJlYWRjMTI2OTQzNGU1JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.RPEz_HZcqTmlP_LEldizqhKvmssumMEL6VXwVXVi6eI)
Description: Observe the organizational features of the system in this GIF, showcasing the methodical sorting of clips by their timestamps for enhanced navigation and efficiency.
For more examples, please refer to the Documentation
- [ 1 ] Mac Support
- [ 2 ] Linux support
- [ 3 ] Add custom message with clip
See the open issues for a full list of proposed features (and known issues).
Originally I had intended for this project to remain private. However I've taken a turn in the world of building in public. That being said, this will remain free, forever. That being said, I wont't have as much time to maintain this as I'd like. I'm truly passionate about full stack development but I learned a tremendous amount in the development of this app.
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the MIT License. See LICENSE.txt
for more information.
Discord: makocodesnow
Email: [email protected]
Portfolio: Macolister
LinkedIn: LinkedIn
Project Link: https://github.com/mako314/ClipsToSheetsPython