1
0
Fork 0
A command line tool to change the title, category and tags of Twitch livestreams. https://danirod.es/pkg/streamtitle
Go to file
Dani Rodríguez 0c55514056 Release 1.0.12 2024-02-18 14:15:52 +01:00
.github/workflows Do not accept pull requests from GitHub 2024-02-17 15:22:52 +01:00
COPYING Relicense the project as GPLv3 (ST-244) 2024-02-17 15:19:03 +01:00
ChangeLog Release 1.0.12 2024-02-18 14:15:52 +01:00
NEWS Release 1.0.12 2024-02-18 14:15:52 +01:00
README Release 1.0.12 2024-02-18 14:15:52 +01:00
TODO Release 1.0.12 2024-02-18 14:15:52 +01:00
auth.go Split application data in config and state 2024-02-18 11:46:56 +01:00
client.go Add support for profiles 2024-02-18 13:19:13 +01:00
config.go Remove unused constants from config.go 2024-02-18 14:14:01 +01:00
flag.go Release 1.0.12 2024-02-18 14:15:52 +01:00
go.mod Split application data in config and state 2024-02-18 11:46:56 +01:00
go.sum Split application data in config and state 2024-02-18 11:46:56 +01:00
info.go Add support for profiles 2024-02-18 13:19:13 +01:00
main.go Release 1.0.12 2024-02-18 14:15:52 +01:00

README

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