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

[pull] master from database64128:master #3

Open
wants to merge 170 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
170 commits
Select commit Hold shift + click to select a range
76fe72f
🐢 Improve user experience on legacy platforms
database64128 May 2, 2022
bdaa262
🐌 Remove win-arm target
database64128 May 2, 2022
ab13c2d
🧢 Use separate `Settings` for STJ source generation
database64128 May 3, 2022
24c516e
🚲 Reference STJ package
database64128 May 3, 2022
6094584
🌻 Bump version to v1.11.0 and update screenshots and README
database64128 May 3, 2022
a62f0d3
🤖 Bump xunit.runner.visualstudio from 2.4.3 to 2.4.4 (#133)
dependabot[bot] May 5, 2022
4d0c7cb
🤖 Bump xunit.runner.visualstudio from 2.4.4 to 2.4.5 (#134)
dependabot[bot] May 6, 2022
d1e3093
🤖 Bump System.Text.Json from 6.0.3 to 6.0.4 (#136)
dependabot[bot] May 11, 2022
1063dee
🤖 Bump Microsoft.NET.Test.Sdk from 17.1.0 to 17.2.0 (#137)
dependabot[bot] May 12, 2022
b16bf58
🤖 Bump ReactiveUI.Fody from 18.0.10 to 18.1.8 (#142)
dependabot[bot] Jun 13, 2022
7483034
🤖 Bump ReactiveUI.WPF from 18.0.10 to 18.1.8 (#143)
dependabot[bot] Jun 13, 2022
7439c36
🤖 Bump System.Text.Json from 6.0.4 to 6.0.5 (#144)
dependabot[bot] Jun 15, 2022
dd46701
🦾 Dependabot -> Renovate
database64128 Jun 24, 2022
bf74fff
🔼 Update dependency Splat.Serilog to v14.2.27
renovate[bot] Jun 24, 2022
5e00811
🔼 Update dependencies
database64128 Jun 29, 2022
93d06c8
🦾 Renovate: Batch and automerge RxUI updates
database64128 Jul 2, 2022
d49708b
🔼 Update ReactiveUI to v18.2.9
renovate[bot] Jul 8, 2022
d9cec0d
🔼 Update dependency Splat.Serilog to v14.4.1
renovate[bot] Jul 14, 2022
0aa371d
🔼 Update ReactiveUI to v18.3.1
renovate[bot] Jul 19, 2022
cb7927c
🔼 Update dependency xunit to v2.4.2
renovate[bot] Aug 2, 2022
109a681
🕳️ Remove STJ package reference
database64128 Aug 6, 2022
c0a1bdf
🔼 Update dependency Microsoft.NET.Test.Sdk to v17.3.0
renovate[bot] Aug 10, 2022
08fce4d
🔼 Update dependency Microsoft.NET.Test.Sdk to v17.3.1
renovate[bot] Aug 30, 2022
1562dc3
🔼 Update dependency Serilog to v2.12.0
renovate[bot] Sep 13, 2022
008b1fe
🔼 Update dependency MaterialDesignThemes to v4.6.0
renovate[bot] Sep 16, 2022
c429d13
🔼 Update dependency MaterialDesignThemes to v4.6.1
renovate[bot] Sep 26, 2022
855dc71
🔼 Update dependency Microsoft.NET.Test.Sdk to v17.3.2
renovate[bot] Sep 26, 2022
abdc796
🔼 Update dependency ReactiveMarbles.ObservableEvents.SourceGenerator …
renovate[bot] Sep 27, 2022
6dd7c2a
🔼 Update dependency coverlet.collector to v3.2.0
renovate[bot] Oct 29, 2022
4ab3b12
🔼 Update dependency Microsoft.NET.Test.Sdk to v17.4.0
renovate[bot] Nov 7, 2022
bff1ca8
🔼 Update ReactiveUI to v18.4.1
renovate[bot] Nov 24, 2022
ed6934f
🔼 Update dependency Splat.Serilog to v14.5.1
renovate[bot] Nov 24, 2022
00c4a3d
7️⃣ Update to .NET 7
database64128 Nov 25, 2022
223771c
🔼 Update dependency ReactiveUI.Validation to v3.0.22
renovate[bot] Nov 25, 2022
c116165
🔼 Update dependency Splat.Serilog to v14.6.1
renovate[bot] Dec 7, 2022
6677501
🔼 Update dependency Microsoft.NET.Test.Sdk to v17.4.1
renovate[bot] Dec 16, 2022
88c06b6
🔼 Update dependency MaterialDesignThemes to v4.7.0
renovate[bot] Jan 5, 2023
67db6cd
🔼 Update dependency MaterialDesignThemes to v4.7.1
renovate[bot] Jan 16, 2023
015a09b
🔼 Update dependency Splat.Serilog to v14.6.8
renovate[bot] Feb 1, 2023
9132a05
🔼 Update ReactiveUI
renovate[bot] Feb 1, 2023
287d78f
🔼 Update ReactiveUI to v18.4.22
renovate[bot] Feb 18, 2023
13220e3
🔼 Update dependency Microsoft.NET.Test.Sdk to v17.5.0
renovate[bot] Feb 21, 2023
bf84120
🔼 Update dependency MaterialDesignThemes to v4.8.0
renovate[bot] Mar 2, 2023
e22641b
🔼 Update ReactiveUI to v18.4.25
renovate[bot] Mar 5, 2023
0fa3cd1
🔼 Update ReactiveUI to v18.4.26
renovate[bot] Mar 11, 2023
e5e2536
🔼 Update ReactiveUI to v18.4.34
renovate[bot] Apr 20, 2023
1a8c8ac
🐌 log sink: do not emit RxUI binding warnings
database64128 Apr 24, 2023
a4edaf6
🕘 log sink: use shorter timestamps
database64128 Apr 24, 2023
ab91578
⛲ log sink: refactor to improve efficiency
database64128 Apr 24, 2023
ec4ffe3
📑 Rewrite FileHelper in idiomatic C#
database64128 Apr 24, 2023
294537f
✂️ Ignore final empty output
database64128 Apr 24, 2023
add110e
🐎 General cleanup
database64128 May 2, 2023
8f17dc9
⛷️ Refactor backend output handling
database64128 May 2, 2023
b530d64
🪄 Optimize backend output handling
database64128 May 2, 2023
a6adc48
✏️ Rename DownloadPathItemView(Model) to HistoryItemView(Model)
database64128 May 2, 2023
e37e681
🥁 Remember used output templates
database64128 May 2, 2023
5b61374
↕️ Fix logs view content alignment
database64128 May 2, 2023
05777f5
🍞 Allow specifying playlist items
database64128 May 3, 2023
a0bb502
🐻‍❄️ filename template -> output template
database64128 May 3, 2023
38e59b1
🖼️ Adjust layout
database64128 May 3, 2023
0c89bdc
🪟 Remember window size (but not position)
database64128 May 3, 2023
5c2a36a
🔼 Bump version and update README
database64128 May 3, 2023
53adbc5
🏗️ Update workflows
database64128 May 3, 2023
5d2e693
🎨 Update MaterialDesignThemes to preview
database64128 May 4, 2023
ecf22de
🔼 Update dependency MaterialDesignThemes to v4.8.1-ci249
renovate[bot] May 4, 2023
9d052eb
🔼 Update dependency MaterialDesignThemes to v4.8.1-ci253
renovate[bot] May 8, 2023
ef238b0
🔼 Update dependency MaterialDesignThemes to v4.8.1-ci255
renovate[bot] May 10, 2023
1aaed0e
🔼 Update ReactiveUI to v18.4.44
renovate[bot] May 11, 2023
aff80eb
🔼 Update dependency MaterialDesignThemes to v4.8.1
renovate[bot] May 11, 2023
6a46513
🔼 Update dependency MaterialDesignThemes to v4.9.0
renovate[bot] May 11, 2023
90f7627
🐞 FileHelper: skip replacing when the destination file doesn't exist
database64128 May 15, 2023
24c5df6
🎹 CtrlCHelper: use P/Invoke source generation
database64128 May 15, 2023
0378e14
🔼 Bump version to v1.12.1
database64128 May 15, 2023
9d06f64
🔼 Update dependency Microsoft.NET.Test.Sdk to v17.6.0
renovate[bot] May 16, 2023
0634f0d
🖍️ README fix-ups
database64128 May 20, 2023
66b9c80
➖ Remove SelectedPresetText from Settings
database64128 May 20, 2023
6136ea5
🧶 Fix incorrect state of custom argument chips in preset dialog
database64128 May 20, 2023
37934c9
🍟 Fix argument chip removal logic
database64128 May 20, 2023
84a4d42
🔢 Fix custom preset display order
database64128 May 20, 2023
c114a62
🪞 Avoid duplicate names when duplicating presets
database64128 May 20, 2023
d9d445f
🗨️ preset dialog: sync on save
database64128 May 20, 2023
81edb28
🔼 Update dependency coverlet.collector to v6
renovate[bot] May 21, 2023
858e2c1
🎹 Fix crash when hitting enter in linkTextBox
database64128 Jun 1, 2023
92f612f
🔼 Bump version to v1.12.2
database64128 Jun 1, 2023
7bcc63d
🔼 Update dependency Microsoft.NET.Test.Sdk to v17.6.1
renovate[bot] Jun 1, 2023
3b16675
🔼 Update dependency Splat.Serilog to v14.6.37
renovate[bot] Jun 1, 2023
a480628
🔼 Update ReactiveUI to v19
renovate[bot] Jun 4, 2023
cd111e3
🔼 Update dependency Microsoft.NET.Test.Sdk to v17.6.2
renovate[bot] Jun 6, 2023
7a4a625
🔼 Update dependency Serilog to v3
renovate[bot] Jun 20, 2023
c808df1
🔼 Update dependency Serilog to v3.0.1
renovate[bot] Jun 21, 2023
ee899c8
🔼 Update dependency Microsoft.NET.Test.Sdk to v17.6.3
renovate[bot] Jun 27, 2023
da30f6b
🔼 Update dependency xunit to v2.5.0
renovate[bot] Jul 6, 2023
bea20f2
🔼 Update dependency xunit.runner.visualstudio to v2.5.0
renovate[bot] Jul 7, 2023
dfa5d99
🔼 Update ReactiveUI to v19.3.3
renovate[bot] Jul 8, 2023
26d1d86
🔼 Update ReactiveUI to v19.4.1
renovate[bot] Jul 11, 2023
538293b
🔼 Update dependency Splat.Serilog to v14.7.1
renovate[bot] Jul 24, 2023
e6a9d90
🔼 Update dependency Microsoft.NET.Test.Sdk to v17.7.0
renovate[bot] Aug 4, 2023
6d72197
🔼 Update dependency Microsoft.NET.Test.Sdk to v17.7.1
renovate[bot] Aug 16, 2023
19d548a
🔼 Update dependency Microsoft.NET.Test.Sdk to v17.7.2
renovate[bot] Aug 29, 2023
79eba20
🔼 Update actions/checkout action to v4
renovate[bot] Sep 4, 2023
fbfe2c0
🔼 Update xunit-dotnet monorepo to v2.5.1
renovate[bot] Sep 18, 2023
a7c2f31
🔼 Update ReactiveUI to v19.5.1
renovate[bot] Oct 2, 2023
22032fe
🔼 Update dependency ReactiveMarbles.ObservableEvents.SourceGenerator …
renovate[bot] Oct 3, 2023
c371a40
🔼 Update xunit-dotnet monorepo
renovate[bot] Oct 13, 2023
29d27eb
🔼 Update dependency xunit to v2.5.3
renovate[bot] Oct 16, 2023
e1e5c4a
🔼 Update dependency xunit to v2.6.0
renovate[bot] Nov 1, 2023
6bd19ac
🔼 Update dependency Splat.Serilog to v14.8.6
renovate[bot] Nov 2, 2023
4f5150d
🔼 Update dependency xunit to v2.6.1
renovate[bot] Nov 2, 2023
9d122db
🔼 Update dependency Microsoft.NET.Test.Sdk to v17.8.0
renovate[bot] Nov 8, 2023
2f202e0
🔼 Update dependency Serilog to v3.1.0
renovate[bot] Nov 9, 2023
468010c
🔼 Update dependency Serilog to v3.1.1
renovate[bot] Nov 10, 2023
1d4fc53
🔼 Update xunit-dotnet monorepo
renovate[bot] Nov 19, 2023
cf35e85
🔼 Update xunit-dotnet monorepo
renovate[bot] Dec 9, 2023
f9563e9
🔼 Update dependency Splat.Serilog to v14.8.12
renovate[bot] Dec 9, 2023
18b1744
🔼 Update actions/upload-artifact action to v4
renovate[bot] Dec 14, 2023
4c11f2f
🔼 Update ReactiveUI to v19.5.31
renovate[bot] Dec 16, 2023
fb83664
🔼 Update xunit-dotnet monorepo
renovate[bot] Dec 23, 2023
1a761d9
🔼 Update ReactiveUI to v19.5.39
renovate[bot] Jan 3, 2024
cfbb342
🔼 Update dependency xunit to v2.6.5
renovate[bot] Jan 5, 2024
04f78dd
🔼 Update dependency xunit to v2.6.6
renovate[bot] Jan 15, 2024
7b16352
🔼 Update ReactiveUI to v19.5.41
renovate[bot] Jan 27, 2024
10b070a
🔼 Update dependency Microsoft.NET.Test.Sdk to v17.9.0
renovate[bot] Feb 6, 2024
a99f62c
🔼 Update xunit-dotnet monorepo
renovate[bot] Feb 16, 2024
63ca6df
🔼 Update dependency coverlet.collector to v6.0.1
renovate[bot] Feb 20, 2024
2b31423
🔼 Update dependency coverlet.collector to v6.0.2
renovate[bot] Mar 13, 2024
b7abb6b
🔼 Update dependency ReactiveUI.WPF to v19.5.72
renovate[bot] Mar 15, 2024
752d8ff
🎱 Upgrade to .NET 8
database64128 Mar 19, 2024
e3fdfa9
🔼 Update MaterialDesignThemes to v5
database64128 Mar 20, 2024
4beace4
🏗️ gh-actions: fix upload paths
database64128 Mar 21, 2024
beef3f1
📚 Update README.md
database64128 Mar 22, 2024
8c4336e
🤯 Handle OpenFileDialog quirks
database64128 Mar 22, 2024
843a047
🔼 Update dependency ReactiveUI.WPF to v19.6.1
renovate[bot] Mar 25, 2024
88dc139
🔼 Update xunit-dotnet monorepo
renovate[bot] Apr 11, 2024
797d3bd
🎨 renovate: use config preset
database64128 Apr 17, 2024
31c6d9d
🔼 Update dependency ReactiveUI.WPF to v19.6.12
renovate[bot] Apr 26, 2024
b83520a
🔼 Update xunit-dotnet monorepo to v2.8.0
renovate[bot] Apr 27, 2024
6e877f9
🔼 Update dependency ReactiveUI.WPF to v20
renovate[bot] May 5, 2024
e7935ee
🔼 Update dependency Splat.Serilog to v15
renovate[bot] May 5, 2024
6ef5d4c
🔼 Update dependency ReactiveUI.Validation to v4
renovate[bot] May 7, 2024
897c7ba
🔼 Update dependency ReactiveUI.Validation to v4.0.9
renovate[bot] May 11, 2024
e3216e9
🔼 Update dependency Splat.Serilog to v15.1.1
renovate[bot] May 16, 2024
fced5af
🔼 Update dependency ReactiveUI.WPF to v20.1.1
renovate[bot] May 18, 2024
580479f
🔼 Update dependency Microsoft.NET.Test.Sdk to v17.10.0
renovate[bot] May 22, 2024
a18adbe
🔼 Update xunit-dotnet monorepo to v2.8.1
renovate[bot] May 25, 2024
3e18ae5
🔼 Update dependency Serilog to v4
renovate[bot] Jun 1, 2024
bad6c97
🔼 Update dependency MaterialDesignThemes to v5.1.0
renovate[bot] Jun 22, 2024
043d14a
🔼 Update dependency Serilog.Sinks.File to v6
renovate[bot] Jun 23, 2024
142bfc1
🔼 Update xunit-dotnet monorepo
renovate[bot] Jul 8, 2024
37030cc
🔼 Update dependency Serilog to v4.0.1
renovate[bot] Jul 25, 2024
3985932
🔼 Update dependency Microsoft.NET.Test.Sdk to v17.11.0
renovate[bot] Aug 20, 2024
1d155b7
🔼 Update dependency Microsoft.NET.Test.Sdk to 17.11.1
renovate[bot] Sep 5, 2024
fcdeed4
🔼 Update dependency Splat.Serilog to 15.2.22
renovate[bot] Sep 16, 2024
58700e8
🔼 Update dependency ReactiveUI.WPF to 20.1.63
renovate[bot] Sep 21, 2024
b2b59c8
🔼 Update dependency xunit to 2.9.1
renovate[bot] Sep 23, 2024
26f9032
🔼 Update dependency ReactiveUI.Validation to 4.1.1
renovate[bot] Sep 25, 2024
35e80f7
🔼 Update dependency xunit to 2.9.2
renovate[bot] Sep 27, 2024
66fa484
🔼 Update dependency Serilog to 4.0.2
renovate[bot] Sep 29, 2024
80bd213
🔼 Update dependency Serilog to 4.1.0
renovate[bot] Oct 22, 2024
0c0f252
🔼 Update dependency Microsoft.NET.Test.Sdk to 17.12.0
renovate[bot] Nov 19, 2024
322b017
🔼 Update dependency Serilog to 4.2.0
renovate[bot] Dec 6, 2024
0731a28
🔼 Update dependency xunit.runner.visualstudio to v3
renovate[bot] Dec 16, 2024
5773760
🔼 Update dependency coverlet.collector to 6.0.3
renovate[bot] Dec 31, 2024
96fa1d5
🔼 Update dependency MaterialDesignThemes to 5.2.0
renovate[bot] Jan 3, 2025
4f20242
🔼 Update dependency xunit to 2.9.3
renovate[bot] Jan 8, 2025
761e303
🔼 Update dependency MaterialDesignThemes to 5.2.1
renovate[bot] Jan 10, 2025
c6b384f
🔼 Update dependency xunit.runner.visualstudio to 3.0.1
renovate[bot] Jan 10, 2025
c32f40f
🔼 Update dependency coverlet.collector to 6.0.4
renovate[bot] Jan 20, 2025
9c88e9c
🔼 Update dependency Splat.Serilog to 15.3.1
renovate[bot] Jan 29, 2025
ddb9cb5
🔼 Update dependency xunit.runner.visualstudio to 3.0.2
renovate[bot] Feb 7, 2025
8145290
🔼 Update dependency Microsoft.NET.Test.Sdk to 17.13.0
renovate[bot] Feb 11, 2025
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
7 changes: 0 additions & 7 deletions .github/dependabot.yml

This file was deleted.

38 changes: 28 additions & 10 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,36 +15,54 @@ on:
jobs:
build:
name: Build
runs-on: windows-2022
runs-on: windows-latest

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4

- name: Restore dependencies
run: dotnet restore

- name: Build
run: dotnet build --no-restore

- name: Test
run: dotnet test --no-build --verbosity normal

# Publish
- name: Publish framework-dependent
run: dotnet publish YoutubeDl.Wpf -c Release --no-restore

- name: Publish self-contained for Windows ARM64
run: dotnet publish YoutubeDl.Wpf -c Release -r win-arm64 --self-contained

- name: Publish self-contained for Windows x64
run: dotnet publish YoutubeDl.Wpf -c Release -r win-x64 --self-contained

- name: Publish self-contained for Windows x86
run: dotnet publish YoutubeDl.Wpf -c Release -r win-x86 --self-contained

# Upload
- name: Upload artifacts for Windows framework-dependent
uses: actions/upload-artifact@v4
with:
name: youtube-dl-wpf-${{ github.sha }}-windows
path: YoutubeDl.Wpf/bin/Release/net8.0-windows10.0.22621.0/publish/

- name: Upload artifacts for Windows ARM64
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v4
with:
name: youtube-dl-wpf-${{ github.sha }}-windows-arm64
path: YoutubeDl.Wpf/bin/Release/net6.0-windows10.0.22000.0/win-arm64/publish/
path: YoutubeDl.Wpf/bin/Release/net8.0-windows10.0.22621.0/win-arm64/publish/

- name: Upload artifacts for Windows x64
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v4
with:
name: youtube-dl-wpf-${{ github.sha }}-windows-x64
path: YoutubeDl.Wpf/bin/Release/net6.0-windows10.0.22000.0/win-x64/publish/
- name: Upload artifacts for Windows framework-dependent
uses: actions/upload-artifact@v2
path: YoutubeDl.Wpf/bin/Release/net8.0-windows10.0.22621.0/win-x64/publish/

- name: Upload artifacts for Windows x86
uses: actions/upload-artifact@v4
with:
name: youtube-dl-wpf-${{ github.sha }}-windows
path: YoutubeDl.Wpf/bin/Release/net6.0-windows10.0.22000.0/publish/
name: youtube-dl-wpf-${{ github.sha }}-windows-x86
path: YoutubeDl.Wpf/bin/Release/net8.0-windows10.0.22621.0/win-x86/publish/
41 changes: 22 additions & 19 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,46 +8,49 @@ on:
jobs:
publish_upload:
name: Publish and upload
runs-on: windows-2022
runs-on: windows-latest

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4

- name: Restore dependencies
run: dotnet restore
- name: Build
run: dotnet build --no-restore
- name: Test
run: dotnet test --no-build --verbosity normal

# Publish
- name: Publish framework-dependent
run: dotnet publish YoutubeDl.Wpf -c Release --no-restore

- name: Publish self-contained for Windows ARM64
run: dotnet publish YoutubeDl.Wpf -c Release -r win-arm64 --self-contained

- name: Publish self-contained for Windows x64
run: dotnet publish YoutubeDl.Wpf -c Release -r win-x64 --self-contained
# Get version
- name: Get version
id: get_version
shell: bash
run: echo ::set-output name=VERSION::$(echo $GITHUB_REF | cut -d / -f 3)

- name: Publish self-contained for Windows x86
run: dotnet publish YoutubeDl.Wpf -c Release -r win-x86 --self-contained

# Package
- name: Package for Windows
run: |
cd YoutubeDl.Wpf/bin/Release/net6.0-windows10.0.22000.0/publish
7z a -tzip -mx=9 -mfb=128 ../youtube-dl-wpf-${{ steps.get_version.outputs.VERSION }}-windows.zip .
7z a -t7z -m0=lzma2 -mx=9 -mfb=64 -md=64m -ms=on ../youtube-dl-wpf-${{ steps.get_version.outputs.VERSION }}-windows.7z .
cd YoutubeDl.Wpf/bin/Release/net8.0-windows10.0.22621.0/publish
7z a -tzip -mx=9 -mfb=128 ../youtube-dl-wpf-${{ github.ref_name }}-windows.zip .
7z a -t7z -m0=lzma2 -mx=9 -mfb=64 -md=64m -ms=on ../youtube-dl-wpf-${{ github.ref_name }}-windows.7z .
cd ../win-arm64/publish
7z a -tzip -mx=9 -mfb=128 ../../youtube-dl-wpf-${{ steps.get_version.outputs.VERSION }}-windows-arm64.zip .
7z a -t7z -m0=lzma2 -mx=9 -mfb=64 -md=64m -ms=on ../../youtube-dl-wpf-${{ steps.get_version.outputs.VERSION }}-windows-arm64.7z .
7z a -tzip -mx=9 -mfb=128 ../../youtube-dl-wpf-${{ github.ref_name }}-windows-arm64.zip .
7z a -t7z -m0=lzma2 -mx=9 -mfb=64 -md=64m -ms=on ../../youtube-dl-wpf-${{ github.ref_name }}-windows-arm64.7z .
cd ../../win-x64/publish
7z a -tzip -mx=9 -mfb=128 ../../youtube-dl-wpf-${{ steps.get_version.outputs.VERSION }}-windows-x64.zip .
7z a -t7z -m0=lzma2 -mx=9 -mfb=64 -md=64m -ms=on ../../youtube-dl-wpf-${{ steps.get_version.outputs.VERSION }}-windows-x64.7z .
7z a -tzip -mx=9 -mfb=128 ../../youtube-dl-wpf-${{ github.ref_name }}-windows-x64.zip .
7z a -t7z -m0=lzma2 -mx=9 -mfb=64 -md=64m -ms=on ../../youtube-dl-wpf-${{ github.ref_name }}-windows-x64.7z .
cd ../../win-x86/publish
7z a -tzip -mx=9 -mfb=128 ../../youtube-dl-wpf-${{ github.ref_name }}-windows-x86.zip .
7z a -t7z -m0=lzma2 -mx=9 -mfb=64 -md=64m -ms=on ../../youtube-dl-wpf-${{ github.ref_name }}-windows-x86.7z .

# Release
- name: Upload release assets for Windows
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: YoutubeDl.Wpf/bin/Release/net6.0-windows10.0.22000.0/youtube-dl-wpf-*
file: YoutubeDl.Wpf/bin/Release/net8.0-windows10.0.22621.0/youtube-dl-wpf-*
tag: ${{ github.ref }}
file_glob: true
prerelease: true
34 changes: 18 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,50 +1,52 @@
# 🎞⬇ Cube YouTube Downloader - `youtube-dl-wpf`

[![Build](https://github.com/database64128/youtube-dl-wpf/workflows/Build/badge.svg)](https://github.com/database64128/youtube-dl-wpf/actions?query=workflow%3ABuild)
[![Release](https://github.com/database64128/youtube-dl-wpf/workflows/Release/badge.svg)](https://github.com/database64128/youtube-dl-wpf/actions?query=workflow%3ARelease)
[![Build](https://github.com/database64128/youtube-dl-wpf/actions/workflows/build.yml/badge.svg)](https://github.com/database64128/youtube-dl-wpf/actions/workflows/build.yml)
[![Release](https://github.com/database64128/youtube-dl-wpf/actions/workflows/release.yml/badge.svg)](https://github.com/database64128/youtube-dl-wpf/actions/workflows/release.yml)

A simple GUI wrapper for [`youtube-dl`](https://github.com/ytdl-org/youtube-dl) and [`yt-dlp`](https://github.com/yt-dlp/yt-dlp).
WPF GUI for [youtube-dl](https://github.com/ytdl-org/youtube-dl) and [yt-dlp](https://github.com/yt-dlp/yt-dlp).

![Home](home.webp "Home")
![Settings](settings.webp "Settings")

## Features

- Follow 🎨 system color mode, or choose between 🌃 dark mode and 🔆 light mode.
- Update `youtube-dl`/`yt-dlp` on startup.
- Update youtube-dl/yt-dlp on startup.
- List all available formats.
- Override video, audio formats and output container.
- Embed metadata into downloaded file.
- Download and embed thumbnails.
- Download playlists.
- Download whole playlists.
- Select items from playlist to download.
- Select types of subtitles (default, all languages, auto-generated) to download and embed.
- Specify custom download filename template.
- Specify custom output template.
- Specify custom download path.
- Specify custom `ffmpeg` path.
- Specify custom FFmpeg path.
- Specify custom proxy.
- Specify custom command-line arguments.

## Usage

1. Download the pre-built binary or build it from source.
2. Download [`youtube-dl`](https://github.com/ytdl-org/youtube-dl) or [`yt-dlp`](https://github.com/yt-dlp/yt-dlp) from the upstream. _Optionally but recommended_, get `ffmpeg` either by [building from source](https://www.ffmpeg.org/) or downloading [pre-built binaries](https://ffmpeg.zeranoe.com/builds/) for Windows.
3. The framework-dependent binary requires an installed [.NET 6 Runtime](https://dotnet.microsoft.com/download/dotnet/6.0) to run. Alternatively, download the self-contained binary that bundles the runtime. The upstream `youtube-dl` binary requires MSVC++ 2010 x86 runtime.
4. Run `youtube-dl-wpf.exe`. Go to __Settings__. Set the path to `youtube-dl`/`yt-dlp` and `ffmpeg`.
5. Go back to the home tab. Paste a video URL and start downloading! 🚀
2. Download [yt-dlp](https://github.com/yt-dlp/yt-dlp) or [youtube-dl](https://github.com/ytdl-org/youtube-dl).
3. It's optional but highly recommended to also download [FFmpeg](https://ffmpeg.org/download.html). Otherwise you won't be able to merge separate video and audio tracks.
4. The framework-dependent binary requires an installed [.NET Runtime](https://dotnet.microsoft.com/) to run. Alternatively, download the self-contained binary that bundles the runtime.
5. Run `youtube-dl-wpf.exe`. Go to __Settings__. Set the path to youtube-dl/yt-dlp and FFmpeg.
6. Go back to the home tab. Paste a video URL and start downloading! 🚀

## FAQ

1. Q: The __Download__ button is grayed out and I can't click it!

A: `youtube-dl-wpf` is a simple GUI wrapper. It doesn't bundle any downloader with it. You have to download `youtube-dl`/`yt-dlp` from the upstream. The `ffmpeg` binary is required by `youtube-dl`/`yt-dlp` when downloading and merging separate video and audio tracks, which is the case for any video resolution higher than 360p on YouTube.
A: `youtube-dl-wpf` is a simple GUI wrapper. It doesn't bundle any downloader with it. You have to download youtube-dl or yt-dlp for it to work. FFmpeg is required by youtube-dl and yt-dlp when merging separate video and audio tracks, which is the case for most formats on YouTube.

2. Q: How can I use a proxy to download?

A: Leave the proxy field empty to use system proxy settings. Otherwise the format is similar to how `curl` accepts proxy strings. Examples are, `socks5://localhost:1080/`, `http://localhost:8080/`. Currently the upstream doesn't accept `socks5h` protocol and treat `socks5` as `socks5h` by always resolving the hostname using the proxy. This is tracked in [this issue](https://github.com/ytdl-org/youtube-dl/issues/22618).
A: Leave the proxy field empty to use system proxy settings. Otherwise the format is similar to how `curl` accepts proxy strings (e.g. `socks5://localhost:1080/`, `http://localhost:8080/`). Currently the upstream doesn't accept `socks5h` protocol and treat `socks5` as `socks5h` by always resolving the hostname using the proxy. This is tracked in [this issue](https://github.com/ytdl-org/youtube-dl/issues/22618).

3. Q: Downloading the whole playlist doesn't work!

A: It's an upstream bug, just like many other issues you might discover. There's nothing I can do. Just report the bug to the [upstream](https://github.com/ytdl-org/youtube-dl).
A: It's an upstream bug, just like many other issues you might discover. There's nothing I can do. Just report the bug to yt-dlp or youtube-dl, whichever you use.

4. Q: `youtube-dl` and `yt-dlp` behave differently!

Expand All @@ -60,7 +62,7 @@ A simple GUI wrapper for [`youtube-dl`](https://github.com/ytdl-org/youtube-dl)

## Build

Prerequisites: .NET 6 SDK
Prerequisites: .NET 8 SDK

Note for packagers: The application by default uses executable directory as config directory. To use user's config directory, define the constant `PACKAGED` when building.

Expand Down Expand Up @@ -97,4 +99,4 @@ dotnet publish YoutubeDl.Wpf -c Release -p:DefineConstants=PACKAGED -r win-x64 -
- [Roboto Mono](https://fonts.google.com/specimen/Roboto+Mono) is licensed under the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0).
- [ReactiveUI](https://github.com/reactiveui/ReactiveUI) and its dependencies are licensed under [MIT](https://github.com/reactiveui/ReactiveUI/blob/main/LICENSE).

© 2022 database64128
© 2024 database64128
10 changes: 5 additions & 5 deletions YoutubeDl.Wpf.Tests/YoutubeDl.Wpf.Tests.csproj
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net6.0-windows10.0.22000.0</TargetFramework>
<TargetFramework>net8.0-windows10.0.22621.0</TargetFramework>

<IsPackable>false</IsPackable>

<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.13.0" />
<PackageReference Include="xunit" Version="2.9.3" />
<PackageReference Include="xunit.runner.visualstudio" Version="3.0.2">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="coverlet.collector" Version="3.1.2">
<PackageReference Include="coverlet.collector" Version="6.0.4">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
Expand Down
2 changes: 1 addition & 1 deletion YoutubeDl.Wpf/App.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<materialDesign:CustomColorTheme BaseTheme="Inherit" PrimaryColor="#8187ff" SecondaryColor="#00c853" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesign2.Defaults.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
Expand Down
4 changes: 2 additions & 2 deletions YoutubeDl.Wpf/MainWindow.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
TextOptions.TextRenderingMode="Auto"
Background="{DynamicResource MaterialDesignPaper}"
FontFamily="{materialDesign:MaterialDesignFont}"
Title="Cube YouTube Downloader" Height="720" Width="904" MinHeight="644" MinWidth="620">
Title="Cube YouTube Downloader" MinHeight="644" MinWidth="620">
<materialDesign:DialogHost x:Name="rootDialogHost" Identifier="RootDialog" SnackbarMessageQueue="{Binding ElementName=MainSnackbar, Path=MessageQueue}" Style="{StaticResource MaterialDesignEmbeddedDialogHost}">
<materialDesign:DialogHost.DialogContentTemplate>
<DataTemplate>
Expand All @@ -28,7 +28,7 @@
</DataTemplate>
</materialDesign:DialogHost.DialogContentTemplate>
<Grid>
<TabControl x:Name="mainTabControl" SelectedIndex="0" Style="{StaticResource MaterialDesignNavigatilRailTabControl}">
<TabControl x:Name="mainTabControl" SelectedIndex="0" Style="{StaticResource MaterialDesignNavigationRailTabControl}">
<TabControl.ItemContainerStyle>
<Style TargetType="TabItem" BasedOn="{StaticResource MaterialDesignNavigationRailTabItem}">
<Setter Property="Height" Value="56" />
Expand Down
22 changes: 20 additions & 2 deletions YoutubeDl.Wpf/MainWindow.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,29 @@ public partial class MainWindow
public MainWindow()
{
InitializeComponent();
TaskbarItemInfo = new();
ViewModel = new(MainSnackbar.MessageQueue!); // Null forgiving reason: following upstream

MainSnackbar.MessageQueue!.DiscardDuplicates = true;
ViewModel = new(MainSnackbar.MessageQueue);

// Set window size here to avoid flickering.
Width = ViewModel.SharedSettings.WindowWidth;
Height = ViewModel.SharedSettings.WindowHeight;

TaskbarItemInfo = new();

this.WhenActivated(disposables =>
{
// Window size
this.Bind(ViewModel,
viewModel => viewModel.SharedSettings.WindowWidth,
view => view.Width)
.DisposeWith(disposables);

this.Bind(ViewModel,
viewModel => viewModel.SharedSettings.WindowHeight,
view => view.Height)
.DisposeWith(disposables);

// Window closing
this.Events().Closing
.InvokeCommand(ViewModel.SaveSettingsAsyncCommand)
Expand Down
Loading