Commit Graph

494 Commits (1ef15780df05b96300d76f4e592a184dc3090270)
 

Author SHA1 Message Date
Mike Lang 1ef15780df cutter: Fix lack of info in error handling
Mike Lang 71333cf826 backfiller: Only run one manager, not one per channel
Then treat backfilling each channel just like backfilling each quality.

This is conceptually simpler (only one kind of thing, a (channel, quality))
and has better behaviour when a node is down (we only have one lot of error handling around it).

It also means we aren't asking the database for the same info once per channel,
and cuts down on logging noise.
Mike Lang a6cd07077a docker-compose: Wrap DSN values in quotes so spaces are allowed
Mike Lang ff18c7df54 backfiller: Fix issue with tracking metrics after get_nodes() failure
There isn't an easy, clean way to pass in the DB hostname there,
and neither label is very valuable. Let's just drop it entirely.
Mike Lang 6c6c1ae637 downloader: Make a few things quieter for non-important channels
Mike Lang 426b1328be Fix mistakes in common.requests
Mike Lang c1cb7966af cutter: Default to full cuts, not fast
Mike Lang b2a07ef114
Merge pull request from ekimekim/mike/build-improvements
Refactor dockerfiles for more shared layers
Mike Lang 9e6cd71026
Merge pull request from ekimekim/mike/downloader/less-important-channels
downloader: Create concept of an "important" channel
Mike Lang 8d3c863a49
Merge pull request from ekimekim/mike/thrimbletrimmer/cancel-upload
Allow thrimshim to safely cancel a job while it is cutting
Mike Lang 679f1f7408
Merge pull request from ekimekim/mike/restreamer/cut-types
restreamer: Add more options for fetching cuts
Mike Lang 751472217b Default to using the current commit, instead of latest
This is generally what you want, and will behave better than using latest.
Mike Lang 731ef9e2d0 Refactor dockerfiles for more shared layers
By carefully ensuring most of our dockerfiles are identical in their first few layers,
we only need to build those layers once instead of every time.

In particular, we move installing gevent to before installing common,
so that even when common changes gevent doesn't need to be reinstalled.

This is important because gevent takes ages to install.

Also fixes segment_coverage, which wasn't being installed.
Mike Lang a7f5d1c545 Fix issues with metrics gathering for cut functions
* Need to allow timed() to have multiple callers with same name
* "type" label is reserved, use "cut_type" instead
Mike Lang 58d09b419c thrimbletrimmer: Add option to select cut type for Download button
In most cases, you want "rough" because you're going to trim the resulting
video later anyway.
Mike Lang eb4fb5a9e1 restreamer: Add more options for fetching cuts
Split full cut into two types - an mpegts one and an mp4 one.
Add "rough" cut which is just a concat of the segments.
Mike Lang cc48f17348 thrimbletrimmer: Add cancel row button using the new thrimshim functionality
Mike Lang 3dfe0e8722 Allow thrimshim to safely cancel a job while it is cutting
This differs from the existing reset row by only suceeding if the upload is not
in finalizing.

We also make some changes to cutter to handle this situation gracefully.
Mike Lang b2cd0fa6f7 docker-compose: Support channel importance markers
Only pass them to downloader, strip them otherwise.
Mike Lang 83750da37b downloader: Create concept of an "important" channel
In our usage, we have one channel where we really care / want to know if it's down,
but also a bunch of other channels where they're expected to not be streaming most/all of the time.

To prevent these extra channels making a ton of noise, we introduce the concept of an "important"
channel, indicated by appending a '!' to the channel name in the command line.

So for example, you might specify channels as "foo! foo_backup foo_behindthescenes".

Important channels have the same behaviour as previously.

Non-important channels:
* Have a 20-second retry on a master playlist fetch failure, instead of 5
* Log at debug when the stream is down, instead of info.
Mike Lang b27e06d068 Fix typo in common/common/segments.py
Mike Lang 0305c0797f
Merge pull request from ekimekim/mike/cut-maybe-stream
full cut: Optionally use seekable file OR directly stream
Mike Lang 4d52b18b04 cutter,restreamer: Set stream=True for full cuts when appropriate
And also default to a new ffmpeg encoding setting for high-quality mpegts
(ie. still streamable) that is encoded very quickly.
Mike Lang 9afcc7b399 full cut: Optionally use seekable file OR directly stream
The caller can pick depending on the needs of the output format.

This reverses most of 80d829b83b,
re-introducing streaming full cuts but keeping non-streaming as an option.
Mike Lang 981b89551e
Merge pull request from ekimekim/mike/more-metrics
Add lots of metrics
Mike Lang 1574f319c6
Merge pull request from ekimekim/mike/thrimbletrimmer/streaming-page
Adds a dedicated streaming page for giffers etc, and more thrimbletrimmer things
Mike Lang bdbfd37c51 thrimbletrimmer: Pad start and end times
Mike Lang a68684c24c thrimbletrimmer: Fix use of tabs again
Mike Lang 26f91a02ea thrimbletrimmer: Parse durations as HH[:MM[:SS]] instead of [[HH:]MM:]SS
ie. 1:00 is 1 hour, not 1 minute.

This is consistent with our use of bustime everywhere else.
Mike Lang a6ee746e6b thrimbletrimmer: disable autoplay
Mike Lang 7edc6ac149 thrimbletrimmer: Some tweaks to the streaming page
Mike Lang 5d5358019a thrimbletrimmer: Improve bustime/ago parsing
Allow partial entries like 5:00 instead of 0:05:00.
Mike Lang ff43e186f6 thrimbletrimmer: Support "time ago" as a third time format
This is especially useful for the re-streaming page, and is default there.
Mike Lang d4c8974601 thrimbletrimmer: Some video controls tweaks
Allow fullscreen

Hide disabled picture-in-picture control

Autoplay
Mike Lang b4310b0024 restreamer: Allow blank start/end for cut
So it acts the same as generating a playlist.
Mike Lang 47ac1c7ff8 thrimbletrimmer: Add second page built for watching stream with a delay
This is for giffers, etc.

It shares the codecase but uses a flag to say whether to affect all the editor inputs.
Mike Lang 671079861a thrimbletrimmer: Fix lack of usage of var throughout code
Chalk this one up to not knowing the language.
You need to declare variables as var otherwise they're implicitly globals.

This leads to many bugs where if a function runs twice at once it'll do weird things.
Mike Lang 8accc1338e thrimbletrimmer: Refactor how time formatting is handled
Instead of having two input fields and switching between them,
we just have one and re-write the value on switch.

We also handle invalid or empty dates a LOT better, and clean up some
other things around query strings.
Mike Lang 316504899a thrimbletrimmer: Fix a bug on initial load
loadPlaylist was happening before bustime was set, resulting
in the wrong times being loaded.
Mike Lang 971841d73b thrimbletrimmer: Move last bit of code into IO.js
since everything else is there anyway.
Mike Lang c740090c53 sheetsync: Add more metrics
Christopher Usher 09d7feebfb changed list comprehension to concatenation
Christopher Usher 02fd265407 allow for multiple channels in docker-compose
Mike Lang f9b48bc70e cutter: Add more metrics
Mike Lang 4f900c5925 Collect metrics around cutting time
Mike Lang 8ad61e9870 downloader: Collect metrics on http calls
Mike Lang 52e6c4ad41 sheetsync, cutter: Collect metrics on http calls
In particular, to google apis.
Mike Lang d63ae573b7 backfiller: Collect metrics on http calls
Mike Lang a2edb38a85 Add an InstrumentedSession wrapper that automatically gathers metrics on http calls
Mike Lang b4655f18c6 downloader: Track total duration of downloaded segments