Repository files navigation

StreamTitle
StreamTitle is a little tool that I made so that I can change my
stream information from the command line. And if you configure it
properly, so it can for you.
How to configure
Go to the Twitch Developer Console (https://dev.twitch.tv/console)
and create a new application. The OAuth redirection URL must be
set to http://localhost:9300/st-callback but aside from that, you
can call the application whatever you want. Grab the client ID and
the client secret.
Create a file in $XDG_CONFIG_DIR/StreamTitle/config.toml with the
following two lines, having the values that are described below.
On macOS, the config.toml configuration file has to be created in
~/Library/Application Support/StreamTitle/config.toml.
# Replace with the actual values provided by the console
client_id = 'x'
client_secret = 'x'
How to use
On first start, or if the refresh token expires or gets
invalidated, you will be asked to login again or authorize the
application. It will print an URL, open it on your browser and
authorize the application.
To test the token connection, you can print your stream
information with the -current flag.
streamtitle -current
Current stream information:
Title: Golang development
Game: 1469308723
Language: en
Tags: [Golang Terminal Development]
You can use one or many flags to change the stream
information. You might need to pass the values in quotes to
prevent weird things from happening.
- `-title`: set the new stream title: `streamtitle -title "cooking
pasta"`
- `-game`: set the stream category; you need the category ID
(there are Google searches that can tell you the category ID):
`streamtitle -game 509670`
- `-lang`: set the stream language; use two character ISO code:
`streamtitle -lang es`
- `-tags`: set the stream tags; provide up to ten alphanumerical
strings separated by commas, no spaces: `streamtitle -tags
SafeSpace,Role,Retro`
A more complete example:
streamtitle -title "cooking pasta" -game 509667 -lang en
If you find yourself switching between two configurations many
times (for instance, if you find yourself changing between two
categories or reusing the same set of tags or title for different
streams), you might want to look into profiles.
A profile is a prerecorded set of title, category, language and
tags, which can be saved in the config file. It is possible to ask
StreamTitle to set the channel information from a profile.
To create a profile, add a table called "profiles". Each nested
table defines a profile called with the key of the profile. Each
nested table may have up to 4 keys: title (string), language
(string), game (number) and tags (string array).
[profiles.cooking]
game = 509667
language = 'en'
tags = [ 'Cooking', 'Dishes', 'IRL' ]
[profiles.programming]
game = 1469308723
tags = ['Programming', 'Golang']
[profiles.darksouls]
game = 490292
title = 'Dark Souls 100% no hit run'
tags = ['NoHit', 'NoBackseating', 'DarkSouls']
language = 'en'
Properties are not mandatory. You can skip a field, and it will
keep the previous value. So for instance if I don't set the
language in my profile then it will not update the value for that
field; effectively keeping the same language as before.
To use a profile, use the -profile parameter. It will update the
channel information to the contents of the profile that has been
set.
streamtitle -profile darksouls
You can also merge a profile with inline parameters. Inline
parameters always override the profile content, and this is useful
for profiles where you just want to change the game and the tags,
but you'd want to provide your own title.
streamtitle -profile programming -title 'Time to program some Go!'
You can list your available profiles using the following
command. It will print each profile name into a separate line.
streamtitle -list-profiles
Debug
You can always inspect what is the application is doing by using
the -verbose flag, which will print additional messages to the
terminal as the program does its things, such as login, update the
channel information or report errors.
You can also use the -dry-run option to avoid updating the stream
information. In conjunction, using -verbose -dry-run is a way to
check what will the final channel information will be set to
without actually changing the values.
streamtitle -dry-run -verbose -profile cooking -title 'Pizza night'
2024/02/18 Fetching stream information...
2024/02/18 Updating stream information...
2024/02/18 New title: Pizza night
2024/02/18 New game ID: 509667
2024/02/18 New language: en
2024/02/18 Tag list: [Cooking Dishes IRL]
2024/02/18 Skipping update because we are running in dry-run mode

About

A command line tool to change the title, category and tags of Twitch livestreams. This is a read-only mirror.

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

StreamTitle
StreamTitle is a little tool that I made so that I can change my
stream information from the command line. And if you configure it
properly, so it can for you.
How to configure
Go to the Twitch Developer Console (https://dev.twitch.tv/console)
and create a new application. The OAuth redirection URL must be
set to http://localhost:9300/st-callback but aside from that, you
can call the application whatever you want. Grab the client ID and
the client secret.
Create a file in $XDG_CONFIG_DIR/StreamTitle/config.toml with the
following two lines, having the values that are described below.
On macOS, the config.toml configuration file has to be created in
~/Library/Application Support/StreamTitle/config.toml.
# Replace with the actual values provided by the console
client_id = 'x'
client_secret = 'x'
How to use
On first start, or if the refresh token expires or gets
invalidated, you will be asked to login again or authorize the
application. It will print an URL, open it on your browser and
authorize the application.
To test the token connection, you can print your stream
information with the -current flag.
streamtitle -current
Current stream information:
Title: Golang development
Game: 1469308723
Language: en
Tags: [Golang Terminal Development]
You can use one or many flags to change the stream
information. You might need to pass the values in quotes to
prevent weird things from happening.
- `-title`: set the new stream title: `streamtitle -title "cooking
pasta"`
- `-game`: set the stream category; you need the category ID
(there are Google searches that can tell you the category ID):
`streamtitle -game 509670`
- `-lang`: set the stream language; use two character ISO code:
`streamtitle -lang es`
- `-tags`: set the stream tags; provide up to ten alphanumerical
strings separated by commas, no spaces: `streamtitle -tags
SafeSpace,Role,Retro`
A more complete example:
streamtitle -title "cooking pasta" -game 509667 -lang en
If you find yourself switching between two configurations many
times (for instance, if you find yourself changing between two
categories or reusing the same set of tags or title for different
streams), you might want to look into profiles.
A profile is a prerecorded set of title, category, language and
tags, which can be saved in the config file. It is possible to ask
StreamTitle to set the channel information from a profile.
To create a profile, add a table called "profiles". Each nested
table defines a profile called with the key of the profile. Each
nested table may have up to 4 keys: title (string), language
(string), game (number) and tags (string array).
[profiles.cooking]
game = 509667
language = 'en'
tags = [ 'Cooking', 'Dishes', 'IRL' ]
[profiles.programming]
game = 1469308723
tags = ['Programming', 'Golang']
[profiles.darksouls]
game = 490292
title = 'Dark Souls 100% no hit run'
tags = ['NoHit', 'NoBackseating', 'DarkSouls']
language = 'en'
Properties are not mandatory. You can skip a field, and it will
keep the previous value. So for instance if I don't set the
language in my profile then it will not update the value for that
field; effectively keeping the same language as before.
To use a profile, use the -profile parameter. It will update the
channel information to the contents of the profile that has been
set.
streamtitle -profile darksouls
You can also merge a profile with inline parameters. Inline
parameters always override the profile content, and this is useful
for profiles where you just want to change the game and the tags,
but you'd want to provide your own title.
streamtitle -profile programming -title 'Time to program some Go!'
You can list your available profiles using the following
command. It will print each profile name into a separate line.
streamtitle -list-profiles
Debug
You can always inspect what is the application is doing by using
the -verbose flag, which will print additional messages to the
terminal as the program does its things, such as login, update the
channel information or report errors.
You can also use the -dry-run option to avoid updating the stream
information. In conjunction, using -verbose -dry-run is a way to
check what will the final channel information will be set to
without actually changing the values.
streamtitle -dry-run -verbose -profile cooking -title 'Pizza night'
2024/02/18 Fetching stream information...
2024/02/18 Updating stream information...
2024/02/18 New title: Pizza night
2024/02/18 New game ID: 509667
2024/02/18 New language: en
2024/02/18 Tag list: [Cooking Dishes IRL]
2024/02/18 Skipping update because we are running in dry-run mode

About

A command line tool to change the title, category and tags of Twitch livestreams. This is a read-only mirror.

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

StreamTitle
StreamTitle is a little tool that I made so that I can change my
stream information from the command line. And if you configure it
properly, so it can for you.
How to configure
Go to the Twitch Developer Console (https://dev.twitch.tv/console)
and create a new application. The OAuth redirection URL must be
set to http://localhost:9300/st-callback but aside from that, you
can call the application whatever you want. Grab the client ID and
the client secret.
Create a file in $XDG_CONFIG_DIR/StreamTitle/config.toml with the
following two lines, having the values that are described below.
On macOS, the config.toml configuration file has to be created in
~/Library/Application Support/StreamTitle/config.toml.
# Replace with the actual values provided by the console
client_id = 'x'
client_secret = 'x'
How to use
On first start, or if the refresh token expires or gets
invalidated, you will be asked to login again or authorize the
application. It will print an URL, open it on your browser and
authorize the application.
To test the token connection, you can print your stream
information with the -current flag.
streamtitle -current
Current stream information:
Title: Golang development
Game: 1469308723
Language: en
Tags: [Golang Terminal Development]
You can use one or many flags to change the stream
information. You might need to pass the values in quotes to
prevent weird things from happening.
- `-title`: set the new stream title: `streamtitle -title "cooking
pasta"`
- `-game`: set the stream category; you need the category ID
(there are Google searches that can tell you the category ID):
`streamtitle -game 509670`
- `-lang`: set the stream language; use two character ISO code:
`streamtitle -lang es`
- `-tags`: set the stream tags; provide up to ten alphanumerical
strings separated by commas, no spaces: `streamtitle -tags
SafeSpace,Role,Retro`
A more complete example:
streamtitle -title "cooking pasta" -game 509667 -lang en
If you find yourself switching between two configurations many
times (for instance, if you find yourself changing between two
categories or reusing the same set of tags or title for different
streams), you might want to look into profiles.
A profile is a prerecorded set of title, category, language and
tags, which can be saved in the config file. It is possible to ask
StreamTitle to set the channel information from a profile.
To create a profile, add a table called "profiles". Each nested
table defines a profile called with the key of the profile. Each
nested table may have up to 4 keys: title (string), language
(string), game (number) and tags (string array).
[profiles.cooking]
game = 509667
language = 'en'
tags = [ 'Cooking', 'Dishes', 'IRL' ]
[profiles.programming]
game = 1469308723
tags = ['Programming', 'Golang']
[profiles.darksouls]
game = 490292
title = 'Dark Souls 100% no hit run'
tags = ['NoHit', 'NoBackseating', 'DarkSouls']
language = 'en'
Properties are not mandatory. You can skip a field, and it will
keep the previous value. So for instance if I don't set the
language in my profile then it will not update the value for that
field; effectively keeping the same language as before.
To use a profile, use the -profile parameter. It will update the
channel information to the contents of the profile that has been
set.
streamtitle -profile darksouls
You can also merge a profile with inline parameters. Inline
parameters always override the profile content, and this is useful
for profiles where you just want to change the game and the tags,
but you'd want to provide your own title.
streamtitle -profile programming -title 'Time to program some Go!'
You can list your available profiles using the following
command. It will print each profile name into a separate line.
streamtitle -list-profiles
Debug
You can always inspect what is the application is doing by using
the -verbose flag, which will print additional messages to the
terminal as the program does its things, such as login, update the
channel information or report errors.
You can also use the -dry-run option to avoid updating the stream
information. In conjunction, using -verbose -dry-run is a way to
check what will the final channel information will be set to
without actually changing the values.
streamtitle -dry-run -verbose -profile cooking -title 'Pizza night'
2024/02/18 Fetching stream information...
2024/02/18 Updating stream information...
2024/02/18 New title: Pizza night
2024/02/18 New game ID: 509667
2024/02/18 New language: en
2024/02/18 Tag list: [Cooking Dishes IRL]
2024/02/18 Skipping update because we are running in dry-run mode

About

A command line tool to change the title, category and tags of Twitch livestreams. This is a read-only mirror.

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

StreamTitle
StreamTitle is a little tool that I made so that I can change my
stream information from the command line. And if you configure it
properly, so it can for you.
How to configure
Go to the Twitch Developer Console (https://dev.twitch.tv/console)
and create a new application. The OAuth redirection URL must be
set to http://localhost:9300/st-callback but aside from that, you
can call the application whatever you want. Grab the client ID and
the client secret.
Create a file in $XDG_CONFIG_DIR/StreamTitle/config.toml with the
following two lines, having the values that are described below.
On macOS, the config.toml configuration file has to be created in
~/Library/Application Support/StreamTitle/config.toml.
# Replace with the actual values provided by the console
client_id = 'x'
client_secret = 'x'
How to use
On first start, or if the refresh token expires or gets
invalidated, you will be asked to login again or authorize the
application. It will print an URL, open it on your browser and
authorize the application.
To test the token connection, you can print your stream
information with the -current flag.
streamtitle -current
Current stream information:
Title: Golang development
Game: 1469308723
Language: en
Tags: [Golang Terminal Development]
You can use one or many flags to change the stream
information. You might need to pass the values in quotes to
prevent weird things from happening.
- `-title`: set the new stream title: `streamtitle -title "cooking
pasta"`
- `-game`: set the stream category; you need the category ID
(there are Google searches that can tell you the category ID):
`streamtitle -game 509670`
- `-lang`: set the stream language; use two character ISO code:
`streamtitle -lang es`
- `-tags`: set the stream tags; provide up to ten alphanumerical
strings separated by commas, no spaces: `streamtitle -tags
SafeSpace,Role,Retro`
A more complete example:
streamtitle -title "cooking pasta" -game 509667 -lang en
If you find yourself switching between two configurations many
times (for instance, if you find yourself changing between two
categories or reusing the same set of tags or title for different
streams), you might want to look into profiles.
A profile is a prerecorded set of title, category, language and
tags, which can be saved in the config file. It is possible to ask
StreamTitle to set the channel information from a profile.
To create a profile, add a table called "profiles". Each nested
table defines a profile called with the key of the profile. Each
nested table may have up to 4 keys: title (string), language
(string), game (number) and tags (string array).
[profiles.cooking]
game = 509667
language = 'en'
tags = [ 'Cooking', 'Dishes', 'IRL' ]
[profiles.programming]
game = 1469308723
tags = ['Programming', 'Golang']
[profiles.darksouls]
game = 490292
title = 'Dark Souls 100% no hit run'
tags = ['NoHit', 'NoBackseating', 'DarkSouls']
language = 'en'
Properties are not mandatory. You can skip a field, and it will
keep the previous value. So for instance if I don't set the
language in my profile then it will not update the value for that
field; effectively keeping the same language as before.
To use a profile, use the -profile parameter. It will update the
channel information to the contents of the profile that has been
set.
streamtitle -profile darksouls
You can also merge a profile with inline parameters. Inline
parameters always override the profile content, and this is useful
for profiles where you just want to change the game and the tags,
but you'd want to provide your own title.
streamtitle -profile programming -title 'Time to program some Go!'
You can list your available profiles using the following
command. It will print each profile name into a separate line.
streamtitle -list-profiles
Debug
You can always inspect what is the application is doing by using
the -verbose flag, which will print additional messages to the
terminal as the program does its things, such as login, update the
channel information or report errors.
You can also use the -dry-run option to avoid updating the stream
information. In conjunction, using -verbose -dry-run is a way to
check what will the final channel information will be set to
without actually changing the values.
streamtitle -dry-run -verbose -profile cooking -title 'Pizza night'
2024/02/18 Fetching stream information...
2024/02/18 Updating stream information...
2024/02/18 New title: Pizza night
2024/02/18 New game ID: 509667
2024/02/18 New language: en
2024/02/18 Tag list: [Cooking Dishes IRL]
2024/02/18 Skipping update because we are running in dry-run mode

About

A command line tool to change the title, category and tags of Twitch livestreams. This is a read-only mirror.

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

StreamTitle
StreamTitle is a little tool that I made so that I can change my
stream information from the command line. And if you configure it
properly, so it can for you.
How to configure
Go to the Twitch Developer Console (https://dev.twitch.tv/console)
and create a new application. The OAuth redirection URL must be
set to http://localhost:9300/st-callback but aside from that, you
can call the application whatever you want. Grab the client ID and
the client secret.
Create a file in $XDG_CONFIG_DIR/StreamTitle/config.toml with the
following two lines, having the values that are described below.
On macOS, the config.toml configuration file has to be created in
~/Library/Application Support/StreamTitle/config.toml.
# Replace with the actual values provided by the console
client_id = 'x'
client_secret = 'x'
How to use
On first start, or if the refresh token expires or gets
invalidated, you will be asked to login again or authorize the
application. It will print an URL, open it on your browser and
authorize the application.
To test the token connection, you can print your stream
information with the -current flag.
streamtitle -current
Current stream information:
Title: Golang development
Game: 1469308723
Language: en
Tags: [Golang Terminal Development]
You can use one or many flags to change the stream
information. You might need to pass the values in quotes to
prevent weird things from happening.
- `-title`: set the new stream title: `streamtitle -title "cooking
pasta"`
- `-game`: set the stream category; you need the category ID
(there are Google searches that can tell you the category ID):
`streamtitle -game 509670`
- `-lang`: set the stream language; use two character ISO code:
`streamtitle -lang es`
- `-tags`: set the stream tags; provide up to ten alphanumerical
strings separated by commas, no spaces: `streamtitle -tags
SafeSpace,Role,Retro`
A more complete example:
streamtitle -title "cooking pasta" -game 509667 -lang en
If you find yourself switching between two configurations many
times (for instance, if you find yourself changing between two
categories or reusing the same set of tags or title for different
streams), you might want to look into profiles.
A profile is a prerecorded set of title, category, language and
tags, which can be saved in the config file. It is possible to ask
StreamTitle to set the channel information from a profile.
To create a profile, add a table called "profiles". Each nested
table defines a profile called with the key of the profile. Each
nested table may have up to 4 keys: title (string), language
(string), game (number) and tags (string array).
[profiles.cooking]
game = 509667
language = 'en'
tags = [ 'Cooking', 'Dishes', 'IRL' ]
[profiles.programming]
game = 1469308723
tags = ['Programming', 'Golang']
[profiles.darksouls]
game = 490292
title = 'Dark Souls 100% no hit run'
tags = ['NoHit', 'NoBackseating', 'DarkSouls']
language = 'en'
Properties are not mandatory. You can skip a field, and it will
keep the previous value. So for instance if I don't set the
language in my profile then it will not update the value for that
field; effectively keeping the same language as before.
To use a profile, use the -profile parameter. It will update the
channel information to the contents of the profile that has been
set.
streamtitle -profile darksouls
You can also merge a profile with inline parameters. Inline
parameters always override the profile content, and this is useful
for profiles where you just want to change the game and the tags,
but you'd want to provide your own title.
streamtitle -profile programming -title 'Time to program some Go!'
You can list your available profiles using the following
command. It will print each profile name into a separate line.
streamtitle -list-profiles
Debug
You can always inspect what is the application is doing by using
the -verbose flag, which will print additional messages to the
terminal as the program does its things, such as login, update the
channel information or report errors.
You can also use the -dry-run option to avoid updating the stream
information. In conjunction, using -verbose -dry-run is a way to
check what will the final channel information will be set to
without actually changing the values.
streamtitle -dry-run -verbose -profile cooking -title 'Pizza night'
2024/02/18 Fetching stream information...
2024/02/18 Updating stream information...
2024/02/18 New title: Pizza night
2024/02/18 New game ID: 509667
2024/02/18 New language: en
2024/02/18 Tag list: [Cooking Dishes IRL]
2024/02/18 Skipping update because we are running in dry-run mode

About

A command line tool to change the title, category and tags of Twitch livestreams. This is a read-only mirror.

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

StreamTitle
StreamTitle is a little tool that I made so that I can change my
stream information from the command line. And if you configure it
properly, so it can for you.
How to configure
Go to the Twitch Developer Console (https://dev.twitch.tv/console)
and create a new application. The OAuth redirection URL must be
set to http://localhost:9300/st-callback but aside from that, you
can call the application whatever you want. Grab the client ID and
the client secret.
Create a file in $XDG_CONFIG_DIR/StreamTitle/config.toml with the
following two lines, having the values that are described below.
On macOS, the config.toml configuration file has to be created in
~/Library/Application Support/StreamTitle/config.toml.
# Replace with the actual values provided by the console
client_id = 'x'
client_secret = 'x'
How to use
On first start, or if the refresh token expires or gets
invalidated, you will be asked to login again or authorize the
application. It will print an URL, open it on your browser and
authorize the application.
To test the token connection, you can print your stream
information with the -current flag.
streamtitle -current
Current stream information:
Title: Golang development
Game: 1469308723
Language: en
Tags: [Golang Terminal Development]
You can use one or many flags to change the stream
information. You might need to pass the values in quotes to
prevent weird things from happening.
- `-title`: set the new stream title: `streamtitle -title "cooking
pasta"`
- `-game`: set the stream category; you need the category ID
(there are Google searches that can tell you the category ID):
`streamtitle -game 509670`
- `-lang`: set the stream language; use two character ISO code:
`streamtitle -lang es`
- `-tags`: set the stream tags; provide up to ten alphanumerical
strings separated by commas, no spaces: `streamtitle -tags
SafeSpace,Role,Retro`
A more complete example:
streamtitle -title "cooking pasta" -game 509667 -lang en
If you find yourself switching between two configurations many
times (for instance, if you find yourself changing between two
categories or reusing the same set of tags or title for different
streams), you might want to look into profiles.
A profile is a prerecorded set of title, category, language and
tags, which can be saved in the config file. It is possible to ask
StreamTitle to set the channel information from a profile.
To create a profile, add a table called "profiles". Each nested
table defines a profile called with the key of the profile. Each
nested table may have up to 4 keys: title (string), language
(string), game (number) and tags (string array).
[profiles.cooking]
game = 509667
language = 'en'
tags = [ 'Cooking', 'Dishes', 'IRL' ]
[profiles.programming]
game = 1469308723
tags = ['Programming', 'Golang']
[profiles.darksouls]
game = 490292
title = 'Dark Souls 100% no hit run'
tags = ['NoHit', 'NoBackseating', 'DarkSouls']
language = 'en'
Properties are not mandatory. You can skip a field, and it will
keep the previous value. So for instance if I don't set the
language in my profile then it will not update the value for that
field; effectively keeping the same language as before.
To use a profile, use the -profile parameter. It will update the
channel information to the contents of the profile that has been
set.
streamtitle -profile darksouls
You can also merge a profile with inline parameters. Inline
parameters always override the profile content, and this is useful
for profiles where you just want to change the game and the tags,
but you'd want to provide your own title.
streamtitle -profile programming -title 'Time to program some Go!'
You can list your available profiles using the following
command. It will print each profile name into a separate line.
streamtitle -list-profiles
Debug
You can always inspect what is the application is doing by using
the -verbose flag, which will print additional messages to the
terminal as the program does its things, such as login, update the
channel information or report errors.
You can also use the -dry-run option to avoid updating the stream
information. In conjunction, using -verbose -dry-run is a way to
check what will the final channel information will be set to
without actually changing the values.
streamtitle -dry-run -verbose -profile cooking -title 'Pizza night'
2024/02/18 Fetching stream information...
2024/02/18 Updating stream information...
2024/02/18 New title: Pizza night
2024/02/18 New game ID: 509667
2024/02/18 New language: en
2024/02/18 Tag list: [Cooking Dishes IRL]
2024/02/18 Skipping update because we are running in dry-run mode

About

A command line tool to change the title, category and tags of Twitch livestreams. This is a read-only mirror.

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

StreamTitle
StreamTitle is a little tool that I made so that I can change my
stream information from the command line. And if you configure it
properly, so it can for you.
How to configure
Go to the Twitch Developer Console (https://dev.twitch.tv/console)
and create a new application. The OAuth redirection URL must be
set to http://localhost:9300/st-callback but aside from that, you
can call the application whatever you want. Grab the client ID and
the client secret.
Create a file in $XDG_CONFIG_DIR/StreamTitle/config.toml with the
following two lines, having the values that are described below.
On macOS, the config.toml configuration file has to be created in
~/Library/Application Support/StreamTitle/config.toml.
# Replace with the actual values provided by the console
client_id = 'x'
client_secret = 'x'
How to use
On first start, or if the refresh token expires or gets
invalidated, you will be asked to login again or authorize the
application. It will print an URL, open it on your browser and
authorize the application.
To test the token connection, you can print your stream
information with the -current flag.
streamtitle -current
Current stream information:
Title: Golang development
Game: 1469308723
Language: en
Tags: [Golang Terminal Development]
You can use one or many flags to change the stream
information. You might need to pass the values in quotes to
prevent weird things from happening.
- `-title`: set the new stream title: `streamtitle -title "cooking
pasta"`
- `-game`: set the stream category; you need the category ID
(there are Google searches that can tell you the category ID):
`streamtitle -game 509670`
- `-lang`: set the stream language; use two character ISO code:
`streamtitle -lang es`
- `-tags`: set the stream tags; provide up to ten alphanumerical
strings separated by commas, no spaces: `streamtitle -tags
SafeSpace,Role,Retro`
A more complete example:
streamtitle -title "cooking pasta" -game 509667 -lang en
If you find yourself switching between two configurations many
times (for instance, if you find yourself changing between two
categories or reusing the same set of tags or title for different
streams), you might want to look into profiles.
A profile is a prerecorded set of title, category, language and
tags, which can be saved in the config file. It is possible to ask
StreamTitle to set the channel information from a profile.
To create a profile, add a table called "profiles". Each nested
table defines a profile called with the key of the profile. Each
nested table may have up to 4 keys: title (string), language
(string), game (number) and tags (string array).
[profiles.cooking]
game = 509667
language = 'en'
tags = [ 'Cooking', 'Dishes', 'IRL' ]
[profiles.programming]
game = 1469308723
tags = ['Programming', 'Golang']
[profiles.darksouls]
game = 490292
title = 'Dark Souls 100% no hit run'
tags = ['NoHit', 'NoBackseating', 'DarkSouls']
language = 'en'
Properties are not mandatory. You can skip a field, and it will
keep the previous value. So for instance if I don't set the
language in my profile then it will not update the value for that
field; effectively keeping the same language as before.
To use a profile, use the -profile parameter. It will update the
channel information to the contents of the profile that has been
set.
streamtitle -profile darksouls
You can also merge a profile with inline parameters. Inline
parameters always override the profile content, and this is useful
for profiles where you just want to change the game and the tags,
but you'd want to provide your own title.
streamtitle -profile programming -title 'Time to program some Go!'
You can list your available profiles using the following
command. It will print each profile name into a separate line.
streamtitle -list-profiles
Debug
You can always inspect what is the application is doing by using
the -verbose flag, which will print additional messages to the
terminal as the program does its things, such as login, update the
channel information or report errors.
You can also use the -dry-run option to avoid updating the stream
information. In conjunction, using -verbose -dry-run is a way to
check what will the final channel information will be set to
without actually changing the values.
streamtitle -dry-run -verbose -profile cooking -title 'Pizza night'
2024/02/18 Fetching stream information...
2024/02/18 Updating stream information...
2024/02/18 New title: Pizza night
2024/02/18 New game ID: 509667
2024/02/18 New language: en
2024/02/18 Tag list: [Cooking Dishes IRL]
2024/02/18 Skipping update because we are running in dry-run mode

About

A command line tool to change the title, category and tags of Twitch livestreams. This is a read-only mirror.

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

StreamTitle
StreamTitle is a little tool that I made so that I can change my
stream information from the command line. And if you configure it
properly, so it can for you.
How to configure
Go to the Twitch Developer Console (https://dev.twitch.tv/console)
and create a new application. The OAuth redirection URL must be
set to http://localhost:9300/st-callback but aside from that, you
can call the application whatever you want. Grab the client ID and
the client secret.
Create a file in $XDG_CONFIG_DIR/StreamTitle/config.toml with the
following two lines, having the values that are described below.
On macOS, the config.toml configuration file has to be created in
~/Library/Application Support/StreamTitle/config.toml.
# Replace with the actual values provided by the console
client_id = 'x'
client_secret = 'x'
How to use
On first start, or if the refresh token expires or gets
invalidated, you will be asked to login again or authorize the
application. It will print an URL, open it on your browser and
authorize the application.
To test the token connection, you can print your stream
information with the -current flag.
streamtitle -current
Current stream information:
Title: Golang development
Game: 1469308723
Language: en
Tags: [Golang Terminal Development]
You can use one or many flags to change the stream
information. You might need to pass the values in quotes to
prevent weird things from happening.
- `-title`: set the new stream title: `streamtitle -title "cooking
pasta"`
- `-game`: set the stream category; you need the category ID
(there are Google searches that can tell you the category ID):
`streamtitle -game 509670`
- `-lang`: set the stream language; use two character ISO code:
`streamtitle -lang es`
- `-tags`: set the stream tags; provide up to ten alphanumerical
strings separated by commas, no spaces: `streamtitle -tags
SafeSpace,Role,Retro`
A more complete example:
streamtitle -title "cooking pasta" -game 509667 -lang en
If you find yourself switching between two configurations many
times (for instance, if you find yourself changing between two
categories or reusing the same set of tags or title for different
streams), you might want to look into profiles.
A profile is a prerecorded set of title, category, language and
tags, which can be saved in the config file. It is possible to ask
StreamTitle to set the channel information from a profile.
To create a profile, add a table called "profiles". Each nested
table defines a profile called with the key of the profile. Each
nested table may have up to 4 keys: title (string), language
(string), game (number) and tags (string array).
[profiles.cooking]
game = 509667
language = 'en'
tags = [ 'Cooking', 'Dishes', 'IRL' ]
[profiles.programming]
game = 1469308723
tags = ['Programming', 'Golang']
[profiles.darksouls]
game = 490292
title = 'Dark Souls 100% no hit run'
tags = ['NoHit', 'NoBackseating', 'DarkSouls']
language = 'en'
Properties are not mandatory. You can skip a field, and it will
keep the previous value. So for instance if I don't set the
language in my profile then it will not update the value for that
field; effectively keeping the same language as before.
To use a profile, use the -profile parameter. It will update the
channel information to the contents of the profile that has been
set.
streamtitle -profile darksouls
You can also merge a profile with inline parameters. Inline
parameters always override the profile content, and this is useful
for profiles where you just want to change the game and the tags,
but you'd want to provide your own title.
streamtitle -profile programming -title 'Time to program some Go!'
You can list your available profiles using the following
command. It will print each profile name into a separate line.
streamtitle -list-profiles
Debug
You can always inspect what is the application is doing by using
the -verbose flag, which will print additional messages to the
terminal as the program does its things, such as login, update the
channel information or report errors.
You can also use the -dry-run option to avoid updating the stream
information. In conjunction, using -verbose -dry-run is a way to
check what will the final channel information will be set to
without actually changing the values.
streamtitle -dry-run -verbose -profile cooking -title 'Pizza night'
2024/02/18 Fetching stream information...
2024/02/18 Updating stream information...
2024/02/18 New title: Pizza night
2024/02/18 New game ID: 509667
2024/02/18 New language: en
2024/02/18 Tag list: [Cooking Dishes IRL]
2024/02/18 Skipping update because we are running in dry-run mode

About

A command line tool to change the title, category and tags of Twitch livestreams. This is a read-only mirror.

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages