mirror of
https://github.com/yattee/yattee.git
synced 2024-12-22 21:43:41 +00:00
Add SponsorBlock categories details
This commit is contained in:
parent
3630cd404d
commit
d1ed896166
@ -20,13 +20,47 @@ final class SponsorBlockAPI: ObservableObject {
|
|||||||
switch name {
|
switch name {
|
||||||
case "selfpromo":
|
case "selfpromo":
|
||||||
return "Self-promotion"
|
return "Self-promotion"
|
||||||
|
|
||||||
case "music_offtopic":
|
case "music_offtopic":
|
||||||
return "Offtopic in Music Videos"
|
return "Offtopic in Music Videos"
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return name.capitalized
|
return name.capitalized
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static func categoryDetails(_ name: String) -> String? {
|
||||||
|
guard SponsorBlockAPI.categories.contains(name) else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
switch name {
|
||||||
|
case "sponsor":
|
||||||
|
return "Part of a video promoting a product or service not directly related to the creator. " +
|
||||||
|
"The creator will receive payment or compensation in the form of money or free products."
|
||||||
|
|
||||||
|
case "selfpromo":
|
||||||
|
return "Promoting a product or service that is directly related to the creator themselves. " +
|
||||||
|
"This usually includes merchandise or promotion of monetized platforms."
|
||||||
|
|
||||||
|
case "intro":
|
||||||
|
return "Segments typically found at the start of a video that include an animation, " +
|
||||||
|
"still frame or clip which are also seen in other videos by the same creator."
|
||||||
|
|
||||||
|
case "outro":
|
||||||
|
return "Typically near or at the end of the video when the credits pop up and/or endcards are shown."
|
||||||
|
|
||||||
|
case "interaction":
|
||||||
|
return "Explicit reminders to like, subscribe or interact with them on any paid or free platform(s) (e.g. click on a video)."
|
||||||
|
|
||||||
|
case "music_offtopic":
|
||||||
|
return "For videos which feature music as the primary content."
|
||||||
|
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func loadSegments(videoID: String, categories: Set<String>, completionHandler: @escaping () -> Void = {}) {
|
func loadSegments(videoID: String, categories: Set<String>, completionHandler: @escaping () -> Void = {}) {
|
||||||
guard !skipSegmentsURL.isNil, self.videoID != videoID else {
|
guard !skipSegmentsURL.isNil, self.videoID != videoID else {
|
||||||
completionHandler()
|
completionHandler()
|
||||||
|
@ -183,7 +183,7 @@ struct SettingsView: View {
|
|||||||
case .history:
|
case .history:
|
||||||
return 480
|
return 480
|
||||||
case .sponsorBlock:
|
case .sponsorBlock:
|
||||||
return 290
|
return 660
|
||||||
case .updates:
|
case .updates:
|
||||||
return 200
|
return 200
|
||||||
case .help:
|
case .help:
|
||||||
|
@ -39,7 +39,7 @@ struct SponsorBlockSettings: View {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
Section(header: SettingsHeader(text: "Categories to Skip")) {
|
Section(header: SettingsHeader(text: "Categories to Skip"), footer: categoriesDetails) {
|
||||||
#if os(macOS)
|
#if os(macOS)
|
||||||
let list = ForEach(SponsorBlockAPI.categories, id: \.self) { category in
|
let list = ForEach(SponsorBlockAPI.categories, id: \.self) { category in
|
||||||
SponsorBlockCategorySelectionRow(
|
SponsorBlockCategorySelectionRow(
|
||||||
@ -74,6 +74,24 @@ struct SponsorBlockSettings: View {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private var categoriesDetails: some View {
|
||||||
|
VStack(alignment: .leading) {
|
||||||
|
ForEach(SponsorBlockAPI.categories, id: \.self) { category in
|
||||||
|
Text(SponsorBlockAPI.categoryDescription(category) ?? "Category")
|
||||||
|
.fontWeight(.bold)
|
||||||
|
#if os(tvOS)
|
||||||
|
.focusable()
|
||||||
|
#endif
|
||||||
|
|
||||||
|
Text(SponsorBlockAPI.categoryDetails(category) ?? "Details")
|
||||||
|
.padding(.bottom, 3)
|
||||||
|
.fixedSize(horizontal: false, vertical: true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.foregroundColor(.secondary)
|
||||||
|
.padding(.top, 3)
|
||||||
|
}
|
||||||
|
|
||||||
func toggleCategory(_ category: String, value: Bool) {
|
func toggleCategory(_ category: String, value: Bool) {
|
||||||
if let index = sponsorBlockCategories.firstIndex(where: { $0 == category }), !value {
|
if let index = sponsorBlockCategories.firstIndex(where: { $0 == category }), !value {
|
||||||
sponsorBlockCategories.remove(at: index)
|
sponsorBlockCategories.remove(at: index)
|
||||||
@ -123,7 +141,7 @@ struct SponsorBlockSettings: View {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct ServicesSettings_Previews: PreviewProvider {
|
struct SponsorBlockSettings_Previews: PreviewProvider {
|
||||||
static var previews: some View {
|
static var previews: some View {
|
||||||
VStack {
|
VStack {
|
||||||
SponsorBlockSettings()
|
SponsorBlockSettings()
|
||||||
|
Loading…
Reference in New Issue
Block a user