Compare commits

...

24 Commits

Author SHA1 Message Date
Arkadiusz Fal
d1cf45c6a1 Bump build number to 181 2024-04-02 23:14:51 +02:00
Arkadiusz Fal
07f3d841b3 Update CHANGELOG 2024-04-02 23:14:18 +02:00
Arkadiusz Fal
b488f86160 Downgrade MPVKit to 0.36.0-1
commit dca1e345a26d09a3d621d7656a94e6427f3f7b83
2024-04-02 23:14:18 +02:00
Arkadiusz Fal
e64c3a3c77 Update packages 2024-04-02 23:14:17 +02:00
Arkadiusz Fal
576a993faf Merge pull request #631 from stonerl/comments-piped
hopefully fixes #629
2024-04-02 22:51:07 +02:00
Toni Förster
c77c5a6d21 don't add empty comments 2024-04-02 15:08:36 +02:00
Toni Förster
ae16680fc2 removed some unnecessary print() 2024-04-02 14:28:06 +02:00
Toni Förster
807c0a1e2e hopefully fixes #629
should also get rid of empty comments if they couldn't be loaded
2024-04-02 14:28:06 +02:00
Arkadiusz Fal
96a2119a05 Merge pull request #632 from stonerl/invidious-html-comments
iv: use html comments instead of plain text
2024-04-01 23:12:12 +02:00
Arkadiusz Fal
7e940d6304 Merge pull request #624 from weblate/weblate-yattee-localizable-strings
Translations update from Hosted Weblate
2024-04-01 22:59:05 +02:00
mere
11402cc2a6 Translated using Weblate (Romanian)
Currently translated at 100.0% (562 of 562 strings)

Translation: Yattee/Localizable.strings
Translate-URL: https://hosted.weblate.org/projects/yattee/localizable-strings/ro/
2024-04-01 22:58:48 +02:00
floe nele
975d8b0ba0 Translated using Weblate (Dutch)
Currently translated at 44.3% (249 of 562 strings)

Translation: Yattee/Localizable.strings
Translate-URL: https://hosted.weblate.org/projects/yattee/localizable-strings/nl/
2024-04-01 22:58:48 +02:00
jonnysemon
e349898d9e Translated using Weblate (Arabic)
Currently translated at 100.0% (562 of 562 strings)

Translation: Yattee/Localizable.strings
Translate-URL: https://hosted.weblate.org/projects/yattee/localizable-strings/ar/
2024-04-01 22:58:48 +02:00
rexcsk
a8802da5a7 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (562 of 562 strings)

Translation: Yattee/Localizable.strings
Translate-URL: https://hosted.weblate.org/projects/yattee/localizable-strings/zh_Hant/
2024-04-01 22:58:48 +02:00
maboroshin
19993dfc04 Translated using Weblate (Japanese)
Currently translated at 98.3% (553 of 562 strings)

Translation: Yattee/Localizable.strings
Translate-URL: https://hosted.weblate.org/projects/yattee/localizable-strings/ja/
2024-04-01 22:58:48 +02:00
joaooliva
e99dd442e1 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (562 of 562 strings)

Translation: Yattee/Localizable.strings
Translate-URL: https://hosted.weblate.org/projects/yattee/localizable-strings/pt_BR/
2024-04-01 22:58:48 +02:00
gallegonovato
d886113f27 Translated using Weblate (Spanish)
Currently translated at 100.0% (562 of 562 strings)

Translation: Yattee/Localizable.strings
Translate-URL: https://hosted.weblate.org/projects/yattee/localizable-strings/es/
2024-04-01 22:58:48 +02:00
Ophiushi
ea9b759887 Translated using Weblate (French)
Currently translated at 100.0% (562 of 562 strings)

Translation: Yattee/Localizable.strings
Translate-URL: https://hosted.weblate.org/projects/yattee/localizable-strings/fr/
2024-04-01 22:58:48 +02:00
rexcsk
0e784be231 Translated using Weblate (Chinese (Traditional))
Currently translated at 99.6% (560 of 562 strings)

Translation: Yattee/Localizable.strings
Translate-URL: https://hosted.weblate.org/projects/yattee/localizable-strings/zh_Hant/
2024-04-01 22:58:48 +02:00
rexcsk
d0ab73eeb2 Translated using Weblate (English)
Currently translated at 100.0% (562 of 562 strings)

Translation: Yattee/Localizable.strings
Translate-URL: https://hosted.weblate.org/projects/yattee/localizable-strings/en/
2024-04-01 22:58:48 +02:00
Arkadiusz Fal
2193129818 Merge pull request #622 from rickykresslein/limit-recents-shown
Show/hide recents and limit number of recents shown
2024-04-01 22:58:42 +02:00
Toni Förster
f84c6d319a iv: use html comments instead of plain text
It now correctly displays emojis hyphens
2024-04-01 15:08:08 +02:00
Ricky Kresslein
87337f31a5 Updated importer and exporter to include new defaults 2024-02-28 18:35:03 +01:00
Ricky Kresslein
5559e78bc0 Add setting to show/hide recents and limit number of recents shown 2024-02-28 00:56:12 +01:00
22 changed files with 293 additions and 122 deletions

View File

@@ -1,6 +1,8 @@
## Build 180
* Add help text to all header buttons (by @rickykresslein)
* Add Chinese (Traditional) localization (by @rexcsk)
## Build 181
* History Setting: hide the recent activity in the sidebar or limit the number of items shown (by @rickykresslein)
* Fix issues with empty comments (by @stonerl)
* Improved Invidious comments (by @stonerl)
* Downgrade MPVKit to 0.36.0-1 due to issues with WebVTT subtitles
* Updated localizations
* Updated dependencies
@@ -13,7 +15,8 @@
* Import via URL for tvOS
* Added Controls setting "Action button labels" icon or icon and text
* Added Advanced setting for MPV: "deinterlace"
* Updated dependencies (mpvkit 0.37.0)
* Add help text to all header buttons (by @rickykresslein)
* Add Chinese (Traditional) localization (by @rexcsk)
* Localization fixes
* Updated localizations
* Fixed reported crash

View File

@@ -54,19 +54,19 @@ GEM
rexml
addressable (2.8.6)
public_suffix (>= 2.0.2, < 6.0)
artifactory (3.0.15)
artifactory (3.0.17)
atomos (0.1.3)
aws-eventstream (1.3.0)
aws-partitions (1.894.0)
aws-sdk-core (3.191.3)
aws-partitions (1.906.0)
aws-sdk-core (3.191.6)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.8)
jmespath (~> 1, >= 1.6.1)
aws-sdk-kms (1.77.0)
aws-sdk-kms (1.78.0)
aws-sdk-core (~> 3, >= 3.191.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.143.0)
aws-sdk-s3 (1.146.1)
aws-sdk-core (~> 3, >= 3.191.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.8)
@@ -85,7 +85,7 @@ GEM
domain_name (0.6.20240107)
dotenv (2.8.1)
emoji_regex (3.2.3)
excon (0.109.0)
excon (0.110.0)
faraday (1.10.3)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
@@ -114,7 +114,7 @@ GEM
faraday-retry (1.0.3)
faraday_middleware (1.2.0)
faraday (~> 1.0)
fastimage (2.3.0)
fastimage (2.3.1)
gh_inspector (1.1.3)
google-apis-androidpublisher_v3 (0.54.0)
google-apis-core (>= 0.11.0, < 2.a)
@@ -132,12 +132,12 @@ GEM
google-apis-core (>= 0.11.0, < 2.a)
google-apis-storage_v1 (0.31.0)
google-apis-core (>= 0.11.0, < 2.a)
google-cloud-core (1.6.1)
google-cloud-core (1.7.0)
google-cloud-env (>= 1.0, < 3.a)
google-cloud-errors (~> 1.0)
google-cloud-env (1.6.0)
faraday (>= 0.17.3, < 3.0)
google-cloud-errors (1.3.1)
google-cloud-errors (1.4.0)
google-cloud-storage (1.47.0)
addressable (~> 2.8)
digest-crc (~> 0.4)
@@ -158,7 +158,7 @@ GEM
httpclient (2.8.3)
jmespath (1.6.2)
json (2.7.1)
jwt (2.8.0)
jwt (2.8.1)
base64
mini_magick (4.12.0)
mini_mime (1.1.5)
@@ -170,8 +170,8 @@ GEM
optparse (0.4.0)
os (1.1.4)
plist (3.7.1)
public_suffix (5.0.4)
rake (13.1.0)
public_suffix (5.0.5)
rake (13.2.0)
representable (3.2.0)
declarative (< 0.1.0)
trailblazer-option (>= 0.1.1, < 0.2.0)

View File

@@ -123,7 +123,7 @@ final class InvidiousAPI: Service, ObservableObject, VideosAPI {
content.json.dictionaryValue["videos"]?.arrayValue.map(self.extractVideo) ?? []
}
["latest", "playlists", "streams", "shorts", "channels", "videos", "releases", "podcasts"].forEach { type in
for type in ["latest", "playlists", "streams", "shorts", "channels", "videos", "releases", "podcasts"] {
configureTransformer(pathPattern("channels/*/\(type)"), requestMethods: [.get]) { (content: Entity<JSON>) -> ChannelPage in
self.extractChannelPage(from: content.json)
}
@@ -691,6 +691,8 @@ final class InvidiousAPI: Service, ObservableObject, VideosAPI {
let author = details["author"]?.string ?? ""
let channelId = details["authorId"]?.string ?? UUID().uuidString
let authorAvatarURL = details["authorThumbnails"]?.arrayValue.last?.dictionaryValue["url"]?.string ?? ""
let htmlContent = details["contentHtml"]?.string ?? ""
let decodedContent = decodeHtml(htmlContent)
return Comment(
id: UUID().uuidString,
author: author,
@@ -699,12 +701,25 @@ final class InvidiousAPI: Service, ObservableObject, VideosAPI {
pinned: false,
hearted: false,
likeCount: details["likeCount"]?.int ?? 0,
text: details["content"]?.string ?? "",
text: decodedContent,
repliesPage: details["replies"]?.dictionaryValue["continuation"]?.string,
channel: Channel(app: .invidious, id: channelId, name: author)
)
}
private func decodeHtml(_ htmlEncodedString: String) -> String {
if let data = htmlEncodedString.data(using: .utf8) {
let options: [NSAttributedString.DocumentReadingOptionKey: Any] = [
.documentType: NSAttributedString.DocumentType.html,
.characterEncoding: String.Encoding.utf8.rawValue
]
if let attributedString = try? NSAttributedString(data: data, options: options, documentAttributes: nil) {
return attributedString.string
}
}
return htmlEncodedString
}
private func extractCaptions(from content: JSON) -> [Captions] {
content["captions"].arrayValue.compactMap { details in
guard let url = URL(string: details["url"].stringValue, relativeTo: account.url) else { return nil }

View File

@@ -113,8 +113,11 @@ final class PipedAPI: Service, ObservableObject, VideosAPI {
content.json.arrayValue.compactMap { self.extractVideo(from: $0) }
}
configureTransformer(pathPattern("comments/*")) { (content: Entity<JSON>) -> CommentsPage in
let details = content.json.dictionaryValue
configureTransformer(pathPattern("comments/*")) { (content: Entity<JSON>?) -> CommentsPage in
guard let details = content?.json.dictionaryValue else {
return CommentsPage(comments: [], nextPage: nil, disabled: true)
}
let comments = details["comments"]?.arrayValue.compactMap { self.extractComment(from: $0) } ?? []
let nextPage = details["nextpage"]?.string
let disabled = details["disabled"]?.bool ?? false
@@ -663,16 +666,16 @@ final class PipedAPI: Service, ObservableObject, VideosAPI {
let videoStreams = content.dictionaryValue["videoStreams"]?.arrayValue ?? []
videoStreams.forEach { videoStream in
for videoStream in videoStreams {
let videoCodec = videoStream.dictionaryValue["codec"]?.string ?? ""
if Self.disallowedVideoCodecs.contains(where: videoCodec.contains) {
return
continue
}
guard let audioAssetUrl = audioStream.dictionaryValue["url"]?.url,
let videoAssetUrl = videoStream.dictionaryValue["url"]?.url
else {
return
continue
}
let audioAsset = AVURLAsset(url: audioAssetUrl)
@@ -724,15 +727,23 @@ final class PipedAPI: Service, ObservableObject, VideosAPI {
let commentorUrl = details["commentorUrl"]?.string
let channelId = commentorUrl?.components(separatedBy: "/")[2] ?? ""
let commentText = extractCommentText(from: details["commentText"]?.stringValue)
let commentId = details["commentId"]?.string ?? UUID().uuidString
// Sanity checks: return nil if required data is missing
if commentText.isEmpty || commentId.isEmpty || author.isEmpty {
return nil
}
return Comment(
id: details["commentId"]?.string ?? UUID().uuidString,
id: commentId,
author: author,
authorAvatarURL: details["thumbnail"]?.string ?? "",
time: details["commentedTime"]?.string ?? "",
pinned: details["pinned"]?.bool ?? false,
hearted: details["hearted"]?.bool ?? false,
likeCount: details["likeCount"]?.int ?? 0,
text: extractCommentText(from: details["commentText"]?.stringValue),
text: commentText,
repliesPage: details["repliesPage"]?.string,
channel: Channel(app: .piped, id: channelId, name: author)
)

View File

@@ -35,26 +35,22 @@ final class CommentsModel: ObservableObject {
func load(page: String? = nil) {
guard let video = player.currentVideo else { return }
if !firstPage && !nextPageAvailable {
return
}
firstPage = page.isNil || page!.isEmpty
guard firstPage || nextPageAvailable else { return }
player
.playerAPI(video)?
.comments(video.videoID, page: page)?
.load()
.onSuccess { [weak self] response in
if let page: CommentsPage = response.typedContent() {
self?.all += page.comments
self?.nextPage = page.nextPage
self?.disabled = page.disabled
guard let self = self else { return }
if let commentsPage: CommentsPage = response.typedContent() {
self.all += commentsPage.comments
self.nextPage = commentsPage.nextPage
self.disabled = commentsPage.disabled
}
}
.onFailure { [weak self] requestError in
self?.disabled = !requestError.json.dictionaryValue["error"].isNil
.onFailure { [weak self] _ in
self?.disabled = true
}
.onCompletion { [weak self] _ in
self?.loaded = true

View File

@@ -15,7 +15,11 @@ final class HistorySettingsGroupExporter: SettingsGroupExporter {
"watchedVideoStyle": Defaults[.watchedVideoStyle].rawValue,
"watchedVideoBadgeColor": Defaults[.watchedVideoBadgeColor].rawValue,
"showToggleWatchedStatusButton": Defaults[.showToggleWatchedStatusButton]
"showToggleWatchedStatusButton": Defaults[.showToggleWatchedStatusButton],
"showRecents": Defaults[.showRecents],
"limitRecents": Defaults[.limitRecents],
"limitRecentsAmount": Defaults[.limitRecentsAmount]
]
}
}

View File

@@ -50,5 +50,17 @@ struct HistorySettingsGroupImporter {
if let showToggleWatchedStatusButton = json["showToggleWatchedStatusButton"].bool {
Defaults[.showToggleWatchedStatusButton] = showToggleWatchedStatusButton
}
if let showRecents = json["showRecents"].bool {
Defaults[.showRecents] = showRecents
}
if let limitRecents = json["limitRecents"].bool {
Defaults[.limitRecents] = limitRecents
}
if let limitRecentsAmount = json["limitRecentsAmount"].int {
Defaults[.limitRecentsAmount] = limitRecentsAmount
}
}
}

View File

@@ -225,6 +225,9 @@ extension Defaults.Keys {
static let saveRecents = Key<Bool>("saveRecents", default: true)
static let saveHistory = Key<Bool>("saveHistory", default: true)
static let showRecents = Key<Bool>("showRecents", default: true)
static let limitRecents = Key<Bool>("limitRecents", default: false)
static let limitRecentsAmount = Key<Int>("limitRecentsAmount", default: 10)
static let showWatchingProgress = Key<Bool>("showWatchingProgress", default: true)
static let saveLastPlayed = Key<Bool>("saveLastPlayed", default: false)

View File

@@ -5,12 +5,14 @@ struct AppSidebarRecents: View {
var recents = RecentsModel.shared
@Default(.recentlyOpened) private var recentItems
@Default(.limitRecents) private var limitRecents
@Default(.limitRecentsAmount) private var limitRecentsAmount
var body: some View {
Group {
if !recentItems.isEmpty {
Section(header: Text("Recents")) {
ForEach(recentItems.reversed()) { recent in
ForEach(recentItems.reversed().prefix(limitRecents ? limitRecentsAmount : recentItems.count)) { recent in
Group {
switch recent.type {
case .channel:

View File

@@ -13,6 +13,7 @@ struct Sidebar: View {
@Default(.showDocuments) private var showDocuments
#endif
@Default(.showUnwatchedFeedBadges) private var showUnwatchedFeedBadges
@Default(.showRecents) private var showRecents
var body: some View {
ScrollViewReader { scrollView in
@@ -20,8 +21,10 @@ struct Sidebar: View {
mainNavigationLinks
if !accounts.isEmpty {
AppSidebarRecents()
.id("recentlyOpened")
if showRecents {
AppSidebarRecents()
.id("recentlyOpened")
}
if accounts.api.signedIn {
if visibleSections.contains(.subscriptions), accounts.app.supportsSubscriptions {

View File

@@ -10,6 +10,9 @@ struct HistorySettings: View {
@Default(.saveRecents) private var saveRecents
@Default(.saveLastPlayed) private var saveLastPlayed
@Default(.saveHistory) private var saveHistory
@Default(.showRecents) private var showRecents
@Default(.limitRecents) private var limitRecents
@Default(.limitRecentsAmount) private var limitRecentsAmount
@Default(.showWatchingProgress) private var showWatchingProgress
@Default(.watchedThreshold) private var watchedThreshold
@Default(.watchedVideoStyle) private var watchedVideoStyle
@@ -56,6 +59,26 @@ struct HistorySettings: View {
Section(header: SettingsHeader(text: "History".localized())) {
Toggle("Save history of searches, channels and playlists", isOn: $saveRecents)
Toggle("Save history of played videos", isOn: $saveHistory)
Toggle("Show recents in sidebar", isOn: $showRecents)
#if os(macOS)
HStack {
Toggle("Limit recents shown", isOn: $limitRecents)
.frame(minWidth: 140, alignment: .leading)
.disabled(!showRecents)
Spacer()
counterButtons(for: $limitRecentsAmount)
.disabled(!limitRecents)
}
#else
Toggle("Limit recents shown", isOn: $limitRecents)
.disabled(!showRecents)
HStack {
Text("Recents shown")
Spacer()
counterButtons(for: $limitRecentsAmount)
.disabled(!limitRecents)
}
#endif
Toggle("Show progress of watching on thumbnails", isOn: $showWatchingProgress)
.disabled(!saveHistory)
Toggle("Keep last played video in the queue after restart", isOn: $saveLastPlayed)
@@ -169,6 +192,71 @@ struct HistorySettings: View {
.foregroundColor(.red)
}
}
private func counterButtons(for _value: Binding<Int>) -> some View {
var value: Binding<Int> {
Binding(
get: { return _value.wrappedValue },
set: {
if $0 < 1 {
_value.wrappedValue = 1
} else {
_value.wrappedValue = $0
}
}
)
}
return HStack {
#if !os(tvOS)
Label("Minus", systemImage: "minus")
.imageScale(.large)
.labelStyle(.iconOnly)
.padding(7)
.foregroundColor(limitRecents ? .accentColor : .gray)
.accessibilityAddTraits(.isButton)
#if os(iOS)
.frame(minHeight: 35)
.background(RoundedRectangle(cornerRadius: 4).strokeBorder(lineWidth: 1).foregroundColor(.accentColor))
#endif
.contentShape(Rectangle())
.onTapGesture {
value.wrappedValue -= 1
}
#endif
#if os(tvOS)
let textFieldWidth = 100.00
#else
let textFieldWidth = 30.00
#endif
TextField("Duration", value: value, formatter: NumberFormatter())
.frame(width: textFieldWidth, alignment: .trailing)
.multilineTextAlignment(.center)
.labelsHidden()
.foregroundColor(limitRecents ? .accentColor : .gray)
#if !os(macOS)
.keyboardType(.numberPad)
#endif
#if !os(tvOS)
Label("Plus", systemImage: "plus")
.imageScale(.large)
.labelStyle(.iconOnly)
.padding(7)
.foregroundColor(limitRecents ? .accentColor : .gray)
.accessibilityAddTraits(.isButton)
#if os(iOS)
.background(RoundedRectangle(cornerRadius: 4).strokeBorder(lineWidth: 1).foregroundColor(.accentColor))
#endif
.contentShape(Rectangle())
.onTapGesture {
value.wrappedValue += 1
}
#endif
}
}
}
struct HistorySettings_Previews: PreviewProvider {

View File

@@ -3,7 +3,7 @@
"Add Account" = "إضافة حساب";
"Add Account..." = "إضافة حساب…";
"Add Location" = "إضافة موقع";
"Add Location..." = "إضافة موقع...";
"Add Location..." = "أضِف موقع..";
"%@ Playlist" = "قائمة تشغيل %@";
"%@ Channel" = "قناة %@";
"%@ subscribers" = "مشتركين %@";
@@ -387,7 +387,7 @@
"Backend" = "الواجهة الخلفية";
"Badge" = "الشارة";
"Close PiP when starting playing other video" = "غلق الفيديو المصغر عند بدء تشغيل فيديو آخر";
"Explicit reminders to like, subscribe or interact with them on any paid or free platform(s) (e.g. click on a video)." = "تذكيرات صريحة لإبداء الإعجاب بها أو الإشتراك فيها أو التفاعل معها على أي منصة (منصات) مدفوعة أو مجانية (مثل النقر فوق مقطع الفيديو).";
"Explicit reminders to like, subscribe or interact with them on any paid or free platform(s) (e.g. click on a video)." = "تذكيرات صريحة لإبداء الإعجاب بها أو الإشتراك فيها أو التفاعل معها على أي منصة (منصات) مدفوعة أو مجانية (مثل النقر فوق مقطع الفيديو).\n";
"Filter" = " عامل التصفية";
"Frontend URL" = "عنوان URL للواجهة الأمامية";
"Fullscreen size" = "حجم ملء الشاشة";

View File

@@ -9,7 +9,7 @@
"Add Account" = "Add Account";
"Add Account..." = "Add Account...";
"Add Location" = "Add Location";
"Add Location..." = "Add Location...";
"Add Location..." = "Add Location..";
"Add profile..." = "Add profile...";
"Add Quality Profile" = "Add Quality Profile";
"Add to %@" = "Add to %@";
@@ -108,7 +108,7 @@
"Enter fullscreen in landscape" = "Enter fullscreen in landscape";
"Error" = "Error";
"Error when accessing playlist" = "Error when accessing playlist";
"Explicit reminders to like, subscribe or interact with them on any paid or free platform(s) (e.g. click on a video)." = "Explicit reminders to like, subscribe or interact with them on any paid or free platform(s) (e.g. click on a video).";
"Explicit reminders to like, subscribe or interact with them on any paid or free platform(s) (e.g. click on a video)." = "Explicit reminders to like, subscribe or interact with them on any paid or free platform(s) (e.g. click on a video).\n";
"Favorites" = "Favorites";
"Filter" = "Filter";
"Filter: active" = "Filter: active";

View File

@@ -112,12 +112,12 @@
"Help" = "Ayuda";
"Hide sidebar" = "Ocultar barra lateral";
"Add Location" = "Añadir ubicación";
"Add Location..." = "Añadir ubicación...";
"Add Location..." = "Añadir ubicación..";
"Decrease rate" = "Tasa de disminución";
"Decreased opacity" = "Opacidad disminuida";
"High" = "Alto";
"%lld videos" = "%lld videos";
"Explicit reminders to like, subscribe or interact with them on any paid or free platform(s) (e.g. click on a video)." = "Recordatorios explícitos para marquen \"me gusta\", se suscriban o interactúen con ellos en cualquier plataforma de pago o gratuita (por ejemplo, haciendo clic en un vídeo).";
"Explicit reminders to like, subscribe or interact with them on any paid or free platform(s) (e.g. click on a video)." = "Recordatorios explícitos para que indiquen les guste, se suscriban o interactúen con ellos en cualquier plataforma de pago o gratuita (por ejemplo, haciendo clic en un vídeo).\n";
"Formats will be selected in order as listed.\nHLS is an adaptive format (resolution setting does not apply)." = "Los formatos se seleccionarán en orden como se indica.\nHLS es un formato adaptable (no aplica la configuración de resolución).";
"Fullscreen size" = "Tamaño de pantalla completa";
"Badge & Decreased opacity" = "Insignia y opacidad dosminuída";

View File

@@ -1,7 +1,7 @@
" subscribers" = " abonnés";
"Add Location..." = "Ajouter une instance";
"Add Location..." = "Ajouter une instance..";
"Add profile..." = "Ajouter un profil…";
"Add Quality Profile" = "Ajouter un profil de qualité";
"Delete" = "Supprimer";
@@ -264,7 +264,7 @@
"Don't use public locations" = "Ne pas utiliser d'instances publiques";
"Enable Return YouTube Dislike" = "Activer Return YouTube Dislike";
"Enter fullscreen in landscape" = "Entrer en plein écran en mode paysage";
"Explicit reminders to like, subscribe or interact with them on any paid or free platform(s) (e.g. click on a video)." = "Rappels d'aimer la vidéo, de s'abonner ou d'interagir avec le créateur sur une plateforme gratuite ou payante.";
"Explicit reminders to like, subscribe or interact with them on any paid or free platform(s) (e.g. click on a video)." = "Rappels d'aimer la vidéo, de s'abonner ou d'interagir avec le créateur sur une plateforme gratuite ou payante.\n";
"Frontend URL" = "URL frontale";
"Public Locations" = "Instances publiques";
"Public Manifest" = "Manifeste publique";

View File

@@ -529,7 +529,7 @@
"For custom locations you can configure Frontend URL in Locations settings" = "場所を指定するには、場所の設定からフロントエンドのURLを設定します";
"Public Locations" = "公開された場所";
"Switch to public locations" = "公開された場所に切り替え";
"Explicit reminders to like, subscribe or interact with them on any paid or free platform(s) (e.g. click on a video)." = "有料/無料のプラットフォームかを問わず、いいね、登録などを明示的に操作を促す(例: 動画をクリック)。";
"Explicit reminders to like, subscribe or interact with them on any paid or free platform(s) (e.g. click on a video)." = "有料/無料のプラットフォームかを問わず、いいね、登録などを明示的に操作を促す(例: 動画をクリック)。\n";
"Proxy videos" = "動画閲覧にプロキシ使用";
"Sections" = "表示するボタン";
"System controls show buttons for %@" = "システム制御「%@」用のボタンを表示";

View File

@@ -145,7 +145,7 @@
"I want to ask a question" = "Ik wil een vraag stellen";
"If you are interested what's coming in future updates, you can track project Milestones." = "Als je geïnteresseerd bent in toekomstige updates, kan je Milestones van het project volgen.";
"Increase rate" = "Verhoog tempo";
"Info" = "";
"Info" = "Info";
"Instance of current account" = "Instantie van huidig account";
/* SponsorBlock category name */
@@ -259,3 +259,38 @@
"Save history of played videos" = "Sla geschiedenis van afgespeelde videos op";
"Save history of searches, channels and playlists" = "Sla geschiedenis van zoekopdrachten, kanalen en afspeellijsten op";
"Search" = "Zoeken";
"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." = "Stukken normaal in het begin van een video met een animatie, stil plaatje, of stukje van een andere video van dezelfde maker.";
"Discord Server" = "Discord Server";
"Enable logging" = "Loggen inschakelen";
"Interface" = "Interface";
/* SponsorBlock category name */
"Intro" = "Intro";
"LIVE" = "LIVE";
"Matrix Chat" = "Matrix Chat";
/* SponsorBlock category name */
"Outro" = "Outro";
"Proxy videos" = "Video's door proxyserver leiden";
"Reset" = "Herstellen";
"Search history is empty" = "Zoekgeschiedenis is leeg";
"Search..." = "Zoeken...";
"Sections" = "Secties";
"Seek gesture sensitivity" = "Zoek gebaar gevoeligheid";
"Seek gesture speed" = "Zoek gebaar snelheid";
"Seek with horizontal swipe on video" = "Scrollen met horizontale sleep op video";
"Select location closest to you:" = "Selecteer de dichtstbijzijnde locatie:";
/* SponsorBlock category name */
"Self-promotion" = "Zelfpromotie";
"Settings" = "Instellingen";
"Share %@ link" = "%@ link delen";
"Share %@ link with time" = "%@ link met tijd delen";
"Share..." = "Delen...";
/* Video duration filter in search */
"Short" = "Kort";
"Show account username" = "Gebruikersnaam van account laten zien";
"Show anonymous accounts" = "Anonieme accounts laten zien";
"Show channel name" = "Naam van kanaal laten zien";
"Show history" = "Geschiedenis laten zien";

View File

@@ -355,7 +355,7 @@
"Could not extract channel information" = "Não pôde extrair informação do canal";
"For custom locations you can configure Frontend URL in Locations settings" = "Para localizações personalizadas você pode configurar URL do frontend nas configurações de localização";
"Add Location" = "Adicionar Localização";
"Add Location..." = "Adicionar Localização";
"Add Location..." = "Adicionar Localização..";
"For videos which feature music as the primary content." = "Para vídeos que têm música como conteúdo principal.";
"Close video after playing last in the queue" = "Fechar vídeo depois de tocar o último na fila";
"Clear Search History" = "Limpar Histórico de Busca";
@@ -406,7 +406,7 @@
"Country" = "País";
"Clear All" = "Limpar Tudo";
"Clear All Recents" = "Limpar Todos os Recentes";
"Explicit reminders to like, subscribe or interact with them on any paid or free platform(s) (e.g. click on a video)." = "Lembretes explícitos de dar like, se inscrever ou interagir com eles em qualquer plataforma, paga ou grátis (p.ex. clique em um vídeo).";
"Explicit reminders to like, subscribe or interact with them on any paid or free platform(s) (e.g. click on a video)." = "Lembretes explícitos de dar like, se inscrever ou interagir com eles em qualquer plataforma, paga ou grátis (p.ex. clicar em um vídeo).\n";
"Duration" = "Duração";
"Edit Quality Profile" = "Editar Perfil de Qualidade";
"Discussions take place in Discord and Matrix. It's a good spot for general questions." = "Discussões acontecem no Discord e no Matrix. É um bom lugar para perguntas gerais.";

View File

@@ -10,7 +10,7 @@
"Accounts are not supported for the application of this instance" = "Conturile nu sunt acceptate pentru aplicaţia acestei instanțe";
"%lld videos" = "%lld videoclipuri";
"Add Location" = "Adaugă locație";
"Add Location..." = "Adaugă locație...";
"Add Location..." = "Adaugă locație..";
"Add profile..." = "Adaugă profil...";
"Add to %@" = "Adaugă la %@";
"Add to Playlist" = "Adaugă la playlist";
@@ -62,7 +62,7 @@
"Edit" = "Editați";
"Edit Playlist" = "Editați Playlist";
"Enter fullscreen in landscape" = "Introduceți ecranul complet în peisaj";
"Explicit reminders to like, subscribe or interact with them on any paid or free platform(s) (e.g. click on a video)." = "Mementouri explicite de a aprecia, de a vă abona sau de a interacționa cu ele pe orice platformă (platforme) plătite sau gratuite (de exemplu, faceți clic pe un videoclip).";
"Explicit reminders to like, subscribe or interact with them on any paid or free platform(s) (e.g. click on a video)." = "Mementouri explicite de a aprecia, de a vă abona sau de a interacționa cu ele pe orice platformă (platforme) plătite sau gratuite (de exemplu, faceți clic pe un videoclip).\n";
"Find Other" = "Găsiți alte";
"Finding something to play..." = "Să găsești ceva de jucat...";
"For videos which feature music as the primary content." = "Pentru videoclipurile care includ muzica ca conținut principal.";

View File

@@ -18,7 +18,7 @@
"Close video" = "關閉視頻";
"Play next item" = "播放下一項目";
"Maximum width expanded" = "最大寬度已展開";
"Show unwatched feed badges" = "顯示未觀看的 Feed 標誌";
"Show unwatched feed badges" = "顯示未觀看的\"最新影片\"標誌";
"Gesture: fowards" = "手勢: 向前";
"Gesture settings control skipping interval for remote arrow buttons (for 2nd generation Siri Remote or newer). Changing system controls settings requires restart." = "手勢設置控制遠程箭頭按鈕的跳過間隔(用於第二代 Siri Remote 或更新版本)。更改系統控制設置需要重新啓動。";
"Opened File" = "已打開文件";
@@ -39,8 +39,8 @@
"Edit" = "編輯";
"Enable Return YouTube Dislike" = "啟用YouTube 不喜歡回報";
"Enter fullscreen in landscape" = "橫屏下進入全屏";
"Error when accessing playlist" = "播放列表出錯";
"Explicit reminders to like, subscribe or interact with them on any paid or free platform(s) (e.g. click on a video)." = "明確提醒在任何付費或免費平台上按讚、訂閱或與他們互動(例如點擊影片)。";
"Error when accessing playlist" = "播放清單出錯";
"Explicit reminders to like, subscribe or interact with them on any paid or free platform(s) (e.g. click on a video)." = "明確提醒在任何付費或免費平台上按讚、訂閱或與他們互動(例如點擊影片)。\n";
"For videos which feature music as the primary content." = "以音樂為主要內容的視頻。";
"I like this app!" = "我喜歡這app!";
"If you are interested what's coming in future updates, you can track project Milestones." = "如果您對將來的功能更新感興趣,您可以追蹤我們的專案里程碑。";
@@ -48,7 +48,7 @@
/* SponsorBlock category name */
"Intro" = "簡介";
"Issues Tracker" = "問題追蹤";
"Issues Tracker" = "問題追蹤介面";
/* Selected video has just finished playing */
"Just watched" = "已觀看";
@@ -81,7 +81,7 @@
"Typically near or at the end of the video when the credits pop up and/or endcards are shown." = "通常在視頻結束時或接近視頻結尾時,出現 Credits Pop Up 和結束卡片。";
"Upload date" = "上載日期";
"URL" = "網址";
"Used to create links from videos, channels and playlists" = "用於從視頻、頻道和播放列表創建鏈接";
"Used to create links from videos, channels and playlists" = "用於從視頻、頻道和播放清單創建連結";
/* Player controls layout size */
"Very Large" = "非常大";
@@ -117,7 +117,7 @@
/* Video date filter in search */
"Year" = "年";
"You can find information about using Yattee in the Wiki pages." = "您可以在 Wiki 相關頁面中找到有關使用 Yattee 的信息。";
"You can find information about using Yattee in the Wiki pages." = "您可以在 GitHub 相關頁面中找到有關使用 Yattee 的信息。";
"You can use automatic profile selection based on current device status or switch it in video playback settings controls." = "您可以使用基於當前設備狀態的自動配置文件選擇,或在視頻播放設置控件中進行切換。";
"Could not extract playlist ID" = "無法提取播放清單ID";
"Could not load video" = "無法載入視頻";
@@ -125,9 +125,9 @@
"You need to select an account\nto access %@ section" = "你需要選擇帳戶\n來存取 %@ 部分";
"If you want this app to be available in your language, join translation project." = "如果你想此app 以你的語言顯示,請加入翻譯專案。";
"Private" = "私人";
"Playback queue is empty" = "放隊列空白";
"Playback queue is empty" = "放隊列空白";
"Playing Next" = "播放下一個";
"You can switch between profiles in playback settings controls." = "您可以在放設置控件中切換配置文件。";
"You can switch between profiles in playback settings controls." = "您可以在放設置控件中切換配置文件。";
"Current Playlist" = "當前播放清單";
"Stream & Player" = "串流及播放器";
"Statistics" = "數據";
@@ -146,9 +146,9 @@
"%lld videos" = "%lld 視頻";
"Add Account..." = "新增帳戶...";
"Add Location" = "新增站點";
"Add Location..." = "新增站點...";
"Add Location..." = "新增站點..";
"Add profile..." = "新增配置...";
"Add Quality Profile" = "新增質配置";
"Add Quality Profile" = "新增質配置";
"Add to %@" = "添加到 %@";
"Add to Favorites" = "加至我的最愛";
"Add to Playlist" = "加至播放清單";
@@ -211,7 +211,7 @@
"Disabled" = "禁用";
"Discord Server" = "Discord 伺服器";
"Discussions take place in Discord and Matrix. It's a good spot for general questions." = "討論在 Discord 及 Matrix 中進行,您可以在裡面詢問一些簡單的問題。";
"Don't use public locations" = "不使用公開站台";
"Don't use public locations" = "不使用公開站台";
"Donations" = "捐贈";
"Done" = "完成";
"Duration" = "時長";
@@ -220,7 +220,7 @@
"Edit..." = "編輯...";
"Enable logging" = "啟用日誌";
"Error" = "錯誤";
"Favorites" = "喜歡";
"Favorites" = "我的最愛";
"Filter" = "篩選";
"Filter: active" = "篩選: 啟用";
"Find Other" = "搜尋其他";
@@ -243,7 +243,7 @@
"I found a bug /" = "我發現bug";
"I have a feature request" = "我有一個功能需要";
"I want to ask a question" = "我想問問題";
"If you are reporting a bug, include all relevant details (especially: app version, used device and system version, steps to reproduce)." = "如果你要反饋一個 bug請包括所有相關資料特別是App 版本,使用設備以及系統版本,重現步驟)。";
"If you are reporting a bug, include all relevant details (especially: app version, used device and system version, steps to reproduce)." = "如果你要反饋一個程式錯誤請包括所有相關資料特別是App 版本,使用設備以及系統版本,重現步驟)。";
"Info" = "資訊";
"Instance of current account" = "此帳戶站台";
@@ -288,7 +288,7 @@
/* SponsorBlock category name */
"Offtopic in Music Videos" = "在音樂視頻中的無關內容";
"Only when signed in" = "僅當登錄後";
"Open \"Playlists\" tab to create new one" = "打開「播放列表」 頁面創建新的播放列表";
"Open \"Playlists\" tab to create new one" = "打開「播放清單」 頁面創建新的";
"Open Settings" = "打開設置";
/* Loading stream OSD */
@@ -309,7 +309,7 @@
"Play Music" = "播放音樂";
"Play Next" = "播放下一部";
"Play Now" = "即時播放";
"Playback" = "放";
"Playback" = "放";
"Player" = "播放器";
"Playlist" = "播放清單";
"Playlist \"%@\" will be deleted.\nIt cannot be reverted." = "播放清單 “%@” 將被删除。\n此操作不可恢復。";
@@ -325,7 +325,7 @@
"Quality Profile" = "畫質配置";
"Queue" = "隊列";
"Queue is empty" = "隊列為空";
"Rate" = "比率";
"Rate" = "速度";
/* Video sort order in search */
"Rating" = "評級";
@@ -339,7 +339,7 @@
/* Video sort order in search */
"Relevance" = "相關度";
"Remove" = "移除";
"Remove from Favorites" = "從最愛中移除";
"Remove from Favorites" = "從我的最愛中移除";
"Remove from history" = "從歷史中移除";
"Remove from the queue" = "從隊列中移除";
"Reset search filters" = "重設搜尋篩選";
@@ -352,7 +352,7 @@
"Round corners" = "圓角";
"Save" = "儲存";
"Save history of played videos" = "儲存已播放視頻記錄";
"Save history of searches, channels and playlists" = "儲存搜尋, 頻道及播放清單記錄";
"Save history of searches, channels and playlists" = "儲存搜尋頻道及播放清單記錄";
"Search" = "搜尋";
"Search history is empty" = "搜尋歷史為空";
"Search..." = "搜尋...";
@@ -373,7 +373,7 @@
"Show anonymous accounts" = "顯示匿名帳戶";
"Show history" = "顯示歷史";
"Show keywords" = "顯示關鍵字";
"Show playback statistics" = "顯示放統計";
"Show playback statistics" = "顯示放統計";
"Show progress of watching on thumbnails" = "縮圖顯示播放進度";
"Show sidebar when space permits" = "空間充裕時顯示側邊欄";
"Show video length" = "顯示視頻長度";
@@ -392,14 +392,14 @@
"Source" = "源";
/* SponsorBlock category name */
"Sponsor" = "Sponsor";
"SponsorBlock" = "SponsorBlock";
"SponsorBlock API Instance" = "SponsorBlock API 實例";
"Sponsor" = "宣傳";
"SponsorBlock" = "SponsorBlock (跳過贊助廣告)";
"SponsorBlock API Instance" = "SponsorBlock API 站台";
"Subscribe" = "訂閱";
/* Subscriptions title */
"Subscriptions" = "訂閱";
"Switch to other public location" = "轉換其他公共站台";
"Switch to other public location" = "轉換其他公共站台";
"Switch to public locations" = "轉換至公共站台";
"System controls buttons" = "系統控制鍵";
"System controls show buttons for %@" = "系統控制%@鍵";
@@ -418,7 +418,7 @@
"Watched %@" = "已觀看 %@";
"Welcome" = "歡迎";
"Wi-Fi" = "無線網絡";
"Wiki" = "維基";
"Wiki" = "GitHub";
"You have no Playlists" = "你沒有播放清單";
"You have no playlists\n\nTap on \"New Playlist\" to create one" = "你沒有播放清單\n\n點擊\"新建播放清單\"建立";
@@ -427,7 +427,7 @@
"Unlisted" = "未列出";
"Now Playing" = "現正播放";
"Current Location" = "現在位置";
"Add Channels, Playlists and Searches to Favorites using" = "添加頻道、播放清單和搜索到最愛";
"Add Channels, Playlists and Searches to Favorites using" = "添加頻道、播放清單和搜尋到我的最愛";
"Make default" = "設為預設";
"Visibility" = "可見度";
"It can be changed later in settings. You can use your own locations too." = "稍後可以在設置中更改。你也可以使用自己的地址。";
@@ -450,9 +450,9 @@
"Show Home" = "顯示主頁";
"Show Open Videos quick actions" = "顯示打開視頻快速操作";
"Recent History" = "最近歷史";
"Show Favorites" = "顯示最愛";
"Show Favorites" = "顯示我的最愛";
"Inspector visibility" = "檢查器可見度";
"Edit Favorites…" = "編輯最愛…";
"Edit Favorites…" = "編輯我的最愛…";
"Show Open Videos toolbar button" = "顯示打開視頻工具按鈕";
"Buttons labels" = "按鈕標簽";
"Files" = "文件";
@@ -471,7 +471,7 @@
"Paste" = "貼上";
"Open Videos" = "打開視頻";
"Enter links to open, one per line" = "輸入需要打開的連結,每行一個";
"Playback Mode" = "放模式";
"Playback Mode" = "放模式";
"Add" = "添加";
"Hide" = "隱藏";
"Always" = "總是";
@@ -490,7 +490,7 @@
"Remove Location" = "移除地址";
"Open Video" = "打開視頻";
"Default Profile" = "預設配置";
"Playback history is empty" = "放記錄空白";
"Playback history is empty" = "放記錄空白";
"Copy%@link" = "複製%@連結";
"Share%@link" = "分享%@連結";
"Are you sure you want to remove this document?" = "你確定要移除文件?";
@@ -528,13 +528,13 @@
"Open channels with description expanded" = "打開頻道(含描述展開)";
"Subscribe/Unsubscribe" = "訂閱/取消訂閱";
"Show cache status" = "顯示緩存狀態";
"Maximum feed items" = "最大Feed 項目";
"Maximum feed items" = "最大\"最新影片\"數目";
"Open channel" = "打開頻道";
"Inspector" = "檢查器";
"Open video description expanded" = "打開視頻描述";
"Mark all as unwatched" = "標記所有為未觀看";
"Mark all as watched" = "標記所有為已觀看";
"Playback Settings" = "放設定";
"Playback Settings" = "放設定";
"Replay" = "重播";
"Fullscreen" = "全屏幕";
"Lock" = "鎖定";
@@ -546,11 +546,11 @@
"Show toggle watch status button" = "顯示切換觀看狀態按鈕";
"Next in Queue" = "隊列中下一個";
"List" = "列表";
"Cells" = "Cells";
"Cells" = "網格";
"Toggle size" = "替換大小";
"Toggle player" = "替換播放器";
"Do nothing" = "不做";
"Feed" = "Feed";
"Feed" = "最新影片";
"Queue - shuffled" = "隊列 - 隨機";
"Loop one" = "單個循環";
"File Extension" = "副檔名";
@@ -565,7 +565,7 @@
"Use system controls with AVPlayer" = "在AVPlayer 時使用系統控制按鈕";
"Rotate when entering fullscreen on landscape video" = "觀看橫向全屏視頻時旋轉";
"Available" = "可用";
"Home Settings" = "頁設置";
"Home Settings" = "頁設置";
"Watched: hidden" = "已觀看: 隱藏";
"No rotation" = "不要旋轉";
"Startup section" = "啟動部分";
@@ -573,8 +573,8 @@
"No videos to show" = "沒有視頻顯示";
"(shorts hidden)" = "(隱藏短片)";
"Disable filters" = "禁用過濾";
"Limit" = "限";
"Are you sure you want to remove %@ from Favorites?" = "你確定要從最愛中刪除 %@ 嗎?";
"Limit" = "限";
"Are you sure you want to remove %@ from Favorites?" = "你確定要從我的最愛中刪除 %@ 嗎?";
"Keep channels with unwatched videos on top of subscriptions list" = "保留頻道內未觀看視頻在訂閱列表頂端";
"Play Now in MPV" = "在MPV 中播放";
"Play Now in AVPlayer" = "在AVPlayer 中播放";
@@ -618,7 +618,7 @@
"Blue" = "藍";
"Browsing" = "瀏覽";
"Buffering stream..." = "緩衝中...";
"Bugs and great feature ideas can be sent to the GitHub issues tracker. " = "缺陷及主意也可以在 GitHub Issues 界面提出。 ";
"Bugs and great feature ideas can be sent to the GitHub issues tracker. " = "程式錯誤及出色的功能構思也可以在 GitHub 問題追蹤介面提出。 ";
"Cancel" = "取消";
"Button" = "按鈕";
"Captions" = "字幕";

View File

@@ -4062,7 +4062,7 @@
CODE_SIGN_ENTITLEMENTS = "Open in Yattee/Open in Yattee.entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 180;
CURRENT_PROJECT_VERSION = 181;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = "Open in Yattee/Info.plist";
INFOPLIST_KEY_CFBundleDisplayName = "Open in Yattee";
@@ -4093,7 +4093,7 @@
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 180;
CURRENT_PROJECT_VERSION = 181;
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 78Z5H3M6RJ;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = "Open in Yattee/Info.plist";
@@ -4124,7 +4124,7 @@
buildSettings = {
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 180;
CURRENT_PROJECT_VERSION = 181;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
MACOSX_DEPLOYMENT_TARGET = 11.0;
@@ -4144,7 +4144,7 @@
buildSettings = {
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 180;
CURRENT_PROJECT_VERSION = 181;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
MACOSX_DEPLOYMENT_TARGET = 11.0;
@@ -4308,7 +4308,7 @@
CODE_SIGN_ENTITLEMENTS = "iOS/Yattee (iOS).entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 180;
CURRENT_PROJECT_VERSION = 181;
ENABLE_PREVIEWS = YES;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
@@ -4361,7 +4361,7 @@
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 180;
CURRENT_PROJECT_VERSION = 181;
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 78Z5H3M6RJ;
ENABLE_PREVIEWS = YES;
GCC_PREPROCESSOR_DEFINITIONS = "GLES_SILENCE_DEPRECATION=1";
@@ -4413,7 +4413,7 @@
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 180;
CURRENT_PROJECT_VERSION = 181;
DEAD_CODE_STRIPPING = YES;
ENABLE_APP_SANDBOX = YES;
ENABLE_HARDENED_RUNTIME = YES;
@@ -4452,7 +4452,7 @@
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "3rd Party Mac Developer Application";
CODE_SIGN_STYLE = Manual;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 180;
CURRENT_PROJECT_VERSION = 181;
DEAD_CODE_STRIPPING = YES;
"DEVELOPMENT_TEAM[sdk=macosx*]" = 78Z5H3M6RJ;
ENABLE_APP_SANDBOX = YES;
@@ -4487,7 +4487,7 @@
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 180;
CURRENT_PROJECT_VERSION = 181;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
LD_RUNPATH_SEARCH_PATHS = (
@@ -4511,7 +4511,7 @@
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 180;
CURRENT_PROJECT_VERSION = 181;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
LD_RUNPATH_SEARCH_PATHS = (
@@ -4537,7 +4537,7 @@
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 180;
CURRENT_PROJECT_VERSION = 181;
DEAD_CODE_STRIPPING = YES;
GENERATE_INFOPLIST_FILE = YES;
LD_RUNPATH_SEARCH_PATHS = (
@@ -4562,7 +4562,7 @@
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 180;
CURRENT_PROJECT_VERSION = 181;
DEAD_CODE_STRIPPING = YES;
GENERATE_INFOPLIST_FILE = YES;
LD_RUNPATH_SEARCH_PATHS = (
@@ -4588,7 +4588,7 @@
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 180;
CURRENT_PROJECT_VERSION = 181;
DEVELOPMENT_ASSET_PATHS = "";
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
@@ -4628,7 +4628,7 @@
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "iPhone Distribution";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 180;
CURRENT_PROJECT_VERSION = 181;
DEVELOPMENT_ASSET_PATHS = "";
"DEVELOPMENT_TEAM[sdk=appletvos*]" = 78Z5H3M6RJ;
ENABLE_PREVIEWS = YES;
@@ -4669,7 +4669,7 @@
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 180;
CURRENT_PROJECT_VERSION = 181;
GENERATE_INFOPLIST_FILE = YES;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
@@ -4693,7 +4693,7 @@
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 180;
CURRENT_PROJECT_VERSION = 181;
GENERATE_INFOPLIST_FILE = YES;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
@@ -5003,8 +5003,8 @@
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/cxfksword/MPVKit.git";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 0.36.0;
kind = revision;
revision = dca1e345a26d09a3d621d7656a94e6427f3f7b83;
};
};
/* End XCRemoteSwiftPackageReference section */

View File

@@ -15,8 +15,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/Alamofire/Alamofire.git",
"state" : {
"revision" : "3dc6a42c7727c49bf26508e29b0a0b35f9c7e1ad",
"version" : "5.8.1"
"revision" : "f455c2975872ccd2d9c81594c658af65716e9b9a",
"version" : "5.9.1"
}
},
{
@@ -25,7 +25,7 @@
"location" : "https://github.com/hyperoslo/Cache.git",
"state" : {
"branch" : "master",
"revision" : "ad6abdf2a3a866288a7dad2c4e13379406002a81"
"revision" : "f44a8f6b5ec27730198725ccc542fef0d1cc6b3d"
}
},
{
@@ -60,8 +60,7 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/cxfksword/MPVKit.git",
"state" : {
"revision" : "645f430ff0b99ccc2c61062727ad7e8bf32ca72a",
"version" : "0.37.0"
"revision" : "dca1e345a26d09a3d621d7656a94e6427f3f7b83"
}
},
{
@@ -87,8 +86,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/ashleymills/Reachability.swift",
"state" : {
"revision" : "c01127cb51f591045696128effe43c16840d08bf",
"version" : "5.2.0"
"revision" : "7b7018a69c84ea94ac2a38dff626e16ea81d1db9",
"version" : "5.2.1"
}
},
{
@@ -106,7 +105,7 @@
"location" : "https://github.com/SDWebImage/SDWebImage",
"state" : {
"branch" : "master",
"revision" : "e7329c6fb61c04f4b6fda008b6650efdb08cf9b7"
"revision" : "f6afa0132961d593f07970d84e2d8b588c29ea04"
}
},
{
@@ -123,8 +122,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/SDWebImage/SDWebImageSwiftUI.git",
"state" : {
"revision" : "261b6cec35686d2dc192b809ab50742b4502a73b",
"version" : "2.2.6"
"revision" : "53573d6dd017e354c0e7d8f1c86b77ef1383c996",
"version" : "2.2.7"
}
},
{
@@ -177,8 +176,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/SwiftyJSON/SwiftyJSON.git",
"state" : {
"revision" : "b3dcd7dbd0d488e1a7077cb33b00f2083e382f07",
"version" : "5.0.1"
"revision" : "af76cf3ef710b6ca5f8c05f3a31307d44a3c5828",
"version" : "5.0.2"
}
}
],