Code Monkey home page Code Monkey logo

streamdvr's Introduction

StreamDVR

About

StreamDVR records your favorite live streamers while you are away. No need to miss a broadcast!

Time shifting is not a crime: https://en.wikipedia.org/wiki/Sony_Corp._of_America_v._Universal_City_Studios,_Inc.

  • Use either ffmpeg or streamlink to record to ts-containers

  • Automatically convert recordings to mp4 or mkv

  • Run custom post-process scripts after conversion to...

    • upload to cloud storage
    • generate thumbnail previews
    • do anything you want
  • Supported sites out of the box: Twitch, Youtube, Pixiv, Picarto

  • See Adding new plugins to use StreamDVR with other sites that are supported by yt-dlp or streamlink.

  • Docker available at https://ghcr.io/purrsevere/streamdvr

Setup

  • Dependencies: bash, node.js >= 14.0.0, npm, git, and ffmpeg

    • StreamDVR does not work in a windows command prompt. Use WSL to run StreamDVR in Windows.
  • Optional Dependencies: streamlink, yt-dlp

    • streamlink is used to fetch m3u8 URLs for Pixiv and Picarto by default
    • yt-dlp is used to fetch m3u8 URLs for Twitch and Youtube by default
  • Install StreamDVR

    On GitHub, click Clone or download, Download ZIP. Or run git clone https://github.com/jrudess/streamdvr.git

  • Run npm install to locally install all dependencies in package.json

Instructions

  • config files are loaded from the following paths (listed in precedence order):

    • $XDG_CONFIG_HOME/streamdvr/
    • $HOME/.config/streamdvr/
    • $cwd/config/
  • To run: streamdvr

  • Filename formatting:

    • %s Site Name
    • %n Streamer Name
    • %d Date and Time
  • TUI navigation:

    • 1 to focus the streamer list, Esc to unfocus
    • 2 to focus the site list, Esc to unfocus
    • enter to focus the input bar for CLI
    • Up/Down/PgUp/PgDn to scroll the active focus
  • CLI:

    add     [site] [streamer] <alias>
    addtemp [site] [streamer]
    pause   [site] <streamer> <time in seconds>
    remove  [site] [streamer]
    reload
    help
  • Streamer aliases

Some websites, such as yt-dlp, will have channel names that are random characters. For example, the URL to capture NBC News live streams is https://www.youtube.com/channel/UCeY0bbntWzzVIaj2z3QigXg. An alias can be specified when adding the channel to give it a better name.

    add youtube UCeY0bbntWzzVIaj2z3QigXg nbc_news
  • Custom Post Processing is enabled in config.yml with postprocess: /path/to/script
    #!/bin/bash
    #arg0 is path, arg1 is filename
    args=("$@")
    notify-send "streamdvr" "Done recording ${args[1]}"
  • Adding new plugins

Every site that is supported by either streamlink or yt-dlp will work with StreamDVR. All that is necessary is to create a new configuration file with the site's details. Refer to any existing yml file in the config directory for an example.

If you have created a .yml for StreamDVR and would like to share it, please submit a pull request to include the new yml files in the repo.

All support for streaming sites is handled by 3rd party programs. The site configuration yml files specify the m3u8 lookup and record scripts to use. Adding support for new programs requires adding new wrapper scripts and using those scripts in the yml configuration file.

If you would like StreamDVR to support a new program and have written your own wrapper scripts, pull requests are welcome. If you're just aware of other programs similar to yt-dlp or streamlink, please open an issue and provide the program's name/info. If the program looks promising (e.g. works for at least one of the existing sites), then I'll probably add support for it.

  • Configuration Options for config.yml

    • enable
      • daemon Suppresses standard out messages
    • recording
      • autoConvertType mp4, mkv, ts (no conversion)
      • captureDirectory Temporary storage area while recording
      • completeDirectory Final area to store recordings
      • postprocess Script to use to convert ts to mp4/mkv
      • dateFormat Used for log output and filenames
      • includeSiteInDir This option only applies if streamerSubdir is set. Recordings are placed in completeDir/streamer_site. If siteSubdir is set then completeDir/site/streamer_site.
      • streamerSubdir Recordings are placed in completeDir/streamer/ If includeSiteInDir is set then completeDir/streamer_site/. If siteSubdir is set then completeDir/site/{streamer, streamer_site}.
      • siteSubdir Recordings are placed in completeDir/site/. If streamerSubdir is set then completeDir/site/streamer/.
      • keepTsFile This option leaves the ts file in captureDir after an mp4/mkv is converted. This is mostly a 'debug' option.
      • minSize Minimum size in megabytes for a recording. Recordings smaller than this size are automatically deleted.
      • maxSize Maximum size in megabytes for a recording. Recordings that are larger than this size are halted and converted, then restarted.
    • postprocess Path to custom post-processing script that is run after a recording has been converted to its final file format. Arguments to script: arg0=path arg1=filename
    • log
      • enable Store log output to streamdvr.log
      • append Append new output to the file when true. Overwrite new output to the file when false.
    • tui
      • enable Allow interactive control of streamdvr with a text interface
      • allowUnicode Disable use of any fancy unicode characters in TUI output
    • colors Allows customization of various colors used in logs or TUI
    • proxy
      • enable Turns on socks5 proxy forwarding for m3u8_streamlink.sh and record_streamlink.sh
      • server socks5://127.0.0.1:9999
    • debug
      • log Enables debug messages to print in the normal log
      • recorder Store the ffmpeg/streamlink logs to a file when recording
      • errortrace Include a stack-trace for each error message

TUI Screenshot

img

streamdvr's People

Contributors

jrudess avatar purrsevere avatar vs-x avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

streamdvr's Issues

Streamer list search taking a long time to startup

Thanks for creating streamdvr, it's really been useful for me. I was wondering if their was a solution for my problem.

When streamdvr gets to the end of my streamer list it can take up to 1-6 minutes before it starts searching my list again, sometimes it can take up to more than 30 minutes, is there a way for streamdvr do immediately start searching again once it gets to the end of your list.

Problem running latest version

Trying the latest streamdvr, I keep getting

"console.js:35
throw new TypeError('Console expects a writable stream instance');"

Tried re-installing everything but can't get it to runl.

Have run npm install and all the modules are installed.

I think it's a nodejs problem and not a streamdvr problem, but I am hoping someone here has some idea what's going wrong.

New recordings start while trying to shutdown

If a new loop starts while some jobs are still converting ts->mp4, streamers that have already finished the conversion will launch a new recording. This should be suppressed once exit has been requested.

"Recording appears to be stuck"

Every so often I get this message: "_____ recording appears to be stuck (counter=0), file size is not increasing: ___MB"

Followed by "_____ terminating stuck recording"

[Feature Request] Add Web Interface

This would be an awesome feature to have. I can help create the web design side of things but have no idea how to make it talk with the app.

More filename styling options?

Pretty self explanatory, but it would be neat to have some more filename styling options.
Personally I'm only after one specific enhancement, having the option to move datetime from the end of the filename to the beginning, but maybe someone else can think of other options too.

Currently I just always edit the script myself and hardcode the change in.

Race condition with post-processing and cycle/file-size lookup

This issue doesn't cause any functional problems, but should be cleaned up so that the filesize lookup code does not execute during post-process conversion.

 [20181214_125828] TWITCH   [DEBUG] arumba07 running: /home/user/repos/streamdvr-async/scripts/m3u8_youtubedl.sh https://www.twitch.tv/arumba07 0 socks5://127.0.0.1:1080
 [20181214_125828] TWITCH   [INFO]  arumba07 converting to mp4: /home/userrepos/streamdvr-async/scripts/postprocess_ffmpeg.sh /home/user/repos/streamdvr/capturing/arumba07_20181214_114838.ts /home/user/repos/streamdvr/captured/TWITCH/arumba07/arumba07_20181214_114838.mp4 mp4
 [20181214_125830] TWITCH   [DEBUG] arumba07 is already capturing
 [20181214_125906] TWITCH   [ERROR] Error: ENOENT: no such file or directory, stat '/home/user/repos/streamdvr/capturing/arumba07_20181214_114838.mp4'
 [20181214_125927] TWITCH   [INFO]  arumba07 done converting arumba07_20181214_114838.mp4                                                                                                                                                                                                  

Picarto is not functional

youtube-dl and ytp-dl give the error 'NoneType' object has no attribute 'get'

Latest streamlink is correctly working for detecting online/offline, but the m3u8 returned is not working.

Twitch Websocket support for checking

When I initially requested webhooks as a feature request, I didn't realize that it was cached. From the people I've talked to, webhooks can be delayed by up to a few minutes. I wasn't aware until recently that websockets were supported by Twitch.

Another repo has an implementation for checking streams and it could be much better than the schedule system since it wouldn't have much of a limit on requests or rate throttling.

https://github.com/Hakkin/twitchpipe/blob/master/tools/record.sh#L99
They told me that it was an undocumented event which makes it happen
Hakkin/twitchpipe#11 (comment)

Continue Install Issue

Run npm install
Stuck here, did as instructed in issue 26:

npm install

The authenticity of host 'github.com (REMOVED)' can't be established.loadIdealTree
RSA key fingerprint is REMOVED.
[ .................] \ loadIdealTree:loadAllDepsIntoIdealTree: sill install loadIdealTree

The install will not move forward at this point... just stops. I removed the IP Address and RSA.

Error: Cannot find module 'fs/promises'

Sorry for bothering, I'm pretty new to this stuff and have no clue how to fix this error.

Error: Cannot find module 'fs/promises'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
at Function.Module._load (internal/modules/cjs/loader.js:562:25)
at Module.require (internal/modules/cjs/loader.js:692:17)
at require (internal/modules/cjs/helpers.js:25:18)
at Object. (/mnt/c/Users/NeonS/streamdvr-0.14.2/lib/core/postprocess.js:8:13)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)``

[Feature Request] Support for sessionid/devicetoken for Pixiv login

Could you add support for sessionid and devicetoken to be used instead of the username/password login process. There's been a bug in streamlink were you can't use username/password to login anymore to pixiv, but sessionid/devicetoken can still be used.

This is the link to were the bug is discussed, streamlink/streamlink#2515.

The command to set your sessionid/devicetoken are --pixiv-devicetoken and --pixiv-sessionid. I believe after that streamlink uses plugin-cache.json save your cache sessionid and devicetoken until it expires.

Twitch m3u8 lookup does not work correctly using m3u8_streamlink.sh

Streamlink's twitch plugin appears to load twitch's fallback stream tricking StreamDVR into thinking the streamer is online and recording junk. m3u8_youtubedl.sh does not have this problem.

Need to investigate if there is a streamlink option that can be used to suppress that.

All streamers showing as 'Offline'

I'm on Windows 10 and I've installed WSL (Ubuntu). I have nodejs (v12.2.0) installed via WSL. I've run 'npm install' and it completed without errors. I'm navigating to the /mnt/c/streamdvr folder and running ./streamdvr. It opens and shows the streamers, but all streamers are listed as offline, even though they are not. Using the latest ffmpeg and default config.yml

If I enable the debug options, the only thing I'm seeing for all streamers is:
TWITCH [DEBUG] shroud running: /mnt/c/streamdvr/scripts/m3u8_youtubedl.sh -s https://www.twitch.tv/shroud

Nothing else and no other errors.

Recording Twitch Chat

Would it be possible to record Twitch chat along side usernames? I've been trying to find a project where someone has made offline VOD viewing available with chat but nobody has one yet, except for 1 or 2 projects that records chat into a video. There's many python projects for parsing Twitch Chat and some even logging it but not a project that ties both the vod recording and chat together along with playback with chat parsing.

Live channels can't have the chat recorded using the Twitch Chat Replay in real time but I believe they can through the Twitch IRC relay.
I was able to find https://github.com/tmijs/tmi.js which might work for logging the chat in real time and supports a lot of features of the twitch frontend.
Examples https://docs.tmijs.org/v1.4.2/Examples.html

https://github.com/freaktechnik/twitch-chatlog for saving VOD chat replays

Manual conversion

What command can manual convert files to mkv if streamdvr fails to do it itself.
I found this command. Replace it with .ts input and mkv outpt, but it seems to go a lot slower then streamdvr does

for i in *.avi; do ffmpeg -i "$i" -qscale 0 "$(basename "$i" .avi)".mov ; done

Is there something else I should do

[Plugin Request] Pixiv Sketch

Hello, I was wondering if someone could create a plugin for Pixiv Sketch (https://sketch.pixiv.net). This site is already support by streamlink so I thought would be easy to integrate it to streamdvr, but I've failing miserably at it since I don't know the first thing about doing these sorts of things. It be much appreciated if someone could make a plugin for this site.

killarg="" # Note: Streamlink does not respond to SIGINT

Streamlink seems to respond to SIGINT just fine, at least in my testings. See example below.

  1. streamlink -o test.mkv https://www.twitch.tv/$random_twitch_streamer best
[cli][info] Available streams: audio_only, 160p (worst), 360p, 480p, 720p_alt, 720p (best)
[cli][info] Opening stream: 720p (hls)
[download][test.mkv] Written 4.7 MB (12s @ 403.0 KB/s)
  1. kill -INT $PID
Interrupted! Exiting...
[cli][info] Closing currently open stream...

New work flow

I can't get any of the new version to work

It says
file already exists, mkdir '/
if I run
node streamdvr or go directly to the streamdvr file

username/password not working

The newer script for username/password isn't working for me, the previous versions before v0.12.1 were working fine, but this one isn't.

Also, I want to request an enhancement. Could you add cache login credentials, for me it keeps needing to login every 10 minutes or so.

fc2 Convert Issue

fc2 downloads to .ts, however when it goes into conversion I either have nothing or it converts to name.mp4 (0 bytes). When I have nothing it will say something to the effect of can't find the .ts file.

Any thoughts?

Thanks

/usr/bin/env: invalid option -- 'S'

Looks like some distros of linux have an old version of /usr/bin/env which does not support the -S argument. To run streamdvr now, modify the first line of streamdvr to be:

#!/usr/bin/env node

Pixiv - Doesn't record login required streamers

The pixiv plugin works perfectly well for streamers that don't require a login to view, but it doesn't recognize streamers that require a login to view. Could you add support for login authentication.

Error With TUI: True "TypeError: value.nm.padEnd is not a function"

If I mark TUI as true in the config file it throws the following error:

TypeError: value.nm.padEnd is not a function
at Tui.render (/var/www/clients/client1/web1/web/recorders/streamdvr/core/tui.js:264:56)
at Tui.display (/var/www/clients/client1/web1/web/recorders/streamdvr/core/tui.js:303:14)
at Tui.init (/var/www/clients/client1/web1/web/recorders/streamdvr/core/tui.js:202:18)
at createSites (/var/www/clients/client1/web1/web/recorders/streamdvr/streamdvr.js:72:9)
at Object. (/var/www/clients/client1/web1/web/recorders/streamdvr/streamdvr.js:75:1)
at Module._compile (internal/modules/cjs/loader.js:702:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10)
at Module.load (internal/modules/cjs/loader.js:612:32)
at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
at Function.Module._load (internal/modules/cjs/loader.js:543:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:744:10)
at startup (internal/bootstrap/node.js:240:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:564:3)

I'm sure I'm just missing something small, anyone else have this or know of a fix?

Thanks

Broken recording with ffmpeg

With all debugging options enabled, the error message I get is simply "-c: No such file or directory" in the $streamer.log output file. The terminal output repeats the same "not found in capturing directory, cannot convert to mp4" error message every second.

Streamlink records fine.

Versions:
streamdvr: 0.13.0
node: v12.1.0
ffmpeg: 4.1.3
streamlink: 1.1.1
youtube-dl: 2019.05.11

Change startup flow ('streamdvr' vs 'node streamdvr.js')

To make packaging streamdvr for distribution easier, the top level file has changed from streamdvr.js to streamdvr. It is no longer necessary to type "node streamdvr" although that will work. Instead you can just run "streamdvr" directly.

Support for streamer name aliases

youtube channel names suck (e.g. NBC News is UCeY0bbntWzzVIaj2z3QigXg). Would be nice for site.yml to have an alias mechanism so that directory/recording-names are human readable for websites that use awful URL systems.

Twitch recordings get stuck/abort randomly

Starting yesterday (22-Apr-2021) streamdvr is having some issues with downloading twitch.tv streams.

I have about 16 streamers in my list and it was working perfectly before.
Streamdvr is running on a raspberry pi4 with youtube-dl for twitch and streamlink 1.7 for (selfwritten) afreecatv plugin (which works without issue)

I don't know much about coding or how to find the deeper issue to troubleshoot myself but I tried the newest and some older versions of youtube-dl, changing the site from https to http, recording only 1 stream at a time with no results.

How the error looks in the console:
image

It is not always the same gap between streamers and the error. As soon as the error happens the streams that were recording stop recording and whenever it fixes itself after 2-3 minutes the started recordings get moved and new ones start....and the cycle repeats

I'm not sure if its a me specific error or if everyone is experiencing it, but I would appreciate any help you can provide.

Changes to TUI streamer list

Since my record lists are small, the TUI is usable because I can see everything in a small window. For very large lists the TUI would need a lot of scrolling and not be as useful.

New tui: section options:

  • Only 'online' streamers are listed
  • Online streamers listed at top above offline streamers

live.fc2.com

First,

Thanks for this program! Great work!

I have been looking for a program that can do the same thing for the site fc2.com (live.fc2.com), however I can't find one, or someone that can/will build one. Could you look at that site and see if you can support it.

I have been on freelancer and offered $$$$ to have something like this built for that site, however the programs either do not want to work on adult scripts or do not know how to or understand what I want... and I have had to cancel a number of times.

Thoughts?

Thanks!!!!! great script!

killing stuck recordings

The new stuck counter logic is not actually killing the capture. But at least it's detecting the stuck condition.

streamdvr quits when "captured" directory exists

When "capturing" or "captured" directory exists I get the following error:

fs.js:909
return binding.mkdir(pathModule.toNamespacedPath(path),

The solution is very easy, replace mkdir function in dvr.js with this:

mkdir(dir) {
const fulldir = path.resolve(dir);
if (!fs.existsSync(fulldir)) {
fs.mkdirSync(fulldir, {recursive: true}, (err) => {
if (err) {
this.log(err.toString());
process.exit(1);
};
});
};
return fulldir;
}

Running as service

Is it possible to run this as a service without systemd? Like the process could serve as the service? I've noticed that when a stream ends, the process ends with it. Is this normal behavior? Can I change it so it's an always active service checking for usernames (twitch) going live and when one goes offline, it continues monitoring?

Future TUI ideas

List of TUI ideas as I think of them. Feel free to post your own. Most of the core code for any TUI features will apply to a future web-interface.

  • Identify temporary recordings uniquely in streamer list
  • Allow cursor navigation of streamer list with popup menu when selecting entries:
    • Sites
      • Add Streamer
      • Pause/Unpause site
      • Enable/Disable Site
    • Streamer:
      • Toggle to only show online streamers
      • Pause/Unpause streamer
        • Duration for pause (optional)
        • Pause state persists on reload
      • Remove streamer
  • When debugrecorder: true, log pane shows live recorder output when streamer is active selection.
  • Live filter log pane to a selected site, or selected streamer.

Missing Cam4 in Config.yml and tui.js

To fix mssing Cam4 in config.yml we have to add this : enableCam4: true or enableCam4: false.
Also to add the missing Cam4 in tui.js we need to add this : (this.config.enableCam4 && siteName === "cam4") || behind (this.config.enableCamsoda && siteName === "camsoda") || and before (this.config.enableFC2 && siteName === "fc2")) {

Permission Issue

(node:15760) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'charAt' of null
at Streamdvr.calcPath (/home/xxxxxxxxx/streamdvr/core/dvr.js:128:18)
at Streamdvr.postProcess (/home/xxxxxxxxxx/streamdvr/core/dvr.js:200:29)
at process._tickCallback (internal/process/next_tick.js:68:7)
at Function.Module.runMain (internal/modules/cjs/loader.js:745:11)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:743:3)
(node:15760) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:15760) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

I'm getting this error unless I run as sudo

even if I give permissions to streamdvr folder
even if I give permission to /home/xxxxx/.nvm/versions/node/v10.15.0/lib/node_modules
which is my output for global node installs from npm root -g

Just trying to figure if I missed any thing

TUI blue borders behave funny if any streamer is being recorded

Once a recording starts, the streamer list border jumps to the far right of the window. When no recordings are occurring, it bounds the expected region.

Only suspects right now are weird interaction with colors, since the Offline color is blue, and the border is blue, but the recording file color is green. Need to investigate using the blessed approach to colors rather than the colors library. Swapped colors around in config and it did not influence results.

[Feature Request] Possible to add Mixer?

Would it be possible to add the stream platform Mixer?
It seems to be supported by the latest version of youtube-dl (2018.01.21) so it should not be a problem.
I had a few instances where the VOD was not saved or was incomplete when the stream crashed .
Thanks

New idea ...

Is there a way to run this application on a headless server (ubuntu 16.04)? If yes, then give me a hint on how to do that, if not then this might be a great addition for a great piece of software.

This is needed because I cant keep open a ssh session all the time.

Thanks again for a great piece of software

STREAMDVR DOES NOT RECOGNIZE WHEN STREAM INITIALLY GOES LIVE | Trouble Installing and Using Streamdvr (Missing Module 'js-yaml')

UPDATE ON REOPEN: I have ran node streamlink and the program has worked in being capable of recording a twitch livestream as it is live. However, it seems to fail in detecting when a stream actually begins to go live and requires me to rerun the script in order to detect the stream is live. I'm not sure if this is an issue that has to with the missing module or something else.

I'd just like to preface this by saying I am extremely new to using WSL and any form of Linux for that matter, so please bare with me when working through this. I've recently followed through all of the instructions with installing each dependency for streamdvr while using Ubuntu 20.04, but have managed to run into two errors. I don't believe these two errors are related, however, my first one occurred when installing streamlink and attempting to install the required generic plugin along with it. When attempting to sideload the plugin with streamlink, I received this error:
"Failed to load plugin generic:
File "/usr/lib/python3.8/imp.py", line 234, in load_module
return load_source(name, filename, file)
File "/usr/lib/python3.8/imp.py", line 171, in load_source
module = _load(spec)
File "", line 702, in _load
File "", line 671, in _load_unlocked
File "", line 848, in exec_module
File "", line 219, in _call_with_frames_removed
File "/home/ducky/.config/streamlink/plugins/generic.py", line 23, in
from streamlink.plugin import Plugin, PluginArgument, PluginArguments, pluginmatcher
ImportError: cannot import name 'pluginmatcher' from 'streamlink.plugin' (/usr/lib/python3/dist-packages/streamlink/plugin/init.py)"

I'm not exactly sure how to go about fixing this so any help would be appreciated if you have knowledge on the issue. However, along with this, when attempting to run streamdvr I am prompted with this issue:
"$ streamdvr
internal/modules/cjs/loader.js:638
throw err;
^

Error: Cannot find module 'js-yaml'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
at Function.Module._load (internal/modules/cjs/loader.js:562:25)
at Module.require (internal/modules/cjs/loader.js:692:17)
at require (internal/modules/cjs/helpers.js:25:18)
at Object. (/mnt/c/streamdvr/streamdvr:9:15)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)"

This is another issue that I have no idea how to fix and have attempted searching for and downloading the module that it cannot find, however, I still had no luck with being able to run it. I'm not sure if this has anything to do with it, but after having downloaded the project and running npm install, this had appeared:
"This version of npm is compatible with lockfileVersion@1, but package-lock.json was generated for lockfileVersion@2. I'll try to do my best with it!"
Although I have no idea, this may have caused an issue with the module with the difference in versions that exists. Any help would be extremely appreciated in order to get this working. I am willing to provide any extra information that is required to help troubleshoot this. Thank you!

Move config files to a directory

Repo is getting a bit cluttered in root with so many site yml files. Move these to a 'config' sub directory in the repo, and follow XDG base directory spec for config file preference order.

streamdvr: command not found

Forgive my ignorance, but the last time I installed this, things were much simpler. I have node.js installed, I have streamdvr copied into the folder, I run npm install and it installs. I run an Ubuntu terminal with Windows WSL installed, navigate to the folder and try to run 'streamdvr'. Then I get 'streamdvr: command not found'. What am I doing wrong?

twitch.tv Commercial break in progress with Twitch Turbo cookie

Hello,

I've been using this program for a while now, but it seems that when a streamer runs an ad manually I still get the ad even though my account which I give the program with the http cookie should not get ads because of my twitch turbo subscription.

Anyone know a fix or workaround for this?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.