Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge master into kick-support #880

Merged
merged 58 commits into from
Nov 15, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
7a26013
Triple click template problem (#786)
Stelminator Aug 8, 2023
9cc0e9c
Account for alternate video highlight url format (#788)
ScrubN Aug 10, 2023
36773a8
Remove working directory override in CLI (#793)
ScrubN Aug 17, 2023
dc64e8a
Fix WPF crash due to system theme watcher related COMExceptions (#796)
ScrubN Aug 23, 2023
eb601f8
Do not render sub/highlight backgrounds in transparent renders (#799)
ScrubN Aug 23, 2023
e6f957c
WPF Chat Updater Fatal Error Fixes (#803)
ScrubN Aug 30, 2023
69a66da
Videodownload 99% stop fix (#792)
ScrubN Aug 30, 2023
2371192
Fix CLI FFmpeg download percentage
ScrubN Sep 1, 2023
f819572
Cleanup GetThirdPartyEmotes
ScrubN Sep 2, 2023
1910f64
Change signatures of GetServiceEmoteData & add CancellationTokens
ScrubN Sep 9, 2023
e3333e8
Add Nullable annotation to Core & WPF
ScrubN Sep 9, 2023
dd0b9e9
Rename GetServiceEmoteData -> GetServiceEmotesMetadata
ScrubN Sep 9, 2023
40069e7
Whoops, forgot to stage
ScrubN Sep 9, 2023
569e303
Disable nullable ref types for now
ScrubN Sep 13, 2023
c0c5325
A little bit of cleanup & fix potential url list crash
ScrubN Sep 13, 2023
d8786b2
Spelling fixes (#814)
davis-matthew Sep 15, 2023
c1ccdfe
Add support for dark title bars on Windows 10 1809-2004 (#815)
ScrubN Sep 16, 2023
a9ed1cf
Fix incorrect message.bits_spent for chats between v5 shutdown and 1.…
ScrubN Sep 19, 2023
29a2c44
Cleanup
ScrubN Sep 19, 2023
485ca2a
Include VOD description in video metadata if present (#822)
ScrubN Sep 22, 2023
71b08d4
Add video description to chat json files
ScrubN Sep 22, 2023
9f4a72b
Increase "old" directory threshold to 7 days
ScrubN Sep 23, 2023
61d0915
Fix some theme related crashes (#831)
ScrubN Sep 24, 2023
f8f2459
Nuget upgrade (#804)
ScrubN Sep 25, 2023
c2eb143
Fix duplicate newlines and double spaces in video descriptions
ScrubN Sep 25, 2023
0064ec6
Quality of life GUI improvements (#833)
ScrubN Sep 30, 2023
e32f5ce
Add videos per page selector to mass downloaders (#837)
ScrubN Oct 6, 2023
f9d9857
Update Strings.tr.resx (#836)
Teknoist Oct 6, 2023
904186b
update spanish translation (#801)
Deci8BelioS Oct 6, 2023
870c667
Add some NotNullWhen attributes
ScrubN Oct 6, 2023
8d7982d
Remove explicit copyright year
ScrubN Oct 6, 2023
a7d3bc4
Better FFmpeg download progress reporting (#840)
ScrubN Oct 6, 2023
6bbc926
Bump version
ScrubN Oct 6, 2023
65344c6
Fix oversight
ScrubN Oct 6, 2023
8a4f904
Spanish translation update (#842)
Deci8BelioS Oct 6, 2023
68a6b85
Bump version
ScrubN Oct 6, 2023
fefd3d1
Fix old chats with stringified streamer ids being undeserializable (#…
ScrubN Oct 7, 2023
6d30324
Simplify ChatRootVersion
ScrubN Oct 10, 2023
3f7b79e
Fix chats enqueued by the mass downloaders incorrectly having `.json`…
ScrubN Oct 10, 2023
193b0ca
I promise this is the last time I touch the dark title bar code
ScrubN Oct 15, 2023
23f2615
Reuse the theme switcher brush converter
ScrubN Oct 15, 2023
86cd00e
Fix crash due to negative caret index when computing text box triple …
ScrubN Oct 15, 2023
30ed7fa
minor translation additions (#853)
Teknoist Oct 15, 2023
f4fcaf2
Update build instructions
ScrubN Oct 18, 2023
d6dbe78
Support highlighting new bit badge notifications (#869)
ScrubN Oct 21, 2023
8db2d26
Add Ukrainian Translation (#870)
MEGATREX4 Oct 25, 2023
8104934
Fix chat jsons and mp4 metadata lacking any chapters for VODs with 1 …
ScrubN Oct 27, 2023
2d64a7d
Add context menu to video/clip search mass downloaders (#876)
ScrubN Oct 28, 2023
c3db4a6
Deserialize chat json files without relying on the file extension (#858)
ScrubN Oct 28, 2023
469336f
Many chat updater fixes (#859)
ScrubN Oct 28, 2023
06e0f51
Merge with master
ScrubN Nov 2, 2023
95f0b3d
Clean curl buffer before returning
ScrubN Nov 2, 2023
d79ebc0
Clean all the buffers, reduce ProgressCopyToAsync overhead, reduce ma…
ScrubN Nov 2, 2023
c8c222d
Change all FileShare.None to FileShare.Read
ScrubN Nov 2, 2023
a2d7a64
Fix memory leak
ScrubN Nov 3, 2023
ba6b184
Forgot to stage
ScrubN Nov 3, 2023
0561c26
This is handled by SetHandleAsInvalid
ScrubN Nov 3, 2023
70924de
Fix
ScrubN Nov 7, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion LICENSE.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
The MIT License

Copyright (c) 2019 lay295
Copyright (c) lay295

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@
</p>
</p>

[**Readme in Spanish**](README_es.md)
[**Readme in Spanish**](README_es.md)
[**Readme in Turkish**](README_tr.md)

## Chat Render Example

Expand Down Expand Up @@ -159,6 +160,7 @@ cd TwitchDownloader
```
dotnet restore
```
- Non-Windows devices may need to explicitly specify a project to restore, i.e. `dotnet restore TwitchDownloaderCLI`
4. a) Build the GUI:
```
dotnet publish TwitchDownloaderWPF -p:PublishProfile=Windows -p:DebugType=None -p:DebugSymbols=false
Expand Down
198 changes: 198 additions & 0 deletions README_tr.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,198 @@
<p align="center">
<a href="https://github.com/lay295/TwitchDownloader">
<img src="TwitchDownloaderWPF/Images/Logo.png" alt="Logo" width="80" height="80">
</a>

<h3 align="center">Twitch İndirici</h3>

<p align="center">
Twitch VOD/Clip/Chat İndirici ve Chat Oynatıcı
<br />
<br />
<a href="https://github.com/lay295/TwitchDownloader/issues">Hata Bildir</a>
</p>
</p>

[**İspanyolca'da Oku**](README_es.md)
[**İngilizce'de Oku**](README.md)

## Chat Oynatma Örneği

https://user-images.githubusercontent.com/1060681/197653099-c3fd12c2-f03a-4580-84e4-63ce3f36be8d.mp4

## Neler Yapabilir?

- Twitch VOD'larını İndir
- Twitch Kliplerini İndir
- VOD'lar ve Klipler için sohbeti, ya [tüm orijinal bilgileri içeren bir JSON olarak](https://pastebin.com/raw/YDgRe6X4), bir tarayıcı HTML dosyası olarak ya da [düz metin dosyası olarak](https://pastebin.com/raw/016azeQX) indirin.
- Daha önce oluşturulmuş bir JSON sohbet dosyasının içeriğini güncelleyin ve başka bir biçimde kaydetme seçeneğiyle kaydedin.
- Daha önce oluşturulmuş bir JSON sohbet dosyasını kullanarak sohbeti Twitter Twemoji veya Google Noto Color emojileri ve BTTV, FFZ, 7TV statik ve animasyonlu emojilerle oynatmak için kullanın.

# GUI

## Windows WPF

![](https://i.imgur.com/bLegxGX.gif)

### [Full WPF belgelerini buradan görüntüleyin](TwitchDownloaderWPF/README.md).

### İşlevsellik

Windows WPF GUI, programın tüm ana işlevlerini ve bazı ek yaşam kalitesi işlevlerini uygular:
- Aynı anda çalıştırılacak birden fazla indirme/oynatma işini sıraya alın.
- VOD/Klip bağlantıları listesinden indirme işlerinin bir listesini oluşturun.
- Uygulamayı terk etmeden herhangi bir yayıcıdan birden fazla VOD/klip arayın ve indirin.

### Çoklu Dil Desteği

Windows WPF GUI, topluluk çevirileri sayesinde birçok dilde kullanılabilir. Daha fazla ayrıntı için [WPF README](TwitchDownloaderWPF/README.md)'nin [Yerelleştirme bölümüne](TwitchDownloaderWPF/README.md#localization) bakın.

### Temalar

Windows WPF GUI, hem açık hem de karanlık temalar ile gelir ve mevcut Windows temasına göre canlı olarak güncelleme seçeneği sunar. Ayrıca kullanıcı tarafından oluşturulan temaları destekler! Daha fazla ayrıntı için [WPF README](TwitchDownloaderWPF/README.md)'nin [Tema bölümüne](TwitchDownloaderWPF/README.md#theming) bakın.

### Video Gösterimi

https://www.youtube.com/watch?v=0W3MhfhnYjk
(eski sürüm, aynı konsept)

## Linux?

***Nasıl cevireceğimi bilemedim terminal versionu var [githubda](https://github.com/mohad12211/twitch-downloader-gui) gidin ona bakın diyor kısaca birde [AUR'da](https://aur.archlinux.org/packages/twitch-downloader-gui) terminalin biraz süslü gui hali var ona bakabilirsniiz diyor.

## MacOS?

Malesef MacOS için henüz bir GUI mevcut değil :(

# CLI

### [Tüm CLI belgelerini buradan inceleyin](TwitchDownloaderCLI/README.md).

CLI, ana program işlevlerini uygulayan ve Windows, Linux ve MacOS<sup>*</sup> üzerinde çalışan çapraz platformlu bir araçtır.

<sup>*Sadece Intel Mac'ler test edilmiştir</sup>

CLI ile, harici komut dosyalarını kullanarak video işleme işlemini otomatikleştirmek mümkündür. Örneğin, Windows'ta bir `.bat` dosyasına aşağıdaki kodu kopyalayarak bir VOD'u ve onun sohbetini indirebilir ve ardından sohbeti renderlayabilirsiniz.
```bat
@echo off
set /p vodid="VOD Kimliğini Girin: "
TwitchDownloaderCLI.exe videodownload --id %vodid% --ffmpeg-path "ffmpeg.exe" -o %vodid%.mp4
TwitchDownloaderCLI.exe chatdownload --id %vodid% -o %vodid%_chat.json -E
TwitchDownloaderCLI.exe chatrender -i %vodid%_chat.json -h 1080 -w 422 --framerate 30 --update-rate 0 --font-size 18 -o %vodid%_chat.mp4
```

## Windows - Başlangıç

1. [Releases-Sürümler](https://github.com/lay295/TwitchDownloader/releases/) sayfasına gidin ve en son Windows sürümünü indirin veya [kaynaktan derleyin.](#building-from-source).
2. `TwitchDownloaderCLI.exe`'yi çıkartın.
3. Dosyayı çıkardığınız yerde terminal açın.
4. FFmpeg'e sahip değilseniz,[Chocolatey package manager](https://community.chocolatey.org/) aracılığı ile indirebilir veya bağımsız bir dosya olarak [ffmpeg.org](https://ffmpeg.org/download.html) adresinden alabilir veya TwitchDownloaderCLI kullanarak alabilirsiniz. Şu komutu kullanarak indirebilirsiniz:
```
TwitchDownloaderCLI.exe ffmpeg --download
```
5. Artık indirme işlemine başlayabilirsiniz, örneğin:
```
TwitchDownloaderCLI.exe videodownload --id <vod-id-here> -o out.mp4
```

## Linux – Başlangıç

1. Bazı dağıtımlar, Linux Alpine gibi, bazı diller için (Arapça, Farsça, Tayca vb.) yazı tiplerini eksik bulabilir. Bu durum sizin için geçerliyse, [Noto](https://fonts.google.com/noto/specimen/Noto+Sans) gibi ek yazı tipleri ailesi yükleyin veya dağıtımınızın yazı tipleri hakkındaki wiki sayfasını kontrol edin, çünkü bu özel senaryo için bir kurulum komutuna sahip olabilir, örneğin [Linux Alpine](https://wiki.alpinelinux.org/wiki/Fonts) yazı tipi sayfası gibi.
2. `fontconfig` ve `libfontconfig1`'in yüklü olduğundan emin olun. Ubuntu'da `apt-get install fontconfig libfontconfig1` kullanabilirsiniz.
3. [Sürümler](https://github.com/lay295/TwitchDownloader/releases/) sayfasına gidin ve Linux için en son ikili sürümü indirin, Arch Linux için [AUR Paketi](https://aur.archlinux.org/packages/twitch-downloader-bin/)ni alın veya [kaynaktan derleyin](#building-from-source).
4. `TwitchDownloaderCLI`'yi çıkarın.
5. Dosyayı çıkardığınız yere gidin ve terminalde çalıştırılabilir izinleri verin:
```
sudo chmod +x TwitchDownloaderCLI
```
6. a) Eğer FFmpeg'e sahip değilseniz, bunu dağıtım paket yöneticiniz aracılığıyla kurmalısınız. Ayrıca, [ffmpeg.org](https://ffmpeg.org/download.html) adresinden bağımsız bir dosya olarak veya TwitchDownloaderCLI kullanarak da edinebilirsiniz.
```
./TwitchDownloaderCLI ffmpeg --download
```
6. b) Bağımsız bir dosya olarak indirildiyse, ona çalıştırılabilir izinler vermelisiniz:
```
sudo chmod +x ffmpeg
```
7. Şimdi indiriciyi kullanmaya başlayabilirsiniz, örneğin:
```
./TwitchDownloaderCLI videodownload --id <vod-id-here> -o out.mp4
```
## MacOS – Başlangıç
1. [Releases](https://github.com/lay295/TwitchDownloader/releases/) sayfasına gidin ve MacOS için en son sürümü indirin veya kaynaktan derleyin.
2. `TwitchDownloaderCLI` dosyasını çıkarın.
3. Dosyayı çıkardığınız yere terminalde çalıştırılabilir izinler verin.
```
chmod +x TwitchDownloaderCLI
```
4. a) Eğer FFmpeg'e sahip değilseniz, [Homebrew paket yöneticisi](https://brew.sh/) aracılığıyla kurabilirsiniz veya bağımsız bir dosya olarak [ffmpeg.org](https://ffmpeg.org/download.html) adresinden veya TwitchDownloaderCLI kullanarak edinebilirsiniz.
```
./TwitchDownloaderCLI ffmpeg --download
```
4. b) Bağımsız bir dosya olarak indirildiyse, ona çalıştırılabilir izinler vermelisiniz.
```
chmod +x ffmpeg
```
5. Şimdi indiriciyi kullanmaya başlayabilirsiniz, örneğin:
```
./TwitchDownloaderCLI videodownload --id <vod-id-here> -o out.mp4
```

# Kaynaktan derleme

## Gereksinimler

- [.NET 6.0.x SDK](https://dotnet.microsoft.com/en-us/download/dotnet/6.0)

## Derleme Talimatları

1. Depoyu klonlayın:
```
git clone https://github.com/lay295/TwitchDownloader.git
```
2. Çözüm klasörüne gidin:
```
cd TwitchDownloader
```
3. Çözümü geri yükleyin:
```
dotnet restore
```
4. a) GUI'yi oluşturun:
```
dotnet publish TwitchDownloaderWPF -p:PublishProfile=Windows -p:DebugType=None -p:DebugSymbols=false
```
4. b) CLI'yi oluşturun:
```
dotnet publish TwitchDownloaderCLI -p:PublishProfile=<Profile> -p:DebugType=None -p:DebugSymbols=false
```
- Uygulanabilir Profiller: `Windows`, `Linux`, `LinuxAlpine`, `LinuxArm`, `LinuxArm64`, `MacOS`
5. a) GUI derleme klasörüne gidin:
```
cd TwitchDownloaderWPF/bin/Release/net6.0-windows/publish/win-x64
```
5. b) CLI derleme klasörüne gidin:
```
cd TwitchDownloaderCLI/bin/Release/net6.0/publish
```

# Lisans

[MIT](./LICENSE.txt)

# Üçüncü Taraf Kredileri

Sohbet Görüntülemeleri, [SkiaSharp ve HarfBuzzSharp](https://github.com/mono/SkiaSharp) tarafından oluşturulmuştur © Microsoft Corporation.

Sohbet Görüntülemeleri işlenmesi ve Video İndirmeleri [FFmpeg](https://ffmpeg.org/) ile sonlandırılır © FFmpeg geliştiricileri.

Sohbet Görüntülemeleri, [Noto Renkli Emoji](https://github.com/googlefonts/noto-emoji) tarafından kullanılabilir © Google ve katkıda bulunanlar.

Sohbet Görüntülemeleri, [Twemoji](https://github.com/twitter/twemoji) tarafından kullanılabilir © Twitter ve katkıda bulunanlar.

Paketlenmiş FFmpeg ikili dosyaları [gyan.dev](https://www.gyan.dev/ffmpeg/) adresinden alınmıştır © Gyan Doshi.

Alınan FFmpeg ikili dosyaları çalışma zamanında [Xabe.FFmpeg.Downloader](https://github.com/tomaszzmuda/Xabe.FFmpeg) kullanılarak indirilir © Xabe.

Sohbet HTML dışa aktarmaları, [Google Fonts API](https://fonts.google.com/) tarafından barındırılan _Inter_ yazı tipini kullanır © Google.

Kullanılan tüm harici kütüphanelerin tam listesi için [THIRD-PARTY-LICENSES.txt](./TwitchDownloaderCore/Resources/THIRD-PARTY-LICENSES.txt) dosyasına bakınız.
1 change: 0 additions & 1 deletion TwitchDownloaderCLI/Modes/Arguments/CacheArgs.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

namespace TwitchDownloaderCLI.Modes.Arguments
{

[Verb("cache", HelpText = "Manage the working cache")]
public class CacheArgs : ITwitchDownloaderArgs
{
Expand Down
8 changes: 4 additions & 4 deletions TwitchDownloaderCLI/Modes/Arguments/ChatDownloadArgs.cs
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
using CommandLine;
using TwitchDownloaderCore.Chat;
using TwitchDownloaderCore.Tools;

namespace TwitchDownloaderCLI.Modes.Arguments
{

[Verb("chatdownload", HelpText = "Downloads the chat from a VOD or clip")]
public class ChatDownloadArgs : ITwitchDownloaderArgs
{
Expand All @@ -21,16 +21,16 @@ public class ChatDownloadArgs : ITwitchDownloaderArgs

[Option('e', "ending", HelpText = "Time in seconds to crop ending.")]
public double CropEndingTime { get; set; }

[Option('E', "embed-images", Default = false, HelpText = "Embed first party emotes, badges, and cheermotes into the chat download for offline rendering.")]
public bool EmbedData { get; set; }

[Option("bttv", Default = true, HelpText = "Enable BTTV embedding in chat download. Requires -E / --embed-images!")]
public bool? BttvEmotes { get; set; }

[Option("ffz", Default = true, HelpText = "Enable FFZ embedding in chat download. Requires -E / --embed-images!")]
public bool? FfzEmotes { get; set; }

[Option("stv", Default = true, HelpText = "Enable 7TV embedding in chat download. Requires -E / --embed-images!")]
public bool? StvEmotes { get; set; }

Expand Down
1 change: 0 additions & 1 deletion TwitchDownloaderCLI/Modes/Arguments/ChatRenderArgs.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

namespace TwitchDownloaderCLI.Modes.Arguments
{

[Verb("chatrender", HelpText = "Renders a chat JSON as a video")]
public class ChatRenderArgs : ITwitchDownloaderArgs
{
Expand Down
3 changes: 1 addition & 2 deletions TwitchDownloaderCLI/Modes/Arguments/ChatUpdateArgs.cs
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
using CommandLine;
using TwitchDownloaderCore.Chat;
using TwitchDownloaderCore.Tools;

namespace TwitchDownloaderCLI.Modes.Arguments
{

[Verb("chatupdate", HelpText = "Updates the embedded emotes, badges, bits, and crops of a chat download and/or converts a JSON chat to another format.")]
public class ChatUpdateArgs : ITwitchDownloaderArgs
{
Expand Down
1 change: 0 additions & 1 deletion TwitchDownloaderCLI/Modes/Arguments/ClipDownloadArgs.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

namespace TwitchDownloaderCLI.Modes.Arguments
{

[Verb("clipdownload", HelpText = "Downloads a clip from Twitch")]
public class ClipDownloadArgs : ITwitchDownloaderArgs
{
Expand Down
1 change: 0 additions & 1 deletion TwitchDownloaderCLI/Modes/Arguments/FfmpegArgs.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

namespace TwitchDownloaderCLI.Modes.Arguments
{

[Verb("ffmpeg", HelpText = "Manage standalone ffmpeg")]
public class FfmpegArgs : ITwitchDownloaderArgs
{
Expand Down
1 change: 0 additions & 1 deletion TwitchDownloaderCLI/Modes/Arguments/VideoDownloadArgs.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

namespace TwitchDownloaderCLI.Modes.Arguments
{

[Verb("videodownload", HelpText = "Downloads a stream VOD from Twitch")]
public class VideoDownloadArgs : ITwitchDownloaderArgs
{
Expand Down
12 changes: 5 additions & 7 deletions TwitchDownloaderCLI/Modes/DownloadChat.cs
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
using System;
using System.IO;
using System.Text.RegularExpressions;
using System.Threading;
using TwitchDownloaderCLI.Modes.Arguments;
using TwitchDownloaderCLI.Tools;
using TwitchDownloaderCore;
using TwitchDownloaderCore.Chat;
using TwitchDownloaderCore.Options;
using TwitchDownloaderCore.Tools;
using TwitchDownloaderCore.VideoPlatforms.Interfaces;
using TwitchDownloaderCore.VideoPlatforms.Twitch.Downloaders;

namespace TwitchDownloaderCLI.Modes
{
Expand All @@ -32,9 +30,7 @@ private static ChatDownloadOptions GetDownloadOptions(ChatDownloadArgs inputOpti
Environment.Exit(1);
}

var vodClipIdRegex = new Regex(@"(?<=^|(?:clips\.)?twitch\.tv\/(?:videos|\S+\/clip)?\/?)[\w-]+?(?=$|\?)");
var vodClipIdMatch = vodClipIdRegex.Match(inputOptions.Id);
if (!vodClipIdMatch.Success)
if (!UrlParse.TryParseVideoOrClipId(inputOptions.Id, out var videoPlatform, out var videoType, out var videoId))
{
Console.WriteLine("[ERROR] - Unable to parse Vod/Clip ID/URL.");
Environment.Exit(1);
Expand All @@ -51,7 +47,9 @@ private static ChatDownloadOptions GetDownloadOptions(ChatDownloadArgs inputOpti
".txt" or ".text" or "" => ChatFormat.Text,
_ => throw new NotSupportedException($"{fileExtension} is not a valid chat file extension.")
},
Id = vodClipIdMatch.Value,
Id = videoId,
VideoPlatform = videoPlatform,
VideoType = videoType,
CropBeginning = inputOptions.CropBeginningTime > 0.0,
CropBeginningTime = inputOptions.CropBeginningTime,
CropEnding = inputOptions.CropEndingTime > 0.0,
Expand Down
4 changes: 1 addition & 3 deletions TwitchDownloaderCLI/Modes/DownloadClip.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
using System;
using System.IO;
using System.Text.RegularExpressions;
using System.Threading;
using TwitchDownloaderCLI.Modes.Arguments;
using TwitchDownloaderCLI.Tools;
Expand Down Expand Up @@ -38,8 +37,7 @@ private static ClipDownloadOptions GetDownloadOptions(ClipDownloadArgs inputOpti
Environment.Exit(1);
}

bool success = UrlParse.TryParseClip(inputOptions.Id, out VideoPlatform videoPlatform, out string videoId);
if (!success)
if (!UrlParse.TryParseClip(inputOptions.Id, out var videoPlatform, out var videoId))
{
Console.WriteLine("[ERROR] - Unable to parse Clip ID/URL.");
Environment.Exit(1);
Expand Down
10 changes: 4 additions & 6 deletions TwitchDownloaderCLI/Modes/DownloadVideo.cs
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
using System;
using System.IO;
using System.Text.RegularExpressions;
using System.Threading;
using TwitchDownloaderCLI.Modes.Arguments;
using TwitchDownloaderCLI.Tools;
using TwitchDownloaderCore;
using TwitchDownloaderCore.Options;
using TwitchDownloaderCore.Tools;
using TwitchDownloaderCore.VideoPlatforms.Interfaces;
using TwitchDownloaderCore.VideoPlatforms.Twitch.Downloaders;

namespace TwitchDownloaderCLI.Modes
{
Expand All @@ -34,9 +33,7 @@ private static VideoDownloadOptions GetDownloadOptions(VideoDownloadArgs inputOp
Environment.Exit(1);
}

var vodIdRegex = new Regex(@"(?<=^|twitch\.tv\/videos\/)\d+(?=$|\?)");
var vodIdMatch = vodIdRegex.Match(inputOptions.Id);
if (!vodIdMatch.Success)
if (UrlParse.TryParseVod(inputOptions.Id, out var videoPlatform, out var videoId))
{
Console.WriteLine("[ERROR] - Unable to parse Vod ID/URL.");
Environment.Exit(1);
Expand All @@ -46,7 +43,8 @@ private static VideoDownloadOptions GetDownloadOptions(VideoDownloadArgs inputOp
{
DownloadThreads = inputOptions.DownloadThreads,
ThrottleKib = inputOptions.ThrottleKib,
Id = vodIdMatch.ValueSpan.ToString(),
Id = videoId,
VideoPlatform = videoPlatform,
Oauth = inputOptions.Oauth,
Filename = inputOptions.OutputFile,
Quality = inputOptions.Quality,
Expand Down
Loading