diff --git a/README.md b/README.md index 888585b..c530e67 100644 --- a/README.md +++ b/README.md @@ -10,15 +10,13 @@ To make TTVST unique for your streaming needs it's possible to create your own o The TTVStreamerTool is developed and tested on an Windows 10 x64 system. I guess everything >= Windows 8 should work. -Linux or MacOS are **not** supported. *You could download the source code and tweak it here and there to make it work though...* +Linux or MacOS are **not** supported. (And propably never will be.) ### Download & Install -Download the zip in the v0.1.2 release and unpack it somewhere you don't need elevated writing rights. This is because the auto updater needs to overwrite some files there. You could start the program as an administrator but this is not recommended. +Download the Setup.exe of the latest release and execute it. The application will install and create a few shortcuts. From then on the application should keep itself updated. Since I don't have the time or money for an code signing certificate the Setup.exe might be blocked from executing. It's up to you to trust this application. Do not install a Setup.exe that was not downloaded from the releases page of this project. Stay safe! -After unpacking start the tool by double clicking the `ttv-streamertool.exe`. - -» [Version 0.1.2 release](https://github.com/PakL/TTVStreamerTool/releases/tag/v0.1.2) +» [Find tha latest release](https://github.com/PakL/TTVStreamerTool/releases/) ### Screenshot diff --git a/docs/Addons.html b/docs/Addons.html index d47e1a9..4f5da00 100644 --- a/docs/Addons.html +++ b/docs/Addons.html @@ -39,7 +39,7 @@
lib/settings.js
,
+ line 58
+ lib/settings.js
,
+ line 143
+ lib/settings.js
,
+ line 68
+ lib/settings.js
,
+ line 95
+ lib/settings.js
,
+ line 38
+ lib/settings.js
,
+ line 86
+ lib/settings.js
,
+ line 77
+ lib/settings.js
,
+ line 113
+ lib/settings.js
,
+ line 123
+ options
Name | + + +Type | + + +Attributes | + + + +Default | + + +Description | +
---|---|---|---|---|
limit |
+
+
+ + + +Number + + + + | + + +
+
+ <optional> + + + + + + |
+
+
+
+ + + 25 + + | + + +Maximum number of objects to return. Maximum: 100. | +
offset |
+
+
+ + + +Number + + + + | + + +
+
+ <optional> + + + + + + |
+
+
+
+ + + 0 + + | + + +Object offset for pagination of results. | +
broadcast_type |
+
+
+ + + +String + + + + | + + +
+
+ <optional> + + + + + + |
+
+
+
+ + + 'archive,highlight,upload' + + | + + +Constrains the type of videos returned. Valid values: (any combination of) archive, highlight, upload. | +
language |
+
+
+ + + +String + + + + | + + +
+
+ <optional> + + + + + + |
+
+
+
+ + + | + + +Constrains the language of the videos that are returned; for example, en,es. Default: all languages. | +
sort |
+
+
+ + + +String + + + + | + + +
+
+ <optional> + + + + + + |
+
+
+
+ + + 'time' + + | + + +Sorting order of the returned objects. Valid values: views, time. | +
callback
mod/twitchtv.js
,
+ line 525
+ Name | + + +Type | + + + + + +Description | +
---|---|---|
channelid |
+
+
+ + + +String +| + +Number + + + + | + + + + + +Channel id of the channel you want the badges of. | +
callback |
+
+
+ + + +TwitchTv~requestCallback + + + + | + + + + + ++ |
mod/twitchtv.js
,
+ line 560
+ Name | + + +Type | + + + + + +Description | +
---|---|---|
channelid |
+
+
+ + + +String +| + +Number + + + + | + + + + + +Channel id of the channel you want the badges of. | +
callback |
+
+
+ + + +TwitchTv~requestCallback + + + + | + + + + + ++ |
// Example response:
{
"badge_sets": {
"subscriber": {
"versions": {
"0": {
"image_url_1x": "https://static-cdn.jtvnw.net/badges/v1/7821fdef-7fd6-4085-a9b0-eae8952ce299/1",
"image_url_2x": "https://static-cdn.jtvnw.net/badges/v1/7821fdef-7fd6-4085-a9b0-eae8952ce299/2",
"image_url_4x": "https://static-cdn.jtvnw.net/badges/v1/7821fdef-7fd6-4085-a9b0-eae8952ce299/3",
"description": "Subscriber",
"title": "Subscriber",
"click_action": "subscribe_to_channel",
"click_url": ""
}
}
}
}
}
+
+
+
+mod/twitchtv.js
,
+ line 599
+ Name | + + +Type | + + + + + +Description | +
---|---|---|
emotesets |
+
+
+ + + +String + + + + | + + + + + +Comma seperated list of emote set ids. | +
callback |
+
+
+ + + +TwitchTv~requestCallback + + + + | + + + + + ++ |
mod/twitchtv.js
,
+ line 697
+ Name | + + +Type | + + + + + +Description | +||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
channelid |
+
+
+ + + +String + + + + | + + + + + +The channel you want the collections of | +||||||||||||||||||||
options |
+
+
+ + + +Object + + + + | + + + + + +Options to filter or limit the response
+ Properties+ +
|
Channel id of the channel you want the badges of. | +Channel id of the channel you want the stream for. | ||||||||||||||||||
callback |
+ options |
-TwitchTv~requestCallback
+Object
@@ -2323,114 +3421,9 @@ Parameters:- | - |
// Example response:
{
"badge_sets": {
"subscriber": {
"versions": {
"0": {
"image_url_1x": "https://static-cdn.jtvnw.net/badges/v1/7821fdef-7fd6-4085-a9b0-eae8952ce299/1",
"image_url_2x": "https://static-cdn.jtvnw.net/badges/v1/7821fdef-7fd6-4085-a9b0-eae8952ce299/2",
"image_url_4x": "https://static-cdn.jtvnw.net/badges/v1/7821fdef-7fd6-4085-a9b0-eae8952ce299/3",
"description": "Subscriber",
"title": "Subscriber",
"click_action": "subscribe_to_channel",
"click_url": ""
}
}
}
}
}
-
-
-
-mod/twitchtv.js
,
- line 568
- Type | +Attributes | + +Default | +Description | |||
---|---|---|---|---|---|---|
emotesets |
+ steam_type |
@@ -2466,10 +3463,33 @@ Parameters: |
+
+
+ <optional> + + + + + |
- Comma seperated list of emote set ids. | + ++ + 'live' + + | + + +Constrains the type of streams returned. Valid values: live, playlist, all. Playlists are offline streams of VODs (Video on Demand) that appear live. | +
channelid
options
Name | - - -Type | - - -Attributes | - - - -Default | - - -Description | -|
---|---|---|---|---|---|
steam_type |
+ teamname |
@@ -2708,33 +3657,10 @@ Properties |
-
-
- <optional> - - - - - - |
-
- - - 'live' - - | - - -Constrains the type of streams returned. Valid values: live, playlist, all. Playlists are offline streams of VODs (Video on Demand) that appear live. | -
To make TTVST unique for your streaming needs it's possible to create your own overlays and addons. I will document how to do that in the coming future. To start of, read the Getting Started Guide.
The TTVStreamerTool is developed and tested on an Windows 10 x64 system. I guess everything >= Windows 8 should work.
-Linux or MacOS are not supported. You could download the source code and tweak it here and there to make it work though...
-Download the zip in the v0.1.2 release and unpack it somewhere you don't need elevated writing rights. This is because the auto updater needs to overwrite some files there. You could start the program as an administrator but this is not recommended.
-After unpacking start the tool by double clicking the ttv-streamertool.exe
.
Linux or MacOS are not supported. (And propably never will be.)
+Download the Setup.exe of the latest release and execute it. The application will install and create a few shortcuts. From then on the application should keep itself updated. Since I don't have the time or money for an code signing certificate the Setup.exe might be blocked from executing. It's up to you to trust this application. Do not install a Setup.exe that was not downloaded from the releases page of this project. Stay safe!
+To report issues or request improvements/features, please use the github issues page.
diff --git a/docs/lib_addons.js.html b/docs/lib_addons.js.html index f3664c4..3839a1a 100644 --- a/docs/lib_addons.js.html +++ b/docs/lib_addons.js.html @@ -41,7 +41,7 @@"use strict"
const {remote} = require('electron')
-const {Menu, MenuItem} = remote
+const {Menu, MenuItem, app} = remote
const TTVTool = require('./tool')
const UIPage = require('./uipage')
@@ -109,6 +109,7 @@ TTVST
{ label: this._tool.i18n.__('Restart'), role: 'reload' },
{ label: this._tool.i18n.__('DevTools'), role: 'toggledevtools' },
{ type: 'separator' },
+ { label: 'Version ' + app.getVersion() },
{ label: this._tool.i18n.__('Quit'), role: 'quit' }
]
},
diff --git a/docs/mod_twitchchat.js.html b/docs/mod_twitchchat.js.html
index 34d4196..6380c3e 100644
--- a/docs/mod_twitchchat.js.html
+++ b/docs/mod_twitchchat.js.html
@@ -41,7 +41,7 @@ TTVST
-
+
diff --git a/docs/mod_twitchtv.js.html b/docs/mod_twitchtv.js.html
index 960a6f4..2555917 100644
--- a/docs/mod_twitchtv.js.html
+++ b/docs/mod_twitchtv.js.html
@@ -41,7 +41,7 @@ TTVST
-
+
@@ -118,8 +118,10 @@ TTVST
if(typeof(options.redirecturi) == 'string') this.redirecturi = options.redirecturi
if(typeof(options.scope) == 'object') this.scope = options.scope
- this.token = window.localStorage.getItem('tw_auth_token')
- if(this.token == null) this.token = ''
+ if(typeof(window) !== "undefined" && window.hasOwnProperty('localStorage')) {
+ this.token = window.localStorage.getItem('tw_auth_token')
+ if(this.token == null) this.token = ''
+ }
}
/**
@@ -535,6 +537,35 @@ TTVST
this.requestAPI(uri, opt, true, callback)
}
+ /**
+ * Gets a list of VODs (Video on Demand) from a specified channel.
+ *
+ * @async
+ * @param {(String|Number)} channelid Channel id of the channel you want the subscriber of.
+ * @param {Object} options Options to control direction of the result.
+ * @param {Number} [options.limit=25] Maximum number of objects to return. Maximum: 100.
+ * @param {Number} [options.offset=0] Object offset for pagination of results.
+ * @param {String} [options.broadcast_type='archive,highlight,upload'] Constrains the type of videos returned. Valid values: (any combination of) archive, highlight, upload.
+ * @param {String} [options.language] Constrains the language of the videos that are returned; for example, en,es. Default: all languages.
+ * @param {String} [options.sort='time'] Sorting order of the returned objects. Valid values: views, time.
+ * @param {TwitchTv~requestCallback} callback
+ * @see {@link https://dev.twitch.tv/docs/v5/reference/channels/#get-channel-videos}
+ */
+ getChannelVideos(channelid, options, callback) {
+ if(typeof(callback) != 'function' || (typeof(channelid) != 'string' && typeof(channelid) != 'number')) return
+ channelid = channelid.toString()
+ var uri = '/kraken/channels/' + channelid + '/videos'
+ var opt = {}
+ if(typeof(options) == 'object') {
+ if(options.hasOwnProperty('limit') && typeof(options.limit) == 'number') opt.limit = options.limit
+ if(options.hasOwnProperty('offset') && typeof(options.offset) == 'number') opt.offset = options.offset
+ if(options.hasOwnProperty('broadcast_type') && typeof(options.broadcast_type) == 'string') opt.broadcast_type = options.broadcast_type
+ if(options.hasOwnProperty('language') && typeof(options.language) == 'string') opt.language = options.language
+ if(options.hasOwnProperty('sort') && (options.sort == 'views' || options.sort == 'time')) opt.sort = options.sort
+ }
+ this.requestAPI(uri, opt, true, callback)
+ }
+
/*********************************************
* Chat
*********************************************/
@@ -689,6 +720,46 @@ TTVST
}
+ /*********************************************
+ * Team
+ *********************************************/
+ /**
+ * Gets a specified team object
+ *
+ * @param {String} teamname The teamname that you want to get
+ * @param {TwitchTv~requestCallback} callback
+ * @see {@link https://dev.twitch.tv/docs/v5/reference/teams/#get-team}
+ */
+ getTeam(teamname, callback) {
+ if(typeof(callback) != 'function' || typeof(teamname) != 'string') return
+ this.requestAPI('/kraken/teams/' + encodeURIComponent(teamname), {}, false, callback)
+ }
+
+ /*********************************************
+ * Collections
+ *********************************************/
+ /**
+ * Gets collections to a specified channel
+ *
+ * @param {String} channelid The channel you want the collections of
+ * @param {Object} options Options to filter or limit the response
+ * @param {String} [options.limit=10] Maximum number of most-recent objects to return. Maximum: 100.
+ * @param {Number} [options.cursor] Tells the server where to start fetching the next set of results in a multi-page response.
+ * @param {String} [options.containing_item] Returns only collections containing the specified video. Note this uses a video ID, not a collection item ID. Example: video:89917098.
+ * @param {TwitchTv~requestCallback} callback
+ * @see {@link https://dev.twitch.tv/docs/v5/reference/collections/#get-collections-by-channel}
+ */
+ getCollectionsByChannel(channelid, options, callback) {
+ if(typeof(callback) != 'function' || typeof(channelid) != 'string') return
+ var uri = '/kraken/channels/' + encodeURIComponent(channelid) + '/collections'
+ var opt = {}
+ if(typeof(options) == 'object') {
+ if(options.hasOwnProperty('limit') && typeof(options.limit) == 'number') opt.limit = options.limit
+ if(options.hasOwnProperty('cursor') && typeof(options.cursor) == 'string') opt.cursor = options.cursor
+ if(options.hasOwnProperty('containing_item') && typeof(options.containing_item) == 'string' && options.containing_item.startsWith('video:')) opt.containing_item = options.containing_item
+ }
+ this.requestAPI(uri, opt, false, callback)
+ }
}
/**
diff --git a/docs/mod_uipage.js.html b/docs/mod_uipage.js.html
index 483d6c7..a939579 100644
--- a/docs/mod_uipage.js.html
+++ b/docs/mod_uipage.js.html
@@ -41,7 +41,7 @@ TTVST
-
+
diff --git a/docs/tutorial-Getting Started.html b/docs/tutorial-Getting Started.html
index 86222dc..a5a3cb1 100644
--- a/docs/tutorial-Getting Started.html
+++ b/docs/tutorial-Getting Started.html
@@ -39,7 +39,7 @@ TTVST
-
+
diff --git a/docs/var_channel.js.html b/docs/var_channel.js.html
index f34f9b9..9033054 100644
--- a/docs/var_channel.js.html
+++ b/docs/var_channel.js.html
@@ -41,7 +41,7 @@ TTVST
-
+
diff --git a/docs/var_follows.js.html b/docs/var_follows.js.html
index b35512b..5872913 100644
--- a/docs/var_follows.js.html
+++ b/docs/var_follows.js.html
@@ -41,7 +41,7 @@ TTVST
-
+
diff --git a/lib/settings.js b/lib/settings.js
index f903208..a2fddca 100644
--- a/lib/settings.js
+++ b/lib/settings.js
@@ -60,6 +60,8 @@ class ToolSettings {
}
/**
+ * Loads and returns weither or not to show follow alerts
+ *
* @member {Boolean}
* @readonly
*/
@@ -67,6 +69,8 @@ class ToolSettings {
return this.getBoolean('showfollowalert', true)
}
/**
+ * Loads and returns weither or not to show subscription alerts
+ *
* @member {Boolean}
* @readonly
*/
@@ -74,6 +78,8 @@ class ToolSettings {
return this.getBoolean('showsubscriptionalert', true)
}
/**
+ * Loads and returns weither or not to show raid alerts
+ *
* @member {Boolean}
* @readonly
*/
@@ -81,6 +87,8 @@ class ToolSettings {
return this.getBoolean('showraidalert', true)
}
/**
+ * Loads and returns weither or not to show host alerts
+ *
* @member {Boolean}
* @readonly
*/
@@ -88,6 +96,8 @@ class ToolSettings {
return this.getBoolean('showhostalert', true)
}
/**
+ * Loads and returns weither or not to show ban alerts
+ *
* @member {Boolean}
* @readonly
*/
@@ -95,6 +105,8 @@ class ToolSettings {
return this.getBoolean('showbanalert', true)
}
/**
+ * Loads and returns weither or not to show timeout alerts
+ *
* @member {Boolean}
* @readonly
*/
@@ -103,6 +115,8 @@ class ToolSettings {
}
/**
+ * Loads and returns weither or not to show the viewers list
+ *
* @member {Boolean}
* @readonly
*/
@@ -120,6 +134,12 @@ class ToolSettings {
return this.getJSON('highlights', [])
}
+ /**
+ * Loads and returns weither or not to invert the application's colors
+ *
+ * @member {Boolean}
+ * @readonly
+ */
get lightDesignMode() {
return this.getBoolean('lightdesignmode', false)
}
diff --git a/package.json b/package.json
index 5c1c75e..57c3867 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "ttv-streamertool",
- "version": "0.1.7",
+ "version": "0.2.0",
"main": "main.js",
"description": "TTVST is an application aimed at Twitch streamer.",
"author": {