mirror of
https://github.com/snobu/destreamer.git
synced 2026-01-16 21:12:13 +00:00
Major code refactoring (#164)
* Added Chromium caching of identity provider cookies * Moved token expiry check in standalone method * Created refreshSession function * Session is now refreshed if the token expires * Linting fixes * Removed debug console.log() * Added CC support * Created function to prompt user for download parameters (interactive mode) * Fix data folder for puppeteer * Fixed multiple session error * Fix token expire time * Moved session refreshing to a more sensible place * Changed Metadata name to Video (to better reflect the data structure) * Complete CLI refactoring * Removed useless sleep function * Added outDir check from CLI * Complete input parsing refactoring (both inline and file) * Fixed and improved tests to work with the new input parsing * Moved and improved output path generation to videoUtils * Main code refactoring, added outpath to video type * Minor changes in spacing and type definition style * Updated readme after code refactoring * Fix if inputFile doesn't start with url on line 1 * Minor naming change * Use module 'winston' for logging * Created logge, changed all console.log and similar to use the logger * Added verbose logging, changed posterUrl property name on Video type * Moved GUID extraction to input parsing * Added support for group links * Fixed test after last input parsing update * Removed debug proces.exit() * Changed from desc to asc order for group videos * Updated test to reflect GUIDs output after parsing * Added couple of comments and restyled some imports * More readable verbose GUIDs logging * Removed unused errors * Temporary fix for timeout not working in ApiClient * Explicit class member accessibility * Defined array naming schema to be Array<T> * Defined type/interface schema to be type only * A LOT of type definitions
This commit is contained in:
73
README.md
73
README.md
@@ -69,44 +69,44 @@ $ npm run build
|
||||
$ ./destreamer.sh
|
||||
|
||||
Options:
|
||||
--help Show help [boolean]
|
||||
--version Show version number [boolean]
|
||||
--videoUrls, -i List of video urls [array]
|
||||
--videoUrlsFile, -f Path to txt file containing the urls [string]
|
||||
--username, -u [string]
|
||||
--outputDirectory, -o The directory where destreamer will save your
|
||||
downloads [default: videos] [string]
|
||||
--outputDirectories, -O Path to a txt file containing one output directory
|
||||
per video [string]
|
||||
--noExperiments, -x Do not attempt to render video thumbnails in the
|
||||
console [boolean] [default: false]
|
||||
--simulate, -s Disable video download and print metadata information
|
||||
to the console [boolean] [default: false]
|
||||
--verbose, -v Print additional information to the console (use this
|
||||
before opening an issue on GitHub)
|
||||
[boolean] [default: false]
|
||||
--noCleanup, --nc Don't delete the downloaded video file when an FFmpeg
|
||||
error occurs [boolean] [default: false]
|
||||
--vcodec Re-encode video track. Specify FFmpeg codec (e.g.
|
||||
libx265) or set to "none" to disable video.
|
||||
[string] [default: "copy"]
|
||||
--acodec Re-encode audio track. Specify FFmpeg codec (e.g.
|
||||
libopus) or set to "none" to disable audio.
|
||||
[string] [default: "copy"]
|
||||
--format Output container format (mkv, mp4, mov, anything that
|
||||
FFmpeg supports) [string] [default: "mkv"]
|
||||
--skip Skip download if file already exists
|
||||
[boolean] [default: false]
|
||||
--help Show help [boolean]
|
||||
--version Show version number [boolean]
|
||||
--username, -u The username used to log into Microsoft Stream (enabling this will fill in the email field for
|
||||
you) [string]
|
||||
--videoUrls, -i List of video urls [array]
|
||||
--inputFile, -f Path to text file containing URLs and optionally outDirs. See the README for more on outDirs.
|
||||
[string]
|
||||
--outputDirectory, -o The directory where destreamer will save your downloads [string] [default: "videos"]
|
||||
--keepLoginCookies, -k Let Chromium cache identity provider cookies so you can use "Remember me" during login
|
||||
[boolean] [default: false]
|
||||
--noExperiments, -x Do not attempt to render video thumbnails in the console [boolean] [default: false]
|
||||
--simulate, -s Disable video download and print metadata information to the console[boolean] [default: false]
|
||||
--verbose, -v Print additional information to the console (use this before opening an issue on GitHub)
|
||||
[boolean] [default: false]
|
||||
--closedCaptions, --cc Check if closed captions are aviable and let the user choose which one to download (will not
|
||||
ask if only one aviable) [boolean] [default: false]
|
||||
--noCleanup, --nc Do not delete the downloaded video file when an FFmpeg error occurs [boolean] [default: false]
|
||||
--vcodec Re-encode video track. Specify FFmpeg codec (e.g. libx265) or set to "none" to disable video.
|
||||
[string] [default: "copy"]
|
||||
--acodec Re-encode audio track. Specify FFmpeg codec (e.g. libopus) or set to "none" to disable audio.
|
||||
[string] [default: "copy"]
|
||||
--format Output container format (mkv, mp4, mov, anything that FFmpeg supports)
|
||||
[string] [default: "mkv"]
|
||||
--skip Skip download if file already exists [boolean] [default: false]
|
||||
```
|
||||
|
||||
We default to `.mkv` for the output container. If you prefer something else (like `mp4`), pass `--format mp4`.
|
||||
- Passing `--username` is optional. It's there to make logging in faster (the username field will be populated automatically on the login form).
|
||||
|
||||
- You can use an absolute path for `-o` (output directory), for example `/mnt/videos`.
|
||||
|
||||
- We default to `.mkv` for the output container. If you prefer something else (like `mp4`), pass `--format mp4`.
|
||||
|
||||
Download a video -
|
||||
```sh
|
||||
$ ./destreamer.sh -i "https://web.microsoftstream.com/video/VIDEO-1"
|
||||
```
|
||||
|
||||
Download a video and re-encode with HEVC (libx265):
|
||||
Download a video and re-encode with HEVC (libx265) -
|
||||
```sh
|
||||
$ ./destreamer.sh -i "https://web.microsoftstream.com/video/VIDEO-1" --vcodec libx265
|
||||
```
|
||||
@@ -131,12 +131,19 @@ Download many videos but read URLs from a file -
|
||||
```sh
|
||||
$ ./destreamer.sh -f list.txt
|
||||
```
|
||||
|
||||
### Input file
|
||||
You can create a `.txt` file containing your video URLs, one video per line. The text file can have any name, followed by the `.txt` extension.
|
||||
Additionally you can have destreamer download each video in the input list to a separate directory.
|
||||
These optional lines must start with white space(s).
|
||||
|
||||
Passing `--username` is optional. It's there to make logging in faster (the username field will be populated automatically on the login form).
|
||||
Usage -
|
||||
```
|
||||
https://web.microsoftstream.com/video/xxxxxxxx-aaaa-xxxx-xxxx-xxxxxxxxxxxx
|
||||
-dir=videos/lessons/week1
|
||||
https://web.microsoftstream.com/video/xxxxxxxx-aaaa-xxxx-xxxx-xxxxxxxxxxxx
|
||||
-dir=videos/lessons/week2"
|
||||
```
|
||||
|
||||
You can use an absolute path for `-o` (output directory), for example `/mnt/videos`.
|
||||
|
||||
## Expected output
|
||||
|
||||
|
||||
Reference in New Issue
Block a user