Author SHA1 Message Date
amd64fox 3bdfec03a8 Remove redacted host and user lines 2026-04-18 18:21:38 +03:00
amd64fox 2783cbe0c1 Move clipboard notice to end 2026-04-18 18:15:52 +03:00
amd64fox f4279fb962 Add clipboard copy for diagnostics 2026-04-18 18:12:47 +03:00
amd64fox ee5881572c Improve diagnostic output privacy 2026-04-18 18:05:50 +03:00
amd64fox 4f0706b010 Fix diagnostic launcher script path 2026-04-18 17:54:10 +03:00
amd64fox 4106903513 Add download diagnostics scripts 2026-04-18 17:50:05 +03:00
42 changed files with 892 additions and 704 deletions
@@ -46,13 +46,17 @@ body:
MsSpoti3 = "Automatically uninstalling Spotify MS..."
MsSpoti4 = "Uninstalling Spotify MS..."
Prem = "Modification for premium account..."
OldV = "Found outdated version of Spotify"
OldV2 = "Your Spotify version ({0}) is outdated, the current latest version is — {1}"
OldV3 = "Want to update ? [Y/N]"
AutoUpd = "Automatic update to the recommended version"
DelOrOver = "Remove the current version ({0}) or install over it? Y [Remove] / N [Install Over]"
DelSpotify = "Uninstalling Spotify..."
DelOld = "Uninstalling old Spotify..."
NewV = "Unsupported version of Spotify found"
NewV2 = "Your Spotify version ({0}) has not been tested. The stable version for SpotX is {1}"
NewV3 = "Continue with {0} (errors may occur) ? [Y/N]"
Recom = "Install the latest version {0} ? [Y/N]"
DelNew = "Uninstalling an untested Spotify..."
DownSpoti = "Downloading and installing Spotify"
DownSpoti2 = "Please wait..."
PodcatsOff = "Off Podcasts"
+9 -27
View File
@@ -14,37 +14,19 @@ jobs:
- name: Run Spotx
shell: powershell
run: |
$jsonUrl = "https://raw.githubusercontent.com/LoaderSpot/table/refs/heads/main/table/versions.json"
$jsonUrl = "https://raw.githubusercontent.com/amd64fox/LoaderSpot/main/versions.json"
$resp = Invoke-RestMethod -Uri $jsonUrl
# Use fullversion because installer names include architecture suffixes
$latestEntry = $resp.PSObject.Properties | Select-Object -First 1
if (-not $latestEntry) {
throw "No Spotify versions found in $jsonUrl"
}
# Get a link to the x86 installer for the first version
$firstVersion = $resp.PSObject.Properties.Name | Select-Object -First 1
$x64InstallerUrl = $resp.$firstVersion.links.win.x64
$spotifyFullVersion = $latestEntry.Value.fullversion
if ([string]::IsNullOrWhiteSpace($spotifyFullVersion) -or $spotifyFullVersion -notmatch '^\d+\.\d+\.\d+\.\d+\.g[0-9a-f]{8}$') {
throw "Invalid Spotify fullversion for $($latestEntry.Name)"
}
# Regex to find the desired part of the link
$regex = [regex]::Match($x64InstallerUrl, "spotify_installer-(.+?)\.exe")
$version = $regex.Groups[1].Value
# Incoming parameters
$parameters = @{
Verbose = $true
new_theme = $true
version = $spotifyFullVersion
confirm_spoti_recomended_over = $true
cache_limit = 1000
block_update_on = $true
lyrics_stat = "spotify"
urlform_goofy = "https://docs.google.com/forms/formResponse"
idbox_goofy = "9999999"
podcasts_off = $true
adsections_off = $true
lyrics_block = $true
}
$parametrs = '-Verbose -new_theme -v $version -sp-over -cache_limit 1000 -block_update_on -lyrics_stat spotify -urlform_goofy "https://docs.google.com/forms/formResponse" -idbox_goofy "9999999" -podcasts_off -adsections_off -lyrics_block'
# Run Spotx
$spotxUrl = "https://raw.githubusercontent.com/SpotX-Official/SpotX/refs/heads/main/run.ps1"
$spotxScript = [scriptblock]::Create((Invoke-WebRequest -UseBasicParsing -Uri $spotxUrl).Content)
& $spotxScript @parameters
iex "& { $(iwr -useb 'https://raw.githubusercontent.com/SpotX-Official/SpotX/refs/heads/main/run.ps1') } $parametrs"
-1
View File
@@ -1 +0,0 @@
AGENTS.md
+1 -1
View File
@@ -27,7 +27,7 @@
<h1 id="requirements">Requirements</h1>
- **OS:** Windows 7-11
- **Spotify:** [Official desktop version](https://loadspot.vercel.app/) (Microsoft Store version is not suitable)
- **Spotify:** [Official desktop version](https://loadspot.pages.dev) (Microsoft Store version is not suitable)
- **PowerShell:** 5.1 and above
<h1 id="features">Features</h1>
+3 -10
View File
@@ -42,9 +42,7 @@ body .KDhLFoEqoClhH12bsfrS {
/* lyrics not available message */
.C3pBU1DsOUJJOAv89ZFT,
.T67LFP0PElpfkkLuegQt,
.e7eFLioNSG5PAi1qVFT4,
.l2060qoyWU4J9ihSxHLE,
.hfTlyhd7WCIk9xmP {
.e7eFLioNSG5PAi1qVFT4 {
color: var(--musixmatch) !important;
}
@@ -52,8 +50,7 @@ body .KDhLFoEqoClhH12bsfrS {
.FUYNhisXTCmbzt9IDxnT,
.tr8V5eHsUaIkOYVw7eSG,
.hW9km7ku6_iggdWDR_Lg,
.lofIAg8Ixko3mfBrbfej,
.bbJIIopLxggQmv5x {
.lofIAg8Ixko3mfBrbfej {
--lyrics-color-active: var(--current) !important;
--lyrics-color-inactive: var(--next) !important;
--lyrics-color-passed: var(--past) !important;
@@ -72,11 +69,7 @@ body .KDhLFoEqoClhH12bsfrS {
._LKG3z7SnerR0eigPCoK:hover,
.NHVfxGs2HwmI_fly2JC4:hover,
.gaHIufRWhoWbiT8S6zuM:hover,
.FQYXZaa0aDIrse54YlYO:hover,
.PSyA4iign083ZV6vOqPj:hover,
.Plu0zvuRv7kOQwsQ02cC:hover,
.Mnf9PkrVHsX90BNf:hover,
.XiH9KR6bhDwEFykV:hover {
.FQYXZaa0aDIrse54YlYO:hover {
color: var(--hover) !important;
/* remove underline */
text-decoration: none !important;
+2 -43
View File
@@ -780,30 +780,6 @@
"fr": "1.2.84",
"to": ""
}
},
"ad_feedback_in_stream": {
"name": "enable_ad_feedback_in_stream",
"description": "Enable new ad feedback UX for in-stream ads",
"version": {
"fr": "1.2.88",
"to": ""
}
},
"HarmonyMediaPlaybackReporting": {
"name": "enableHarmonyMediaPlaybackReporting",
"description": "Enable the reporting of media playback events in Harmony",
"version": {
"fr": "1.2.88",
"to": ""
}
},
"ad_reporting": {
"name": "enable_ad_reporting",
"description": "Gates the report ad menu item in the ad overflow context menu",
"version": {
"fr": "1.2.89",
"to": ""
}
}
},
"EnableExp": {
@@ -1191,7 +1167,7 @@
"native_description": "Show top tracks and top artists on profile page",
"version": {
"fr": "1.2.22",
"to": "1.2.89"
"to": ""
}
},
"EightShortcuts": {
@@ -1921,14 +1897,6 @@
"fr": "1.2.86",
"to": ""
}
},
"LikedSongsMakePlaylist": {
"name": "enableLikedSongsMakePlaylist",
"native_description": "Show 'Make this a playlist' button when filtering Liked Songs by genre",
"version": {
"fr": "1.2.89",
"to": ""
}
}
},
"CustomExp": {
@@ -2583,14 +2551,6 @@
},
"match": "(typeName\\])",
"replace": "$1 || []"
},
"fixHomeV2EmptyResponseCheck": {
"version": {
"fr": "1.1.92",
"to": "1.2.44"
},
"match": "(\"HomeResponsePayload\"[\\s\\S]{0,500}?)0\\s*===\\s*([A-Za-z_$][\\w$]*)\\.sectionContainer\\.sections\\.totalCount\\s*\\|\\|\\s*0\\s*===\\s*\\2\\.sectionContainer\\.sections\\.items\\.length",
"replace": "$1!Array.isArray(null==$2||null==$2.sectionContainer||null==$2.sectionContainer.sections?void 0:$2.sectionContainer.sections.items)||0===$2.sectionContainer.sections.items.length"
}
},
"VariousJs": {
@@ -2685,7 +2645,6 @@
"replace": "min:250,max:400"
},
"filtertags_locale_fix": {
"disable": true,
"version": {
"fr": "1.2.29",
"to": ""
@@ -2744,7 +2703,7 @@
"hideEmptyYourEpisodes": {
"version": {
"fr": "1.2.78",
"to": "1.2.89"
"to": ""
},
"match": "(includeYourEpisodes\\?\\{inclusionMode:[^,}]+\\.)INCLUDE_ALWAYS",
"replace": "$1INCLUDE_IF_NOT_EMPTY"
+121 -412
View File
@@ -2,7 +2,7 @@
param
(
[Parameter(HelpMessage = 'Latest recommended Spotify version for Windows 10+.')]
[string]$latest_full = "1.2.90",
[string]$latest_full = "1.2.86.502.g8cd7fb22",
[Parameter(HelpMessage = 'Latest supported Spotify version for Windows 7-8.1')]
[string]$last_win7_full = "1.2.5.1006.g22820f93",
@@ -16,7 +16,7 @@ param
[ValidateSet('curl', 'webclient')]
[string]$download_method,
[Parameter(HelpMessage = "Change recommended Spotify version. Example: 1.2.88 or 1.2.88.485.g1012a6e0.")]
[Parameter(HelpMessage = "Change recommended Spotify version. Example: 1.2.85.519.g549a528b.")]
[Alias("v")]
[string]$version,
@@ -107,6 +107,9 @@ param
[Parameter(HelpMessage = 'Enable right sidebar coloring to match cover color)')]
[switch]$rightsidebarcolor,
[Parameter(HelpMessage = 'Returns old lyrics')]
[switch]$old_lyrics,
[Parameter(HelpMessage = 'Disable native lyrics')]
[switch]$lyrics_block,
@@ -134,11 +137,7 @@ param
[Parameter(HelpMessage = 'Select the desired language to use for installation. Default is the detected system language.')]
[Alias('l')]
[string]$language,
# Deprecated parameters
[Parameter(HelpMessage = 'Deprecated, old lyrics are enabled by default')]
[switch]$old_lyrics
[string]$language
)
# Ignore errors from `Stop-Process`
@@ -157,7 +156,7 @@ function Format-LanguageCode {
$supportLanguages = @(
'be', 'bn', 'cs', 'de', 'el', 'en', 'es', 'fa', 'fi', 'fil', 'fr', 'hi', 'hu',
'id', 'it', 'ja', 'ka', 'ko', 'lv', 'pl', 'pt', 'ro', 'ru', 'sk', 'sr', 'sr-Latn',
'sv', 'ta', 'tr', 'uk', 'vi', 'zh', 'zh-TW'
'sv', 'ta', 'tr', 'ua', 'vi', 'zh', 'zh-TW'
)
# Trim the language code down to two letter code.
@@ -278,8 +277,8 @@ function Format-LanguageCode {
$returnCode = 'tr'
break
}
'^uk' {
$returnCode = 'uk'
'^ua' {
$returnCode = 'ua'
break
}
'^vi' {
@@ -340,13 +339,6 @@ $spotifyUninstall = Join-Path ([System.IO.Path]::GetTempPath()) 'SpotifyUninstal
$start_menu = Join-Path $env:APPDATA 'Microsoft\Windows\Start Menu\Programs\Spotify.lnk'
$upgrade_client = $false
$downgrading = $false
$ru = $false
$podcast_off = $false
$css = $null
$calltype = $null
$tempDirectory = $null
$script:curlSupportsFailWithBody = $null
# Check version Powershell
$psv = $PSVersionTable.PSVersion.major
@@ -377,18 +369,6 @@ function Stop-Script {
}
Exit
}
function Stop-BrokenSpotifyFiles {
param(
[string]$Details
)
if ($Details) { Write-Warning $Details }
Write-Host ($lang).Error -ForegroundColor Red
Write-Host ($lang).FileLocBroken
Stop-Script
}
function Get-Link {
param (
[Alias("e")]
@@ -425,15 +405,6 @@ $lang = CallLang -clg $langCode
Write-Host ($lang).Welcome
Write-Host
if ($old_lyrics) {
Write-Warning @"
-old_lyrics is deprecated
Old lyrics are enabled by default
Remove this parameter from your command line
"@
Write-Host
}
# Check version Windows
$os = Get-CimInstance -ClassName "Win32_OperatingSystem" -ErrorAction SilentlyContinue
if ($os) {
@@ -506,106 +477,11 @@ function Get-SpotifyInstallerArchitecture {
}
}
function Test-SpotifyVersionRequiresResolution {
param(
[Parameter(Mandatory = $true)]
[string]$SpotifyVersion
)
return $SpotifyVersion -match '^\d+\.\d+\.\d+(?:\.\d+)?$'
}
function Get-SpotifyVersionsManifest {
param(
[Parameter(Mandatory = $true)]
[string]$Url
)
$previousProgressPreference = $ProgressPreference
try {
$ProgressPreference = 'SilentlyContinue'
return Invoke-RestMethod -Uri $Url -UseBasicParsing -TimeoutSec 15
}
catch {
throw "Failed to load Spotify versions manifest`nURL: $Url`n$($_.Exception.Message)"
}
finally {
$ProgressPreference = $previousProgressPreference
}
}
function Resolve-SpotifyInstallerVersionFromManifest {
param(
[Parameter(Mandatory = $true)]
[object]$VersionsManifest,
[Parameter(Mandatory = $true)]
[string]$SpotifyVersion,
[Parameter(Mandatory = $true)]
[string]$Architecture
)
$versions = @($VersionsManifest.PSObject.Properties)
if ($SpotifyVersion -match '^\d+\.\d+\.\d+$') {
$versionPrefix = "$SpotifyVersion."
$selectedVersion = $versions |
Where-Object { $_.Name.StartsWith($versionPrefix, [System.StringComparison]::Ordinal) } |
Sort-Object { [version]$_.Name } -Descending |
Select-Object -First 1
}
else {
$selectedVersion = $versions | Where-Object { $_.Name -eq $SpotifyVersion } | Select-Object -First 1
}
if (!$selectedVersion) {
throw "Spotify version $SpotifyVersion was not found in versions manifest"
}
$entry = $selectedVersion.Value
$fullVersion = [string]$entry.fullversion
if ($fullVersion -notmatch '^\d+\.\d+\.\d+\.\d+\.g[0-9a-f]{8}$') {
throw "Spotify version $($selectedVersion.Name) has invalid fullversion in versions manifest"
}
$windowsAssets = $entry.win
$architectureAsset = if ($windowsAssets) {
$windowsAssets.PSObject.Properties[$Architecture]
}
else {
$null
}
if (!$architectureAsset) {
throw "Spotify version $($selectedVersion.Name) does not have Windows $Architecture asset in versions manifest"
}
$assetUrl = [string]$architectureAsset.Value.url
if (!$assetUrl) {
throw "Spotify version $($selectedVersion.Name) does not have Windows $Architecture URL in versions manifest"
}
$expectedAssetName = "spotify_installer-$fullVersion-$Architecture.exe"
try {
$assetFileName = [System.IO.Path]::GetFileName(([Uri]$assetUrl).AbsolutePath)
}
catch {
$assetFileName = ''
}
if ($assetFileName -ne $expectedAssetName) {
throw "Spotify version $($selectedVersion.Name) has unexpected Windows $Architecture asset in versions manifest"
}
return $fullVersion
}
$spotifyDownloadBaseUrl = "https://loadspot.amd64fox1.workers.dev/download"
$spotifyTemporaryDownloadBaseUrl = "https://loadspot.amd64fox1.workers.dev/temporary-download"
$spotifyTemporaryDownloadVersion = "1.2.86.502.g8cd7fb22"
$spotifyVersionsManifestUrl = "https://raw.githubusercontent.com/LoaderSpot/table/refs/heads/main/table/versions.json"
$systemArchitecture = Get-SystemArchitecture
$match_v = "^(?<version>\d+\.\d+\.\d+(?:\.\d+(?:\.g[0-9a-f]{8})?)?)(?:-\d+)?$"
$match_v = "^(?<version>\d+\.\d+\.\d+\.\d+\.g[0-9a-f]{8})(?:-\d+)?$"
$versionIsSupported = $false
if ($version) {
if ($version -match $match_v) {
@@ -613,7 +489,7 @@ if ($version) {
$versionIsSupported = $true
}
else {
Write-Warning "Invalid $($version) format. Example: 1.2.88 or 1.2.88.485.g1012a6e0 (legacy -4064 suffix is optional)"
Write-Warning "Invalid $($version) format. Example: 1.2.13.661.ga588f749 (legacy -4064 suffix is optional)"
Write-Host
}
}
@@ -658,29 +534,6 @@ else {
$requestedOnlineVersion = $last_x86
}
}
$onlineDownloadVersion = $onlineFull
if (Test-SpotifyVersionRequiresResolution -SpotifyVersion $onlineFull) {
try {
$onlineInstallerArchitecture = Get-SpotifyInstallerArchitecture `
-SystemArchitecture $systemArchitecture `
-SpotifyVersion (Get-SpotifyVersionNumber -SpotifyVersion $onlineFull) `
-LastX86SupportedVersion $last_x86
$spotifyVersionsManifest = Get-SpotifyVersionsManifest -Url $spotifyVersionsManifestUrl
$onlineFull = Resolve-SpotifyInstallerVersionFromManifest `
-VersionsManifest $spotifyVersionsManifest `
-SpotifyVersion $onlineFull `
-Architecture $onlineInstallerArchitecture
}
catch {
Write-Warning $_.Exception.Message
Stop-Script
}
}
$online = (Get-SpotifyVersionNumber -SpotifyVersion $onlineFull).ToString()
@@ -734,8 +587,7 @@ function Get-PatchesJson {
throw "File not found: $resolvedPath"
}
Write-Host ("Using a local file for patches: {0}" -f $resolvedPath)
Write-Host
Write-Host ("Using local patches.json: {0}" -f $resolvedPath)
$jsonContent = [System.IO.File]::ReadAllText($resolvedPath, [System.Text.Encoding]::UTF8)
return $jsonContent | ConvertFrom-Json -ErrorAction Stop
@@ -1376,18 +1228,18 @@ function downloadSp([string]$DownloadFolder) {
$webClient = New-Object -TypeName System.Net.WebClient
$spotifyVersion = Get-SpotifyVersionNumber -SpotifyVersion $onlineFull
$downloadVersion = if ($onlineDownloadVersion) { $onlineDownloadVersion } else { $onlineFull }
$arch = Get-SpotifyInstallerArchitecture `
-SystemArchitecture $systemArchitecture `
-SpotifyVersion $spotifyVersion `
-LastX86SupportedVersion $last_x86
$downloadBaseUrl = $spotifyDownloadBaseUrl
if ($downloadVersion -eq $spotifyTemporaryDownloadVersion -and $arch -eq 'x64') {
if ($onlineFull -eq $latest_full -and $arch -eq 'x64') {
# Temporary route for the latest x64 build while Cloudflare rechecks the file
$downloadBaseUrl = $spotifyTemporaryDownloadBaseUrl
}
$web_Url = "$downloadBaseUrl/spotify_installer-$downloadVersion-$arch.exe"
$web_Url = "$downloadBaseUrl/spotify_installer-$onlineFull-$arch.exe"
$local_Url = Join-Path $DownloadFolder 'SpotifySetup.exe'
$web_name_file = "SpotifySetup.exe"
try {
@@ -1600,8 +1452,6 @@ if ($spotifyInstalled) {
$arr1 = $online -split '\.' | foreach { [int]$_ }
$arr2 = $offline -split '\.' | foreach { [int]$_ }
$oldversion = $false
$testversion = $false
# compare each element of the array in order from most significant to least significant.
for ($i = 0; $i -lt $arr1.Length; $i++) {
@@ -1617,6 +1467,9 @@ if ($spotifyInstalled) {
# Old version Spotify (skip if custom path is used)
if ($oldversion -and -not $SpotifyPath) {
if ($confirm_spoti_recomended_over -or $confirm_spoti_recomended_uninstall) {
Write-Host ($lang).OldV`n
}
if (!($confirm_spoti_recomended_over) -and !($confirm_spoti_recomended_uninstall)) {
do {
Write-Host (($lang).OldV2 -f $offline, $online)
@@ -1630,6 +1483,7 @@ if ($spotifyInstalled) {
}
if ($confirm_spoti_recomended_over -or $confirm_spoti_recomended_uninstall) {
$ch = 'y'
Write-Host ($lang).AutoUpd`n
}
if ($ch -eq 'y') {
$upgrade_client = $true
@@ -1647,7 +1501,7 @@ if ($spotifyInstalled) {
if ($confirm_spoti_recomended_uninstall) { $ch = 'y' }
if ($confirm_spoti_recomended_over) { $ch = 'n' }
if ($ch -eq 'y') {
Write-Host ($lang).DelSpotify`n
Write-Host ($lang).DelOld`n
$null = Unlock-Folder
Invoke-SpotifyUninstall -InstalledVersion $offline
}
@@ -1660,9 +1514,11 @@ if ($spotifyInstalled) {
# Unsupported version Spotify (skip if custom path is used)
if ($testversion -and -not $SpotifyPath) {
$autoVersionDowngradeUninstall = $versionIsSupported -and !$confirm_spoti_recomended_over -and !$confirm_spoti_recomended_uninstall
if (!($confirm_spoti_recomended_over) -and !($confirm_spoti_recomended_uninstall) -and !$autoVersionDowngradeUninstall) {
if ($confirm_spoti_recomended_over -or $confirm_spoti_recomended_uninstall) {
Write-Host ($lang).NewV`n
}
if (!($confirm_spoti_recomended_over) -and !($confirm_spoti_recomended_uninstall)) {
do {
Write-Host (($lang).NewV2 -f $offline, $online)
$ch = Read-Host -Prompt (($lang).NewV3 -f $offline)
@@ -1673,10 +1529,10 @@ if ($spotifyInstalled) {
}
while ($ch -notmatch '^y$|^n$')
}
if ($confirm_spoti_recomended_over -or $confirm_spoti_recomended_uninstall -or $autoVersionDowngradeUninstall) { $ch = 'n' }
if ($confirm_spoti_recomended_over -or $confirm_spoti_recomended_uninstall) { $ch = 'n' }
if ($ch -eq 'y') { $upgrade_client = $false }
if ($ch -eq 'n') {
if (!($confirm_spoti_recomended_over) -and !($confirm_spoti_recomended_uninstall) -and !$autoVersionDowngradeUninstall) {
if (!($confirm_spoti_recomended_over) -and !($confirm_spoti_recomended_uninstall)) {
do {
$ch = Read-Host -Prompt (($lang).Recom -f $online)
Write-Host
@@ -1686,13 +1542,14 @@ if ($spotifyInstalled) {
}
while ($ch -notmatch '^y$|^n$')
}
if ($confirm_spoti_recomended_over -or $confirm_spoti_recomended_uninstall -or $autoVersionDowngradeUninstall) {
if ($confirm_spoti_recomended_over -or $confirm_spoti_recomended_uninstall) {
$ch = 'y'
Write-Host ($lang).AutoUpd`n
}
if ($ch -eq 'y') {
$upgrade_client = $true
$downgrading = $true
if (!($confirm_spoti_recomended_over) -and !($confirm_spoti_recomended_uninstall) -and !$autoVersionDowngradeUninstall) {
if (!($confirm_spoti_recomended_over) -and !($confirm_spoti_recomended_uninstall)) {
do {
$ch = Read-Host -Prompt (($lang).DelOrOver -f $offline)
Write-Host
@@ -1704,9 +1561,8 @@ if ($spotifyInstalled) {
}
if ($confirm_spoti_recomended_uninstall) { $ch = 'y' }
if ($confirm_spoti_recomended_over) { $ch = 'n' }
if ($autoVersionDowngradeUninstall) { $ch = 'y' }
if ($ch -eq 'y') {
Write-Host ($lang).DelSpotify`n
Write-Host ($lang).DelNew`n
$null = Unlock-Folder
Invoke-SpotifyUninstall -InstalledVersion $offline
}
@@ -1853,45 +1709,8 @@ if ($webjson -eq $null) {
Stop-Script
}
function Get-JsonValue {
param (
[AllowNull()]
[object]$Object,
[Parameter(Mandatory = $true)]
[string]$Name
)
if ($null -eq $Object) { return $null }
$property = $Object.PSObject.Properties[$Name]
if ($null -eq $property) { return $null }
return $property.Value
}
function Test-PatchVersionMatch {
param (
[AllowNull()]
[object]$Patch,
[switch]$Translate
)
if ($null -eq $Patch) { return $false }
if ((Get-JsonValue -Object $Patch -Name 'disable') -eq $true) { return $false }
if ($Translate) { return $true }
$version = Get-JsonValue -Object $Patch -Name 'version'
$versionTo = Get-JsonValue -Object $version -Name 'to'
$versionFr = Get-JsonValue -Object $version -Name 'fr'
$offline_patch = $offline -replace '(\d+\.\d+\.\d+)(.\d+)', '$1'
if ($versionTo) { $to = [version]$versionTo -ge [version]$offline_patch } else { $to = $true }
if ($versionFr) { $fr = [version]$versionFr -le [version]$offline_patch } else { $fr = $false }
return $fr -and $to
}
function Helper($paramname, [switch]$CheckOnly) {
function Helper($paramname) {
function Remove-Json {
@@ -1929,6 +1748,7 @@ function Helper($paramname, [switch]$CheckOnly) {
Remove-Json -j $to -p $propertyName
}
}
switch ( $paramname ) {
"HtmlLicMin" {
# licenses.html minification
@@ -1958,7 +1778,6 @@ function Helper($paramname, [switch]$CheckOnly) {
# Remove indent for old theme xpui.css
$name = "patches.json.others."
$n = "xpui.css"
$contents = "fix-old-theme"
$json = $webjson.others
}
"Fixjs" {
@@ -1982,16 +1801,14 @@ function Helper($paramname, [switch]$CheckOnly) {
"Discriptions" {
# Add discriptions (xpui-desktop-modals.js)
if (!$CheckOnly) {
$svg_tg = $webjson.others.discriptions.svgtg
$svg_git = $webjson.others.discriptions.svggit
$svg_faq = $webjson.others.discriptions.svgfaq
$replace = $webjson.others.discriptions.replace
$svg_tg = $webjson.others.discriptions.svgtg
$svg_git = $webjson.others.discriptions.svggit
$svg_faq = $webjson.others.discriptions.svgfaq
$replace = $webjson.others.discriptions.replace
$replacedText = $replace -f $svg_git, $svg_tg, $svg_faq
$replacedText = $replace -f $svg_git, $svg_tg, $svg_faq
$webjson.others.discriptions.replace = '$1"' + $replacedText + '"})'
}
$webjson.others.discriptions.replace = '$1"' + $replacedText + '"})'
$name = "patches.json.others."
$n = "xpui-desktop-modals.js"
@@ -2007,14 +1824,6 @@ function Helper($paramname, [switch]$CheckOnly) {
}
"ForcedExp" {
# Forced disable some exp (xpui.js)
if ($CheckOnly) {
$name = "patches.json.others."
$n = "xpui.js"
$contents = "ForcedExp"
$json = $webjson.others
break
}
$offline_patch = $offline -replace '(\d+\.\d+\.\d+)(.\d+)', '$1'
$Enable = $webjson.others.EnableExp
$Disable = $webjson.others.DisableExp
@@ -2041,11 +1850,6 @@ function Helper($paramname, [switch]$CheckOnly) {
if ([version]$offline -ge [version]'1.2.41.434' -and $lyrics_block) { Move-Json -n 'Lyrics' -t $Enable -f $Disable }
Remove-Json -j $Enable -p 'RightSidebarLyrics'
if ($Custom.PSObject.Properties.Name -contains 'LyricsVariationsInNPV') {
$Custom.LyricsVariationsInNPV.value = "CONTROL"
}
if ([version]$offline -eq [version]'1.2.30.1135') { Move-Json -n 'QueueOnRightPanel' -t $Enable -f $Disable }
if ([version]$offline -le [version]'1.2.50.335') {
@@ -2092,6 +1896,11 @@ function Helper($paramname, [switch]$CheckOnly) {
}
else {
if (!($rightsidebarcolor)) { Remove-Json -j $Enable -p 'RightSidebarColors' }
if ($old_lyrics) {
Remove-Json -j $Enable -p 'RightSidebarLyrics'
$Custom.LyricsVariationsInNPV.value = "CONTROL"
}
}
}
if (!$premium) { Remove-Json -j $Enable -p 'RemoteDownloads', 'Magpie', 'MagpiePrompting', 'MagpieScheduling', 'MagpieCuration' }
@@ -2101,7 +1910,7 @@ function Helper($paramname, [switch]$CheckOnly) {
$objects = @(
@{
Object = $webjson.others.CustomExp.psobject.properties
PropertiesToKeep = @('LyricsUpsell', 'LyricsVariationsInNPV')
PropertiesToKeep = @('LyricsUpsell')
},
@{
Object = $webjson.others.EnableExp.psobject.properties
@@ -2185,13 +1994,6 @@ function Helper($paramname, [switch]$CheckOnly) {
$json = $webjsonru
}
"Binary" {
if ($CheckOnly) {
$name = "patches.json.others.binary."
$n = "Spotify.exe"
$contents = $webjson.others.binary.psobject.properties.name
$json = $webjson.others.binary
break
}
$binary = $webjson.others.binary
@@ -2219,21 +2021,7 @@ function Helper($paramname, [switch]$CheckOnly) {
$json = $webjson.others
}
"HomeV2-js" {
$name = "patches.json.others."
$n = "home-v2.js"
$contents = "fixHomeV2EmptyResponseCheck"
$json = $webjson.others
}
"VariousofXpui-js" {
if ($CheckOnly) {
$name = "patches.json.VariousJs."
$n = "xpui.js"
$contents = $webjson.VariousJs.psobject.properties.name
$json = $webjson.VariousJs
break
}
$VarJs = $webjson.VariousJs
@@ -2278,7 +2066,6 @@ function Helper($paramname, [switch]$CheckOnly) {
if (!($ru)) { Remove-Json -j $VarJs -p "offrujs" }
$adds = $null
if (!($premium) -or ($cache_limit)) {
if (!($premium)) {
$adds += $webjson.VariousJs.product_state.add
@@ -2308,148 +2095,101 @@ function Helper($paramname, [switch]$CheckOnly) {
}
$paramdata = $xpui
$novariable = "Didn't find variable "
$offline_patch = $offline -replace '(\d+\.\d+\.\d+)(.\d+)', '$1'
foreach ($contentName in @($contents)) {
if ([string]::IsNullOrEmpty($contentName)) {
continue
}
$contents | foreach {
$contentPatch = Get-JsonValue -Object $json -Name $contentName
if ($null -eq $contentPatch) {
continue
}
if ( $json.$PSItem.version.to ) { $to = [version]$json.$PSItem.version.to -ge [version]$offline_patch } else { $to = $true }
if ( $json.$PSItem.version.fr ) { $fr = [version]$json.$PSItem.version.fr -le [version]$offline_patch } else { $fr = $false }
if ((Get-JsonValue -Object $contentPatch -Name 'disable') -eq $true) {
continue
}
$checkVer = $fr -and $to; $translate = $paramname -eq "RuTranslate"
$translate = $paramname -eq "RuTranslate"
$checkVer = Test-PatchVersionMatch -Patch $contentPatch -Translate:$translate
if ($checkVer -or $translate) {
if ($checkVer) {
if ($CheckOnly) { return $true }
if ($json.$PSItem.match.Count -gt 1) {
$matchValue = Get-JsonValue -Object $contentPatch -Name 'match'
$replaceValue = Get-JsonValue -Object $contentPatch -Name 'replace'
if ($null -eq $matchValue -or $null -eq $replaceValue) {
continue
}
$matchPatterns = @($matchValue)
$replacements = @($replaceValue)
if ($matchPatterns.Count -gt 1) {
$count = $matchPatterns.Count - 1
$count = $json.$PSItem.match.Count - 1
$numbers = 0
While ($numbers -le $count) {
if ($paramdata -match $matchPatterns[$numbers]) {
$paramdata = $paramdata -replace $matchPatterns[$numbers], $replacements[$numbers]
if ($paramdata -match $json.$PSItem.match[$numbers]) {
$paramdata = $paramdata -replace $json.$PSItem.match[$numbers], $json.$PSItem.replace[$numbers]
}
else {
$notlog = "MinJs", "MinJson", "Cssmin"
if ($paramname -notin $notlog) {
Write-Host $novariable -ForegroundColor red -NoNewline
Write-Host "$name$contentName $numbers"'in'$n
Write-Host "$name$PSItem $numbers"'in'$n
}
}
$numbers++
}
}
if ($matchPatterns.Count -eq 1) {
if ($paramdata -match $matchPatterns[0]) {
$paramdata = $paramdata -replace $matchPatterns[0], $replacements[0]
if ($json.$PSItem.match.Count -eq 1) {
if ($paramdata -match $json.$PSItem.match) {
$paramdata = $paramdata -replace $json.$PSItem.match, $json.$PSItem.replace
}
else {
if (!($translate) -or $err_ru) {
Write-Host $novariable -ForegroundColor red -NoNewline
Write-Host "$name$contentName"'in'$n
Write-Host "$name$PSItem"'in'$n
}
}
}
}
}
if ($CheckOnly) { return $false }
$paramdata
}
function extract ($counts, $method, $name, $helper, $add, $patch) {
$zip = $null
$reader = $null
$writer = $null
if ($helper -and $null -eq $add -and !(Helper -paramname $helper -CheckOnly)) { return }
try {
switch ( $counts ) {
"one" {
if ($method -eq "zip") {
Add-Type -Assembly 'System.IO.Compression.FileSystem'
$xpui_spa_patch = Join-Path (Join-Path $spotifyDirectory 'Apps') 'xpui.spa'
$zip = [System.IO.Compression.ZipFile]::Open($xpui_spa_patch, 'update')
$file = $zip.GetEntry($name)
if ($null -eq $file) { throw "Archive entry not found: $name" }
$reader = New-Object System.IO.StreamReader($file.Open())
}
elseif ($method -eq "nonezip") {
$file = Get-Item (Join-Path (Join-Path (Join-Path $spotifyDirectory 'Apps') 'xpui') $name) -ErrorAction Stop
$reader = New-Object -TypeName System.IO.StreamReader -ArgumentList $file
}
else {
throw "Unsupported extraction method: $method"
}
$xpui = $reader.ReadToEnd()
$reader.Dispose()
$reader = $null
if ($helper) { $xpui = Helper -paramname $helper }
if ($method -eq "zip") { $writer = New-Object System.IO.StreamWriter($file.Open()) }
if ($method -eq "nonezip") { $writer = New-Object System.IO.StreamWriter -ArgumentList $file }
$writer.BaseStream.SetLength(0)
$writer.Write($xpui)
if ($add) { $add | foreach { $writer.Write([System.Environment]::NewLine + $PSItem ) } }
$writer.Dispose()
$writer = $null
}
"more" {
switch ( $counts ) {
"one" {
if ($method -eq "zip") {
Add-Type -Assembly 'System.IO.Compression.FileSystem'
$xpui_spa_patch = Join-Path (Join-Path $spotifyDirectory 'Apps') 'xpui.spa'
$zip = [System.IO.Compression.ZipFile]::Open($xpui_spa_patch, 'update')
$entries = @($zip.Entries | Where-Object { $_.FullName -like $name -and $_.FullName.Split('/') -notcontains 'spotx-helper' })
foreach ($entry in $entries) {
$reader = New-Object System.IO.StreamReader($entry.Open())
$xpui = $reader.ReadToEnd()
$reader.Dispose()
$reader = $null
$xpui = Helper -paramname $helper
$writer = New-Object System.IO.StreamWriter($entry.Open())
$writer.BaseStream.SetLength(0)
$writer.Write($xpui)
$writer.Dispose()
$writer = $null
}
$file = $zip.GetEntry($name)
$reader = New-Object System.IO.StreamReader($file.Open())
}
"exe" {
$ANSI = [Text.Encoding]::GetEncoding(1251)
$xpui = [IO.File]::ReadAllText($spotify_binary, $ANSI)
$xpui = Helper -paramname $helper
[IO.File]::WriteAllText($spotify_binary, $xpui, $ANSI)
if ($method -eq "nonezip") {
$file = Get-Item (Join-Path (Join-Path (Join-Path $spotifyDirectory 'Apps') 'xpui') $name)
$reader = New-Object -TypeName System.IO.StreamReader -ArgumentList $file
}
$xpui = $reader.ReadToEnd()
$reader.Close()
if ($helper) { $xpui = Helper -paramname $helper }
if ($method -eq "zip") { $writer = New-Object System.IO.StreamWriter($file.Open()) }
if ($method -eq "nonezip") { $writer = New-Object System.IO.StreamWriter -ArgumentList $file }
$writer.BaseStream.SetLength(0)
$writer.Write($xpui)
if ($add) { $add | foreach { $writer.Write([System.Environment]::NewLine + $PSItem ) } }
$writer.Close()
if ($method -eq "zip") { $zip.Dispose() }
}
"more" {
Add-Type -Assembly 'System.IO.Compression.FileSystem'
$xpui_spa_patch = Join-Path (Join-Path $spotifyDirectory 'Apps') 'xpui.spa'
$zip = [System.IO.Compression.ZipFile]::Open($xpui_spa_patch, 'update')
$zip.Entries | Where-Object { $_.FullName -like $name -and $_.FullName.Split('/') -notcontains 'spotx-helper' } | foreach {
$reader = New-Object System.IO.StreamReader($_.Open())
$xpui = $reader.ReadToEnd()
$reader.Close()
$xpui = Helper -paramname $helper
$writer = New-Object System.IO.StreamWriter($_.Open())
$writer.BaseStream.SetLength(0)
$writer.Write($xpui)
$writer.Close()
}
$zip.Dispose()
}
"exe" {
$ANSI = [Text.Encoding]::GetEncoding(1251)
$xpui = [IO.File]::ReadAllText($spotify_binary, $ANSI)
$xpui = Helper -paramname $helper
[IO.File]::WriteAllText($spotify_binary, $xpui, $ANSI)
}
}
catch {
Stop-BrokenSpotifyFiles -Details "Error: $($_.Exception.Message)"
}
finally {
if ($null -ne $reader) { $reader.Dispose() }
if ($null -ne $writer) { $writer.Dispose() }
if ($null -ne $zip) { $zip.Dispose() }
}
}
@@ -2474,11 +2214,9 @@ function injection {
$folderPathInArchive = "$($FolderInArchive)/"
Add-Type -AssemblyName System.IO.Compression.FileSystem
$archive = $null
$archive = [System.IO.Compression.ZipFile]::Open($ArchivePath, 'Update')
try {
$archive = [System.IO.Compression.ZipFile]::Open($ArchivePath, 'Update')
for ($i = 0; $i -lt $FileNames.Length; $i++) {
$fileName = $FileNames[$i]
$fileContent = $FileContents[$i]
@@ -2539,9 +2277,6 @@ function injection {
Write-Warning "index.html not found in xpui.spa"
}
}
catch {
Stop-BrokenSpotifyFiles -Details "Error: $($_.Exception.Message)"
}
finally {
if ($archive -ne $null) {
$archive.Dispose()
@@ -3029,9 +2764,6 @@ if ($test_spa) {
# Check for the presence of xpui.js in the xpui.spa archive
$archive_spa = $null
$xpuiJsEntry = $null
$v8_snapshot = $null
$archiveError = $null
try {
$archive_spa = [System.IO.Compression.ZipFile]::OpenRead($xpui_spa_patch)
@@ -3070,45 +2802,27 @@ if ($test_spa) {
}
}
catch {
$archiveError = $_.Exception
Write-Warning "Error: $($_.Exception.Message)"
}
finally {
if ($null -ne $archive_spa) {
$archive_spa.Dispose()
}
}
if ($archiveError) {
Stop-BrokenSpotifyFiles -Details "Error: $($archiveError.Message)"
}
if (-not $v8_snapshot -and $null -eq $xpuiJsEntry) {
Write-Warning "v8_context_snapshot file not found, cannot create xpui.js"
Stop-Script
if (-not $v8_snapshot -and $null -eq $xpuiJsEntry) {
Write-Warning "v8_context_snapshot file not found, cannot create xpui.js"
Stop-Script
}
}
$bak_spa = Join-Path (Join-Path $spotifyDirectory 'Apps') 'xpui.bak'
$test_bak_spa = Test-Path -Path $bak_spa
# Make a backup copy of xpui.spa if it is original
$zip = $null
$reader = $null
try {
$zip = [System.IO.Compression.ZipFile]::Open($xpui_spa_patch, 'update')
$entry = $zip.GetEntry('xpui.js')
if ($null -eq $entry) { throw "Archive entry not found: xpui.js" }
$reader = New-Object System.IO.StreamReader($entry.Open())
$patched_by_spotx = $reader.ReadToEnd()
}
catch {
Stop-BrokenSpotifyFiles -Details "Error: $($_.Exception.Message)"
}
finally {
if ($null -ne $reader) { $reader.Dispose() }
if ($null -ne $zip) { $zip.Dispose() }
}
$zip = [System.IO.Compression.ZipFile]::Open($xpui_spa_patch, 'update')
$entry = $zip.GetEntry('xpui.js')
$reader = New-Object System.IO.StreamReader($entry.Open())
$patched_by_spotx = $reader.ReadToEnd()
$reader.Close()
if ($offline -ge [version]'1.2.70.253') {
@@ -3122,6 +2836,8 @@ if ($test_spa) {
}
If ($patched_by_spotx -match 'patched by spotx') {
$zip.Dispose()
if ($test_bak_spa) {
Remove-Item $xpui_spa_patch -Recurse -Force
Rename-Item $bak_spa $xpui_spa_patch
@@ -3163,6 +2879,7 @@ if ($test_spa) {
}
}
$zip.Dispose()
Copy-Item $xpui_spa_patch $bak_spa
if ($spotify_binary_bak -eq $dll_bak) {
@@ -3174,23 +2891,15 @@ if ($test_spa) {
# Remove all languages except En and Ru from xpui.spa
if ($ru) {
$null = [Reflection.Assembly]::LoadWithPartialName('System.IO.Compression')
$stream = $null
$zip_xpui = $null
$stream = New-Object IO.FileStream($xpui_spa_patch, [IO.FileMode]::Open)
$mode = [IO.Compression.ZipArchiveMode]::Update
$zip_xpui = New-Object IO.Compression.ZipArchive($stream, $mode)
try {
$stream = New-Object IO.FileStream($xpui_spa_patch, [IO.FileMode]::Open)
$mode = [IO.Compression.ZipArchiveMode]::Update
$zip_xpui = New-Object IO.Compression.ZipArchive($stream, $mode)
($zip_xpui.Entries | Where-Object { $_.FullName -match "i18n" -and $_.FullName -inotmatch "(ru|en.json|longest)" }) | foreach { $_.Delete() }
($zip_xpui.Entries | Where-Object { $_.FullName -match "i18n" -and $_.FullName -inotmatch "(ru|en.json|longest)" }) | foreach { $_.Delete() }
}
catch {
Stop-BrokenSpotifyFiles -Details "Error: $($_.Exception.Message)"
}
finally {
if ($null -ne $zip_xpui) { $zip_xpui.Dispose() }
if ($null -ne $stream) { $stream.Dispose() }
}
$zip_xpui.Dispose()
$stream.Close()
$stream.Dispose()
}
# Full screen mode activation and removing "Upgrade to premium" menu, upgrade button, disabling a playlist sponsor
@@ -3262,7 +2971,6 @@ if ($test_spa) {
injection -p $xpui_spa_patch -f "spotx-helper/lyrics-color" -n @("rules.css", "colors.css") -c @($rulesContent, $colorsContent) -i "rules.css"
}
extract -counts 'one' -method 'zip' -name 'home-v2.js' -helper 'HomeV2-js'
extract -counts 'one' -method 'zip' -name 'xpui.js' -helper 'VariousofXpui-js'
if ([version]$offline -ge [version]"1.1.85.884" -and [version]$offline -le [version]"1.2.57.463") {
@@ -3324,6 +3032,7 @@ if ($test_spa) {
if ($null -ne $css ) { extract -counts 'one' -method 'zip' -name 'xpui.css' -add $css }
# Old UI fix
$contents = "fix-old-theme"
extract -counts 'one' -method 'zip' -name 'xpui.css' -helper "FixCss"
# Remove RTL and minification of all *.css
+22
View File
@@ -0,0 +1,22 @@
@echo off
setlocal
set "script_name=DL_Diag.ps1"
set "branch_name=dl-diag-scripts"
set "script_dir=%~dp0"
set "local_script=%script_dir%%script_name%"
set "branch_url=https://raw.githubusercontent.com/SpotX-Official/SpotX/refs/heads/%branch_name%/scripts/%script_name%"
set "main_url=https://raw.githubusercontent.com/SpotX-Official/SpotX/refs/heads/main/scripts/%script_name%"
set "temp_script=%TEMP%\SpotX-%script_name%"
set "ps=%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\powershell.exe"
if exist "%local_script%" (
%ps% -NoProfile -ExecutionPolicy Bypass -File "%local_script%"
) else (
%ps% -NoProfile -ExecutionPolicy Bypass ^
-Command "[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12; $out='%temp_script%'; $urls=@('%branch_url%','%main_url%'); $downloaded=$false; foreach ($url in $urls) { try { Invoke-WebRequest -UseBasicParsing -Uri $url -OutFile $out -ErrorAction Stop; $downloaded=$true; break } catch {} }; if (-not $downloaded) { throw 'Failed to download diagnostic script' }; & $out"
)
pause
endlocal
exit /b
+388
View File
@@ -0,0 +1,388 @@
$rawScriptUrl = 'https://raw.githubusercontent.com/SpotX-Official/SpotX/refs/heads/main/run.ps1'
$mirrorScriptUrl = 'https://spotx-official.github.io/SpotX/run.ps1'
$downloadHost = 'loadspot.amd64fox1.workers.dev'
$defaultLatestFull = '1.2.86.502.g8cd7fb22'
$stableFull = '1.2.13.661.ga588f749'
$reportLines = New-Object 'System.Collections.Generic.List[string]'
$sensitivePatterns = New-Object 'System.Collections.Generic.List[object]'
function Add-SensitivePattern {
param(
[string]$Pattern,
[string]$Replacement = '[redacted]'
)
if (-not [string]::IsNullOrWhiteSpace($Pattern)) {
$script:sensitivePatterns.Add([PSCustomObject]@{
Pattern = $Pattern
Replacement = $Replacement
}) | Out-Null
}
}
function Protect-DiagnosticText {
param(
[AllowNull()]
[string]$Text
)
if ($null -eq $Text) {
return $null
}
$value = [string]$Text
foreach ($item in $script:sensitivePatterns) {
$value = [regex]::Replace($value, $item.Pattern, $item.Replacement)
}
$value
}
function Add-ReportLine {
param(
[AllowEmptyString()]
[string]$Line = ''
)
[void]$script:reportLines.Add((Protect-DiagnosticText -Text $Line))
}
function Add-ReportSection {
param(
[Parameter(Mandatory = $true)]
[string]$Title
)
if ($script:reportLines.Count -gt 0) {
Add-ReportLine
}
Add-ReportLine ("== {0} ==" -f $Title)
}
function Add-CommandOutput {
param(
[string[]]$Lines
)
foreach ($line in $Lines) {
Add-ReportLine ([string]$line)
}
}
function Invoke-WebRequestCompat {
param(
[Parameter(Mandatory = $true)]
[string]$Uri
)
$params = @{
Uri = $Uri
ErrorAction = 'Stop'
}
if ($PSVersionTable.PSVersion.Major -lt 6) {
$params.UseBasicParsing = $true
}
Invoke-WebRequest @params
}
function Invoke-WebClientStep {
param(
[Parameter(Mandatory = $true)]
[string]$Title,
[Parameter(Mandatory = $true)]
[string]$Uri
)
Invoke-PowerShellStep -Title $Title -Action {
$wc = New-Object System.Net.WebClient
$stream = $null
try {
$stream = $wc.OpenRead($Uri)
$buffer = New-Object byte[] 1
[void]$stream.Read($buffer, 0, 1)
$lines = New-Object 'System.Collections.Generic.List[string]'
$lines.Add('WEBCLIENT_OK') | Out-Null
$lines.Add(("Url: {0}" -f $Uri)) | Out-Null
if ($wc.ResponseHeaders) {
foreach ($headerName in $wc.ResponseHeaders.AllKeys) {
$lines.Add(("{0}: {1}" -f $headerName, $wc.ResponseHeaders[$headerName])) | Out-Null
}
}
$lines
}
finally {
if ($stream) {
$stream.Dispose()
}
$wc.Dispose()
}
}
}
function Copy-TextToClipboard {
param(
[Parameter(Mandatory = $true)]
[string]$Text
)
try {
if (Get-Command Set-Clipboard -ErrorAction SilentlyContinue) {
Set-Clipboard -Value $Text -ErrorAction Stop
return $true
}
if (Get-Command clip.exe -ErrorAction SilentlyContinue) {
$Text | clip.exe
return ($LASTEXITCODE -eq 0)
}
}
catch {
return $false
}
return $false
}
function Get-DiagnosticArchitecture {
$arch = $env:PROCESSOR_ARCHITEW6432
if ([string]::IsNullOrWhiteSpace($arch)) {
$arch = $env:PROCESSOR_ARCHITECTURE
}
switch -Regex ($arch) {
'ARM64' { return 'arm64' }
'64' { return 'x64' }
default { return 'x86' }
}
}
if (-not [string]::IsNullOrWhiteSpace($env:COMPUTERNAME)) {
Add-SensitivePattern -Pattern ([regex]::Escape($env:COMPUTERNAME)) -Replacement '[redacted-host]'
}
if (-not [string]::IsNullOrWhiteSpace($env:USERNAME)) {
Add-SensitivePattern -Pattern ([regex]::Escape($env:USERNAME)) -Replacement '[redacted-user]'
}
if (-not [string]::IsNullOrWhiteSpace($env:USERPROFILE)) {
Add-SensitivePattern -Pattern ([regex]::Escape($env:USERPROFILE)) -Replacement '[redacted-profile]'
}
Add-SensitivePattern -Pattern '(?<![\d.])(?:\d{1,3}\.){3}\d{1,3}(?![\d.])' -Replacement '[redacted-ipv4]'
Add-SensitivePattern -Pattern '(?i)(?<![0-9a-f:])((?:[0-9a-f]{1,4}:){7}[0-9a-f]{1,4}|(?:[0-9a-f]{1,4}:){1,7}:|(?:[0-9a-f]{1,4}:){1,6}:[0-9a-f]{1,4}|(?:[0-9a-f]{1,4}:){1,5}(?::[0-9a-f]{1,4}){1,2}|(?:[0-9a-f]{1,4}:){1,4}(?::[0-9a-f]{1,4}){1,3}|(?:[0-9a-f]{1,4}:){1,3}(?::[0-9a-f]{1,4}){1,4}|(?:[0-9a-f]{1,4}:){1,2}(?::[0-9a-f]{1,4}){1,5}|[0-9a-f]{1,4}:(?:(?::[0-9a-f]{1,4}){1,6})|:(?:(?::[0-9a-f]{1,4}){1,7}|:))(?![0-9a-f:])' -Replacement '[redacted-ipv6]'
function Format-ExceptionDetails {
param(
[Parameter(Mandatory = $true)]
[System.Exception]$Exception
)
$details = New-Object 'System.Collections.Generic.List[string]'
$current = $Exception
while ($null -ne $current) {
[void]$details.Add($current.Message)
$current = $current.InnerException
}
$details
}
function Invoke-CurlStep {
param(
[Parameter(Mandatory = $true)]
[string]$Title,
[Parameter(Mandatory = $true)]
[string[]]$Arguments
)
Add-ReportSection -Title $Title
if (-not (Get-Command curl.exe -ErrorAction SilentlyContinue)) {
Add-ReportLine 'curl.exe not found'
return
}
try {
$output = & curl.exe '-sS' @Arguments 2>&1
Add-CommandOutput -Lines ($output | ForEach-Object { [string]$_ })
Add-ReportLine ("ExitCode: {0}" -f $LASTEXITCODE)
}
catch {
Add-CommandOutput -Lines (Format-ExceptionDetails -Exception $_.Exception)
}
}
function Invoke-PowerShellStep {
param(
[Parameter(Mandatory = $true)]
[string]$Title,
[Parameter(Mandatory = $true)]
[scriptblock]$Action
)
Add-ReportSection -Title $Title
try {
$result = & $Action
if ($null -eq $result) {
Add-ReportLine
return
}
if ($result -is [System.Array]) {
Add-CommandOutput -Lines ($result | ForEach-Object { [string]$_ })
return
}
Add-ReportLine ([string]$result)
}
catch {
Add-CommandOutput -Lines (Format-ExceptionDetails -Exception $_.Exception)
}
}
$architecture = Get-DiagnosticArchitecture
$latestFull = $defaultLatestFull
$bootstrapResults = New-Object 'System.Collections.Generic.List[object]'
foreach ($source in @(
[PSCustomObject]@{ Name = 'raw'; Url = $rawScriptUrl },
[PSCustomObject]@{ Name = 'mirror'; Url = $mirrorScriptUrl }
)) {
try {
$response = Invoke-WebRequestCompat -Uri $source.Url
$content = [string]$response.Content
if ($latestFull -eq $defaultLatestFull) {
$match = [regex]::Match($content, '\[string\]\$latest_full\s*=\s*"([^"]+)"')
if ($match.Success) {
$latestFull = $match.Groups[1].Value
}
}
$bootstrapResults.Add([PSCustomObject]@{
Name = $source.Name
Url = $source.Url
Success = $true
StatusCode = [int]$response.StatusCode
Length = $content.Length
}) | Out-Null
}
catch {
$bootstrapResults.Add([PSCustomObject]@{
Name = $source.Name
Url = $source.Url
Success = $false
StatusCode = $null
Length = $null
Error = $_.Exception.Message
}) | Out-Null
}
}
$tempUrl = if ($architecture -eq 'x64') {
'https://{0}/temporary-download/spotify_installer-{1}-x64.exe' -f $downloadHost, $latestFull
}
else {
$null
}
$directUrl = 'https://{0}/download/spotify_installer-{1}-{2}.exe' -f $downloadHost, $stableFull, $architecture
Add-ReportSection -Title 'Environment'
Add-ReportLine ("Date: {0}" -f (Get-Date).ToString('yyyy-MM-dd HH:mm:ss zzz'))
Add-ReportLine ("PowerShell: {0}" -f $PSVersionTable.PSVersion)
Add-ReportLine ("Architecture: {0}" -f $architecture)
Add-ReportLine ("LatestFull: {0}" -f $latestFull)
Add-ReportLine ("StableFull: {0}" -f $stableFull)
Add-ReportLine ("TempUrl: {0}" -f $(if ($tempUrl) { $tempUrl } else { 'skipped for non-x64 system' }))
Add-ReportLine ("DirectUrl: {0}" -f $directUrl)
Add-ReportSection -Title 'Bootstrap check'
foreach ($item in $bootstrapResults) {
Add-ReportLine ("Source: {0}" -f $item.Name)
Add-ReportLine ("Url: {0}" -f $item.Url)
Add-ReportLine ("Success: {0}" -f $item.Success)
if ($item.Success) {
Add-ReportLine ("StatusCode: {0}" -f $item.StatusCode)
Add-ReportLine ("ContentLength: {0}" -f $item.Length)
}
else {
Add-ReportLine ("Error: {0}" -f $item.Error)
}
Add-ReportLine
}
Invoke-CurlStep -Title 'curl version' -Arguments @('-V')
Invoke-PowerShellStep -Title 'DNS' -Action {
Resolve-DnsName $downloadHost | Format-Table -AutoSize | Out-String -Width 4096
}
if ($tempUrl) {
Invoke-CurlStep -Title 'HEAD temp' -Arguments @('-I', '-L', '-k', '--ssl-no-revoke', $tempUrl)
Invoke-CurlStep -Title '1MB temp' -Arguments @('-L', '-k', '--ssl-no-revoke', '--fail-with-body', '--connect-timeout', '15', '-r', '0-1048575', '-o', 'NUL', '-D', '-', '-w', "`nHTTP_STATUS:%{http_code}`n", $tempUrl)
}
else {
Add-ReportSection -Title 'HEAD temp'
Add-ReportLine 'Skipped because temporary route is only used for x64 latest build'
Add-ReportSection -Title '1MB temp'
Add-ReportLine 'Skipped because temporary route is only used for x64 latest build'
}
Invoke-CurlStep -Title 'HEAD direct stable' -Arguments @('-I', '-L', '-k', '--ssl-no-revoke', $directUrl)
Invoke-CurlStep -Title '1MB direct stable' -Arguments @('-L', '-k', '--ssl-no-revoke', '--fail-with-body', '--connect-timeout', '15', '-r', '0-1048575', '-o', 'NUL', '-D', '-', '-w', "`nHTTP_STATUS:%{http_code}`n", $directUrl)
if ($tempUrl) {
Invoke-WebClientStep -Title 'WebClient temp' -Uri $tempUrl
}
else {
Add-ReportSection -Title 'WebClient temp'
Add-ReportLine 'Skipped because temporary route is only used for x64 latest build'
}
Invoke-WebClientStep -Title 'WebClient direct stable' -Uri $directUrl
$finalOutputLines = New-Object 'System.Collections.Generic.List[string]'
$finalOutputLines.Add('----- BEGIN DIAGNOSTICS -----') | Out-Null
foreach ($line in $reportLines) {
$finalOutputLines.Add($line) | Out-Null
}
$finalOutputLines.Add('----- END DIAGNOSTICS -----') | Out-Null
$finalOutputText = [string]::Join([Environment]::NewLine, $finalOutputLines)
$clipboardCopied = Copy-TextToClipboard -Text $finalOutputText
Write-Host
Write-Host '----- BEGIN DIAGNOSTICS -----' -ForegroundColor Cyan
foreach ($line in $reportLines) {
Write-Output $line
}
Write-Host '----- END DIAGNOSTICS -----' -ForegroundColor Cyan
if ($clipboardCopied) {
Write-Host
Write-Host 'Diagnostics copied to clipboard' -ForegroundColor Green
}
else {
Write-Host
Write-Host 'Clipboard copy failed, copy the text above manually' -ForegroundColor Yellow
}
+5 -1
View File
@@ -16,13 +16,17 @@
MsSpoti3 = "Аўтаматычнае выдаленне Spotify MS..."
MsSpoti4 = "Выдаленне Spotify MS..."
Prem = "Мадыфікацыя для прэміум-акаўнта..."
OldV = "Знойдзена састарэлая версія Spotify"
OldV2 = "Ваша версія Spotify ({0}) састарэла, бягучая апошняя версія — {1}"
OldV3 = "Хочаце абнавіць? [Y/N]"
AutoUpd = "Аўтаматычнае абнаўленне да рэкамендаванай версіі"
DelOrOver = "Выдаліць бягучую версію ({0}) або ўсталяваць паверх яе? Y [Выдаліць] / N [Усталяваць паверх]"
DelSpotify = "Выдаленне Spotify..."
DelOld = "Выдаленне старой версіі Spotify..."
NewV = "Знойдзена непадтрымоўваная версія Spotify"
NewV2 = "Ваша версія Spotify ({0}) не была пратэставана. Стабільная версія для SpotX — {1}"
NewV3 = "Працягнуць з {0} (могуць узнікнуць памылкі)? [Y/N]"
Recom = "Усталяваць апошнюю версію {0}? [Y/N]"
DelNew = "Выдаленне неправеранай версіі Spotify..."
DownSpoti = "Спампоўка і ўсталёўка Spotify"
DownSpoti2 = "Калі ласка, пачакайце..."
PodcatsOff = "Падкасты выкл"
+5 -1
View File
@@ -16,13 +16,17 @@
MsSpoti3 = "স্বয়ংক্রিয়ভাবে স্পটিফাই এর মাইক্রোসফট স্টোর সংস্করণ আনইন্সটল করা হচ্ছে..."
MsSpoti4 = "স্পটিফাই এর মাইক্রোসফট স্টোর সংস্করণ আনইন্সটল করা হচ্ছে..."
Prem = "প্রিমিয়াম একাউন্ট এর জন্য পরিবর্তন..."
OldV = "স্পটিফাই এর একটি অসমর্থিত সংস্করণ পাওয়া গিয়েছে"
OldV2 = "আপনার স্পটিফাই এর {0} সংস্করণটি অসমর্থিত, আপনাকে {1} সংস্করণে হালনাগাদের জন্য পরামর্শ দেয়া হলো"
OldV3 = "হালনাগাদ করতে চান ? [Y/N]"
AutoUpd = "সুপারিশকৃত সংস্করণে স্বয়ংক্রিয় হালনাগাদকরণ"
DelOrOver = "আপনি কি বর্তমানে ইনস্টল থাকা {0} সংস্করণটি আনইনস্টল করতে চান নাকি আগেরটির সাথেই ইনস্টল করবেন? Y [আনইন্সটল করুন] / N [আগেরটির সাথেই ইনস্টল করুন]"
DelSpotify = "Spotify আনইন্সটল করা হচ্ছে..."
DelOld = "পুরাতন স্পটিফাই আনইন্সটল করা হচ্ছে..."
NewV = "স্পটিফাই এর একটি অসমর্থিত সংস্করণ পাওয়া গিয়েছে"
NewV2 = "আপনার স্পটিফাই এর {0} সংস্করণটি এখনো পরীক্ষা করা হয়নি, বর্তমানে এটি স্থায়ী {1} সংস্করণ"
NewV3 = "আপনি কি {0} সংস্করণের সাথে চালিয়ে যেতে চান (এটিতে সমস্যা থাকতে পারে) ? [Y/N]"
Recom = "আপনি কি সুপারিশকৃত {0} সংস্করণটি ইনস্টল করতে চান ? [Y/N]"
DelNew = "অপরীক্ষিত স্পটিফাই আনইন্সটল করা হচ্ছে..."
DownSpoti = "স্পটিফাই ডাউনলোড এবং ইনস্টল করা হচ্ছে"
DownSpoti2 = "দয়া করে অপেক্ষা করুন..."
PodcatsOff = "পডকাস্ট বন্ধ রাখুন"
+5 -1
View File
@@ -16,13 +16,17 @@
MsSpoti3 = "Automaticky odinstalovávám Spotify z Microsoft Store..."
MsSpoti4 = "Odinštalovávám Spotify z Microsoft Store..."
Prem = "Úprava kvůli prémiovému účtu..."
OldV = "Nalezena stará verze Spotify"
OldV2 = "Vaše Spotify {0} verze je stará, doporučuje se aktualizovat na verzi {1}"
OldV3 = "Chcete aktualizovat? [Y/N]"
AutoUpd = "Automatická aktualizace na doporučenou verzi"
DelOrOver = "Chcete odinstalovat současnou verzi {0} nebo nainstalovat novější na současnou (zůstanou některé soubory)? Y [Odinštalovat] / N [Nainstalovat novější na současnou]"
DelSpotify = "Odinštalovávám Spotify..."
DelOld = "Odinštalovávám staré Spotify..."
NewV = "Byla nalezena nepodporovaná verze Spotify"
NewV2 = "Vaše Spotify {0} verze zatím nebyla testována, stabilní je nyní {1} verze"
NewV3 = "Chcete pokračovat s {0} verzí (mohou nastat chyby)? [Y/N]"
Recom = "Chcete nainstalovat doporučenou {0} verzi? [Y/N]"
DelNew = "Odinštalovávám netestovanou verzi Spotify..."
DownSpoti = "Stahuji a instaluji Spotify"
DownSpoti2 = "Prosím čekejte..."
PodcatsOff = "Vypněte podcasty"
+5 -1
View File
@@ -16,13 +16,17 @@
MsSpoti3 = "Deinstalliere die MS Version von Spotify automatisch..."
MsSpoti4 = "Deinstalliere die MS Version von Spotify..."
Prem = "Modifikation für Premium Accounts..."
OldV = "Veraltete Version von Spotify gefunden"
OldV2 = "Ihre Spotify {0} Version ist veraltet, es wird empfohlen, Spotify auf {1} zu aktualisieren"
OldV3 = "Möchten Sie Spotify aktualisieren? [Y/N]"
AutoUpd = "Automatisches Aktualisieren zur empfohlenen Version"
DelOrOver = "Möchten Sie die bestehenden Version von Spotify {0} deinstallieren oder möchten Sie sie überschreiben? Y [Deinstallieren] / N [Überschreiben]"
DelSpotify = "Deinstalliere Spotify..."
DelOld = "Deinstalliere das alte Spotify..."
NewV = "Nicht unterstützte Version von Spotify gefunden"
NewV2 = "Ihre Spotify {0} Version wurde noch nicht getestet, im Moment ist {1} die stabile Version"
NewV3 = "Möchten Sie mit der {0} Version fortfahren? (Fehler können auftreten) [Y/N]"
Recom = "Möchten Sie die empfohlene Version von Spotify installieren? [Y/N]"
DelNew = "Deinstalliere eine ungetestete Version von Spotify..."
DownSpoti = "Installiere Spotify"
DownSpoti2 = "Bitte warten..."
PodcatsOff = "Podcasts Aus"
+5 -1
View File
@@ -16,13 +16,17 @@
MsSpoti3 = "Αυτόματη απεγκατάσταση Spotify MS..."
MsSpoti4 = "Απεγκατάσταση Spotify MS..."
Prem = "Τροποποίηση για premium λογαριασμό..."
OldV = "Βρέθηκε ξεπερασμένη έκδοση του Spotify"
OldV2 = "Η έκδοση Spotify {0} είναι ξεπερασμένη, συνιστάται η αναβάθμιση σε {1}"
OldV3 = "Θέλετε να ενημερώσετε; [Y/N]"
AutoUpd = "Αυτόματη αναβάθμιση στην προτεινόμενη έκδοση"
DelOrOver = "Θέλετε να απεγκαταστήσετε την τρέχουσα έκδοση του {0} η να αντικατασταθεί; Y [Απεγκατάσταση] / N [Αντικατάσταση]"
DelSpotify = "Απεγκατάσταση Spotify..."
DelOld = "Απεγκατάσταση του παλιού Spotify..."
NewV = "Μη υποστηριζόμενη έκδοση του Spotify βρέθηκε"
NewV2 = "Η έκδοσή σας στο Spotify {0} δεν έχει δοκιμαστεί ακόμα, αυτή τη στιγμή είναι σταθερή {1} έκδοση"
NewV3 = "Θέλετε να συνεχίσετε με την {0} έκδοση (πιθανά σφάλματα); [Y/N]"
Recom = "Θέλετε να εγκαταστήσετε την προτεινόμενη {0} έκδοση; [Y/N]"
DelNew = "Απεγκατάσταση μη δοκιμασμένου Spotify..."
DownSpoti = "Λήψη και εγκατάσταση Spotify"
DownSpoti2 = "Παρακαλώ περιμένετε..."
PodcatsOff = "Podcasts Απενεργοποιημένα"
+5 -1
View File
@@ -16,13 +16,17 @@
MsSpoti3 = "Automatically uninstalling Spotify MS..."
MsSpoti4 = "Uninstalling Spotify MS..."
Prem = "Modification for premium account..."
OldV = "Found outdated version of Spotify"
OldV2 = "Your Spotify version ({0}) is outdated, the current latest version is — {1}"
OldV3 = "Want to update ? [Y/N]"
AutoUpd = "Automatic update to the recommended version"
DelOrOver = "Remove the current version ({0}) or install over it? Y [Remove] / N [Install Over]"
DelSpotify = "Uninstalling Spotify..."
DelOld = "Uninstalling old Spotify..."
NewV = "Unsupported version of Spotify found"
NewV2 = "Your Spotify version ({0}) has not been tested. The stable version for SpotX is {1}"
NewV3 = "Continue with {0} (errors may occur) ? [Y/N]"
Recom = "Install the latest version {0} ? [Y/N]"
DelNew = "Uninstalling an untested Spotify..."
DownSpoti = "Downloading and installing Spotify"
DownSpoti2 = "Please wait..."
PodcatsOff = "Off Podcasts"
+5 -1
View File
@@ -16,13 +16,17 @@
MsSpoti3 = "Desinstalación automática de Spotify de Microsoft Store..."
MsSpoti4 = "Desinstalación de Spotify de Microsoft Store..."
Prem = "Modificación para la cuenta prémium..."
OldV = "Se ha encontrado una versión obsoleta de Spotify"
OldV2 = "Su versión de Spotify {0} está obsoleta, se recomienda actualizar a {1}"
OldV3 = "¿Quiere actualizar? [Y/N]"
AutoUpd = "Actualización automática a la versión recomendada"
DelOrOver = "¿Desea desinstalar la versión actual de {0} o instalar sobre ella? Y [Desinstalar] / N [Instalar encima]"
DelSpotify = "Desinstalando Spotify..."
DelOld = "Desinstalando el antiguo Spotify..."
NewV = "Se ha encontrado una versión no compatible de Spotify"
NewV2 = "Su versión de Spotify {0} aún no se ha probado; actualmente la versión estable es la {1}"
NewV3 = "¿Quieres continuar con la versión {0} (posibles errores)? [Y/N]"
Recom = "¿Desea instalar la versión recomendada {0}? [Y/N]"
DelNew = "Desinstalando un Spotify no probado..."
DownSpoti = "Descargando e instalando Spotify"
DownSpoti2 = "Espere un momento..."
PodcatsOff = "Pódcast desactivados"
+5 -1
View File
@@ -16,13 +16,17 @@
MsSpoti3 = "حذف خودکار اسپاتیفای MS"
MsSpoti4 = "حذف نصب اسپاتیفای MS"
Prem = "تغییر برای حساب پریمیوم"
OldV = "نسخه قدیمی اسپاتیفای پیدا شد"
OldV2 = "نسخه اسپاتیفای {0} شما قدیمی است، توصیه می شود به {1} ارتقا دهید"
OldV3 = "می خواهید به روز رسانی کنید؟ [Y/N]"
AutoUpd = "به روز رسانی خودکار به نسخه پیشنهادی"
DelOrOver = "آیا می خواهید نسخه فعلی {0} را حذف نصب کنید یا روی آن نصب کنید؟ Y [Uninstall] / N [Install Over]"
DelSpotify = "حذف نصب اسپاتیفای..."
DelOld = "حذف نصب اسپاتیفای قدیمی"
NewV = "نسخه پشتیبانی نشده اسپاتیفای پیدا شد"
NewV2 = "نسخه اسپاتیفای {0} شما هنوز آزمایش نشده است، در حال حاضر یک نسخه پایدار {1} است"
NewV3 = "آیا می خواهید با نسخه {0} ادامه دهید (خطا ممکن است رخ دهد)؟ [Y/N]"
Recom = "آیا می خواهید نسخه پیشنهادی {0} را نصب کنید؟ [Y/N]"
DelNew = "حذف نصب اسپاتیفای تست نشده..."
DownSpoti = "دانلود و نصب اسپاتیفای"
DownSpoti2 = "لطفا صبر کنید..."
PodcatsOff = "خاموش کردن پادکست"
+5 -1
View File
@@ -16,13 +16,17 @@
MsSpoti3 = "Spotifyn Microsoft Store -version automaattinen poistaminen..."
MsSpoti4 = "Poistetaan Spotifyn Microsoft Store -versiota."
Prem = "Muunnos premium-tiliin..."
OldV = "Spotifysta löytyi vanhentunut versio"
OldV2 = "Spotify {0} -versiosi on vanhentunut, on suositeltavaa päivittää versioon {1}"
OldV3 = "Haluatko päivittää? [Y/N]"
AutoUpd = "Automaattinen päivitys suositeltuun versioon"
DelOrOver = "Haluatko poistaa nykyisen version {0} vai asentaa sen päälle? Y [Poista asennus] / N [Asenna edellisen päälle]"
DelSpotify = "Poistetaan Spotifyta..."
DelOld = "Poistetaan vanhaa Spotify versiota..."
NewV = "Spotifyn ei-tuettu versio löytyi"
NewV2 = "Spotify-versiotasi {0} ei ole vielä testattu, tällä hetkellä versio {1} on vakaa"
NewV3 = "Haluatko jatkaa versiolla {0} (bugit sekä virheet mahdollista)? [Y/N]"
Recom = "Haluatko asentaa suositellun {0} version? [Y/N]"
DelNew = "Poistetaan testaamattoman Spotify versiota..."
DownSpoti = "Ladataan ja asennetaan spotify:tä"
DownSpoti2 = "Odota hetki..."
PodcatsOff = "podcastit poissa päältä"
+5 -1
View File
@@ -16,13 +16,17 @@
MsSpoti3 = "Awtomatikong i-uninstall ang Spotify na MS..."
MsSpoti4 = "Ina-uninstall ang Spotify MS..."
Prem = "Pagbabago para sa premium account..."
OldV = "Natagpuan ang lumang bersyon ng Spotify"
OldV2 = "Ang iyong bersyon ng Spotify na {0} ay luma na, ito ay inirerekomenda na i-upgrade sa {1}"
OldV3 = "Gusto mo ba mag-update? [Y/N]"
AutoUpd = "Awtomatikong i-update sa inirerekumendang bersyon"
DelOrOver = "Gusto mo bang i-uninstall ang kasalukuyang bersyon ng {0} o mag-install ng panibagong bersyon? Y [I-uninstall] / N [Mag-install ng Panibagong Bersyon]"
DelSpotify = "Ina-uninstall ang Spotify..."
DelOld = "Tinatanggal ang lumang Spotify..."
NewV = "Natagpuan ang hindi suportadong bersyon ng Spotify"
NewV2 = "Ang iyong bersyon ng Spotify {0} ay hindi pa nasusubukan, kasalukuyang ito ay nasa stable na bersyon na {1}"
NewV3 = "Gusto mo bang magpatuloy sa {0} bersyon (mayroong mga error)? [Y/N]"
Recom = "Gusto mo bang mag-install ng inirerekumendang {0} na bersyon? [Y/N]"
DelNew = "Ina-uninstall ang hindi pa nasusubukan na Spotify..."
DownSpoti = "Nagda-download at nag-i-install ng Spotify"
DownSpoti2 = "Mangyaring maghintay..."
PodcatsOff = "I-off ang mga Podcast"
+5 -1
View File
@@ -16,13 +16,17 @@
MsSpoti3 = "Désinstallation automatique de Spotify MS..."
MsSpoti4 = "Désinstallation de Spotify MS..."
Prem = "Modification pour compte premium..."
OldV = "Ancienne version de Spotify trouvée"
OldV2 = "Votre version Spotify {0} est obsolète, il est recommandé de mettre à jour vers la {1}"
OldV3 = "Voulez-vous faire la mise à jour ? [Y/N]"
AutoUpd = "Mise à jour automatique vers la version recommandée"
DelOrOver = "Voulez-vous désinstaller la version actuelle {0} ou installer par dessus ? Y [Désinstaller] / N [Installer par dessus]"
DelSpotify = "Désinstallation de Spotify..."
DelOld = "Désinstallation de l'ancienne version de Spotify..."
NewV = "Version non supportée de Spotify trouvée"
NewV2 = "Votre version {0} de Spotify n'a pas encore été testée, actuellement {1} est une version stable"
NewV3 = "Voulez-vous continuer avec la version {0} (erreurs possibles) ? [Y/N]"
Recom = "Voulez-vous installer la version {0} recommandée ? [Y/N]"
DelNew = "Désinstallation d'une version de Spotify non testée..."
DownSpoti = "Téléchargement et installation de Spotify"
DownSpoti2 = "Veuillez patienter..."
PodcatsOff = "Podcasts désactivés"
+5 -1
View File
@@ -16,13 +16,17 @@
MsSpoti3 = "Spotify MS अपने आप अनइंस्टॉल हो रहा है..."
MsSpoti4 = "Spotify MS अनइंस्टॉल किया जा रहा है..."
Prem = "प्रीमियम अकाउंट के लिए मॉडिफिकेशन किया जा रहा है..."
OldV = "Spotify का पुराना वर्जन मिला"
OldV2 = "आपका Spotify वर्जन ({0}) पुराना है। लेटेस्ट वर्जन {1} है"
OldV3 = "क्या आप अपडेट करना चाहते हैं? [Y/N]"
AutoUpd = "सुझाए गए वर्जन पर ऑटोमेटिक अपडेट"
DelOrOver = "मौजूदा वर्जन ({0}) को हटाएँ या इसी पर इंस्टॉल करें? Y [हटाएँ] / N [इसी पर इंस्टॉल करें]"
DelSpotify = "Spotify अनइंस्टॉल किया जा रहा है..."
DelOld = "पुराना Spotify अनइंस्टॉल किया जा रहा है..."
NewV = "Spotify का अनसपोर्टेड वर्जन मिला"
NewV2 = "आपके Spotify वर्जन ({0}) को टेस्ट नहीं किया गया है। SpotX के लिए स्टेबल वर्जन {1} है"
NewV3 = "क्या आप वर्जन {0} के साथ जारी रखना चाहते हैं (इसमें समस्याएं आ सकती हैं)? [Y/N]"
Recom = "क्या आप लेटेस्ट वर्जन {0} इंस्टॉल करना चाहते हैं? [Y/N]"
DelNew = "टेस्ट न किए गए Spotify को अनइंस्टॉल किया जा रहा है..."
DownSpoti = "Spotify डाउनलोड और इंस्टॉल किया जा रहा है"
DownSpoti2 = "कृपया प्रतीक्षा करें..."
PodcatsOff = "पॉडकास्ट बंद"
+5 -1
View File
@@ -16,13 +16,17 @@
MsSpoti3 = "A Spotify MS automatikus eltávolítása..."
MsSpoti4 = "Spotify MS eltávolítása..."
Prem = "Módosítás a prémium fiókhoz..."
OldV = "A Spotify elavult verziója van telepítve"
OldV2 = "A Spotify {0} verziója elavult, ajánlott frissíteni a {1} verzióra."
OldV3 = "Szeretné frissíteni ? [Y/N]"
AutoUpd = "Automatikus frissítés a javasolt verzióra"
DelOrOver = "A {0} jelenlegi verzióját szeretné eltávolítani vagy telepíteni rá? Y [Eltávolítás] / N [Felül telepítés]"
DelSpotify = "Spotify eltávolítása..."
DelOld = "A régi Spotify eltávolítása..."
NewV = "A Spotify nem támogatott verziója van telepítve"
NewV2 = "A Spotify {0} verzióját még nem teszteltük, jelenlegi stabil verzió: {1}. "
NewV3 = "Folytatni szeretné a {0} verzióval (hibák léphetnek fel) ? [Y/N]"
Recom = "Szeretné telepíteni a {0} ajánlott verziót? [Y/N]"
DelNew = "Nem tesztelt Spotify eltávolítása..."
DownSpoti = "A Spotify letöltése és telepítése"
DownSpoti2 = "Kérem várjon..."
PodcatsOff = "Podcastok kikapcsolása"
+5 -1
View File
@@ -16,13 +16,17 @@
MsSpoti3 = "Menghapus Spotify MS secara otomatis..."
MsSpoti4 = "Menghapus Spotify MS..."
Prem = "Modifikasi untuk akun premium..."
OldV = "Versi lama Spotify ditemukan"
OldV2 = "Versi Spotify {0} Anda sudah usang, disarankan untuk upgrade ke versi {1}"
OldV3 = "Ingin mengupdate? [Y/N]"
AutoUpd = "Pembaruan otomatis ke versi yang direkomendasikan"
DelOrOver = "Apakah Anda ingin menghapus versi {0} saat ini atau menimpanya? Y [Uninstall] / N [Timpa]"
DelSpotify = "Menghapus Spotify..."
DelOld = "Menghapus Spotify lama..."
NewV = "Ditemukan versi Spotify yang tidak didukung"
NewV2 = "Versi Spotify {0} Anda belum diuji, saat ini adalah versi {1} yang stabil"
NewV3 = "Ingin melanjutkan dengan versi {0} (mungkin ada kesalahan)? [Y/N]"
Recom = "Ingin menginstal versi {0} yang direkomendasikan? [Y/N]"
DelNew = "Menghapus Spotify yang belum diuji..."
DownSpoti = "Mengunduh dan menginstal Spotify"
DownSpoti2 = "Tunggu sebentar..."
PodcatsOff = "Podcast Nonaktif"
+5 -1
View File
@@ -16,13 +16,17 @@
MsSpoti3 = "Disinstallazione automatica di Spotify MS..."
MsSpoti4 = "Disinstallazione di Spotify MS..."
Prem = "Modifica per account premium..."
OldV = "Trovata vecchia versione di Spotify"
OldV2 = "La tua versione di Spotify {0} è vecchia, la versione attuale più recente è — {1}"
OldV3 = "Vorresti aggiornare ? [Y/N]"
AutoUpd = "Aggiornamento automatico alla versione consigliata"
DelOrOver = "Rimuovere la versione attuale {0} o sovrascriverla? Y [Rimuovi] / N [Sovrascrivi]"
DelSpotify = "Disinstallando Spotify..."
DelOld = "Disinstallando vecchia versione di Spotify..."
NewV = "Trovata versione di Spotify non supportata"
NewV2 = "La tua versione {0} di Spotify non è stata testata. La versione stabile per SpotX è {1}"
NewV3 = "Continuare con {0} (possibili errori) ? [Y/N]"
Recom = "Installare l'ultima versione {0} ? [Y/N]"
DelNew = "Disinstallando una versione non testata di Spotify..."
DownSpoti = "Scaricando ed installando Spotify"
DownSpoti2 = "Attendere..."
PodcatsOff = "Podcasts OFF"
+5 -1
View File
@@ -16,13 +16,17 @@
MsSpoti3 = "Spotify MS 版を自動でアンインストール中..."
MsSpoti4 = "Spotify MS 版をアンインストール中..."
Prem = "Premium アカウント用の修正..."
OldV = "古い Spotify を使用中です"
OldV2 = "お使いの Spotify のバージョン {0} は古いため以下へのアップグレードを推奨 {1}"
OldV3 = "更新しますか ? [Y/N]"
AutoUpd = "推奨するバージョンに自動更新"
DelOrOver = "既存のバージョン {0} をアンインストール、または上書しますか ? Y [アンインストール] / N [上書き]"
DelSpotify = "Spotify をアンインストール中..."
DelOld = "古い Spotify をアンインストール中..."
NewV = "未対応の Spotify のバージョンです"
NewV2 = "お使いの Spotify のバージョン {0} はまだ検証しておらず現在の安定バージョンは {1}"
NewV3 = "バージョン {0} のままぞこうしますか (エラーの可能性) ? [Y/N]"
Recom = "推奨するバージョン {0} をインストールしますか ? [Y/N]"
DelNew = "未検証版の Spotify をアンインストール..."
DownSpoti = "Spotify をダウンロードしインストール"
DownSpoti2 = "お待ちください..."
PodcatsOff = "ポッドキャスト 有効"
+5 -1
View File
@@ -16,13 +16,17 @@
MsSpoti3 = "ავტუმატურად იშლება Spotify MS..."
MsSpoti4 = "იშლება Spotify MS..."
Prem = "მოდიფიკაცია პრემიუმ აკკოუნტის..."
OldV = "მოიძებნა მოძველებული Spotify-ს ვერსია"
OldV2 = "თქვენი Spotify-ს {0} ვერსია არის მოძველებული, რეკომენდურია მისი აპგრეიდობა ამ ვერსიაზე {1}"
OldV3 = "გინდა განაახლოთ ? [Y/N]"
AutoUpd = "აუტომატიკური აპდაიტი რეკომენდებულ ვერსიაზე"
DelOrOver = "გინდა წაშალო ეხლანდელი ვერსია: {0} თუ თავიდან ჩაწერა? Y [წაშლა] / N [თავიდან ჩაწერა]"
DelSpotify = "Spotify იშლება..."
DelOld = "ძველი Spotify იშლება..."
NewV = "არა მხარდაჯერილი Spotify-ს ვერსია არის მოწებნილი"
NewV2 = "თქვენი Spotify-ს {0} ვერსია ჯერ არ არის დატესტილი, ამჟამად არის სტაბილური {1} ვერსია"
NewV3 = "გინდათ რომ გააგრძელოთ {0} ვერსიაზე (შეცდომები შესაძლებელია) ? [Y/N]"
Recom = "გინდათ რო ჩაიწეროთ რეკომენდირებული {0} ვერსია ? [Y/N]"
DelNew = "იშლება არა ტესტირებულ Spotify..."
DownSpoti = "ვტვირთავთ და ვიწერთ Spotify-ს"
DownSpoti2 = "გთხოვთ დაიცადოთ..."
PodcatsOff = "პოდკასტები გათიშული"
+5 -1
View File
@@ -16,13 +16,17 @@
MsSpoti3 = "Spotify Microsoft Store 버전을 자동으로 제거하는 중..."
MsSpoti4 = "Spotify Microsoft Store 버전을 제거하는 중..."
Prem = "프리미엄 계정을 위한 모드..."
OldV = "Spotify 구버전을 감지했습니다"
OldV2 = "Spotify {0} 버전은 오래되었습니다, {1} 버전으로 업데이트하시는 것을 추천합니다"
OldV3 = "업데이트를 진행할까요? [Y/N]"
AutoUpd = "권장 버전으로 자동 업데이트할까요?"
DelOrOver = "설치된 {0} 버전을 제거할까요? 아니면 덮어쓰고 설치할까요? Y [제거] / N [덮어쓰고 설치]"
DelSpotify = "Spotify를 제거하는 중..."
DelOld = "구버전의 Spotify를 제거하는 중..."
NewV = "지원되지 않는 버전의 Spotify가 감지되었습니다"
NewV2 = "Spotify {0} 버전은 아직 테스트되지 않았습니다, 현재 최신 안정 버전은 {1} 입니다"
NewV3 = "{0} 버전으로 진행할까요? (오류가 발생할 수 있음) [Y/N]"
Recom = "추천하는 {0} 버전을 설치할까요? [Y/N]"
DelNew = "테스트되지 않은 Spotify를 제거하는 중..."
DownSpoti = "Spotify를 다운로드하고 설치하는 중"
DownSpoti2 = "잠시만 기다려 주세요..."
PodcatsOff = "팟캐스트 끄기"
+5 -1
View File
@@ -16,13 +16,17 @@
MsSpoti3 = "Automātiski izdzēš Spotify MS..."
MsSpoti4 = "Izdzēš Spotify MS..."
Prem = "Modifikācija premium kontam..."
OldV = "Spotify vecā versija bija konstatēta."
OldV2 = "Tava Spotify {0} versija ir novecojusi, bet ir ieteicams atjaunot uz {1} versiju"
OldV3 = "Vēlies atjaunot? [Y/N]"
AutoUpd = "Automātiski atjauno uz ieteicamo versiju"
DelOrOver = "Vai vēlies izdzēst līdzšinejo {0} versiju vai instalēt ieteicamo versiju virs vecās? Y [Izdzēst] / N [Instalēt Virs]"
DelSpotify = "Izdzēšam Spotify..."
DelOld = "Izdzēš veco Spotify..."
NewV = "Atrasta neatbalstītā Spotify versija"
NewV2 = "Tava Spotify {0} versija nav tikusi testēta, šobrīd stabilākā ir {1} versija"
NewV3 = "Vai vēlies turpināt ar {0} versiju? (ir iespējamas kļūdas) [Y/N]"
Recom = "Vai vēlies instalēt ieteikto {0} versiju? [Y/N]"
DelNew = "Izdzēšam netestēto Spotify..."
DownSpoti = "Lejuplādējam un instalējam Spotify"
DownSpoti2 = "Lūdzu nedaudz uzgaidiet..."
PodcatsOff = "Raidieraksti ir izslēgti"
+5 -1
View File
@@ -16,13 +16,17 @@
MsSpoti3 = "Automatyczne odinstalowywanie Spotify z MS..."
MsSpoti4 = "Odinstalowywanie Spotify MS..."
Prem = "Modyfikacja dla konta premium..."
OldV = "Znaleziono przestarzałą wersję Spotify"
OldV2 = "Twoja wersja Spotify {0} jest przestarzała, zalecana jest aktualizacja do wersji {1}"
OldV3 = "Czy chcesz ją pobrać? [Y/N]"
AutoUpd = "Automatyczna aktualizacja do zalecanej wersji"
DelOrOver = "Chcesz odinstalować aktualną wersję {0}, czy pobrać nową? Y [Odinstaluj] / N [Pobierz Nową]"
DelSpotify = "Odinstalowywanie Spotify..."
DelOld = "Odinstalowywanie nieaktualnej wersji Spotify..."
NewV = "Wykryto niewspieraną wersję Spotify"
NewV2 = "Twoja wersja {0} nie została jeszcze przetestowana, obecna jest to stabilna wersja {1} "
NewV3 = "Czy chcesz kontynuować z wersją {0} (możliwe błędy)? [Y/N]"
Recom = "Czy chcesz pobrać zalecaną wersję {0}? [Y/N]"
DelNew = "Odinstalowywanie nieprzetestowanej wersji Spotify..."
DownSpoti = "Pobieranie i instalowanie Spotify"
DownSpoti2 = "Proszę czekać..."
PodcatsOff = "Podcasty wyłączone"
+5 -1
View File
@@ -16,13 +16,17 @@
MsSpoti3 = "Desinstalação automática do Spotify da MS..."
MsSpoti4 = "Desinstalando Spotify da MS..."
Prem = "Modificação para conta Premium..."
OldV = "Encontrada uma versão desatualizada do Spotify"
OldV2 = "A sua versão {0} do Spotify está desatualizada, é recomendado atualizar para {1}"
OldV3 = "Gostaria de atualizar? [Y/N]"
AutoUpd = "Atualização automática para a versão recomendada"
DelOrOver = "Gostaria de desinstalar a versão atual {0} ou substituir a instalação atual? Y [Desinstalar] / N [Substituir]"
DelSpotify = "Desinstalando Spotify..."
DelOld = "Desinstalando a versão antiga do Spotify..."
NewV = "Encontrada uma versão não suportada do Spotify"
NewV2 = "A sua versão do Spotify {0} não foi testada ainda, no momento, há uma versão estável {1}"
NewV3 = "Gostaria de continuar com a versão {0} (possíveis erros) ? [Y/N]"
Recom = "Gostaria de instalar a versão recomendada {0}? [Y/N]"
DelNew = "Desinstalando versão não testada do Spotify..."
DownSpoti = "Baixando e instalando o Spotify"
DownSpoti2 = "Aguarde..."
PodcatsOff = "Podcasts desativado"
+5 -1
View File
@@ -16,13 +16,17 @@
MsSpoti3 = "Dezinstalare automată a Spotify MS..."
MsSpoti4 = "Se dezinstaleaza Spotify MS..."
Prem = "Modificare pentru contul premium..."
OldV = "Am găsit o versiune învechită a Spotify"
OldV2 = "Versiunea dvs. de Spotify {0} este învechită, se recomandă actualizarea la {1}"
OldV3 = "Doriți să faceți o actualizare ? [Y/N]"
AutoUpd = "Actualizare automată la versiunea recomandată"
DelOrOver = "Doriți să dezinstalați versiunea curentă de {0} sau să o instalați peste ea? Y [Dezinstalare] / N [Instalare peste]"
DelSpotify = "Se dezinstalează Spotify..."
DelOld = "Dezinstalarea vechiului Spotify..."
NewV = "A fost găsită o versiune nesuportată de Spotify"
NewV2 = "Versiunea dvs. de Spotify {0} nu a fost încă testată, în prezent este o versiune stabilă {1}"
NewV3 = "Doriți să continuați cu versiunea {0} (sunt posibile erori)? [Y/N]"
Recom = "Doriți să instalați versiunea recomandată {0}? [Y/N]"
DelNew = "Se dezinstalează Spotify-ul netestat..."
DownSpoti = "Se descarcă și instalează Spotify"
DownSpoti2 = "Vă rugăm să așteptați..."
PodcatsOff = "Podcasturi dezactivate"
+5 -1
View File
@@ -16,13 +16,17 @@
MsSpoti3 = "Автоматическое удаление Spotify MS..."
MsSpoti4 = "Удаление Spotify MS..."
Prem = "Модификация для премиум аккаунта..."
OldV = "Найдена устаревшая версия Spotify"
OldV2 = "Ваша версия Spotify ({0}) устарела. Текущая актуальная версия — {1}"
OldV3 = "Обновить ? [Y/N]"
AutoUpd = "Автоматическое обновление до рекомендуемой версии"
DelOrOver = "Удалить текущую версию ({0}) или установить поверх? Y [Удалить] / N [Поверх]"
DelSpotify = "Удаление Spotify..."
DelOld = "Удаление устаревшего Spotify..."
NewV = "Найдена неподдерживаемая версия Spotify"
NewV2 = "Ваша версия Spotify ({0}) не тестировалась. Стабильная версия для SpotX — {1}"
NewV3 = "Продолжить с {0} (возможны ошибки) ? [Y/N]"
Recom = "Установить последнюю версию {0} ? [Y/N]"
DelNew = "Удаление неподдерживаемого Spotify..."
DownSpoti = "Загружаю и устанавливаю Spotify"
DownSpoti2 = "Пожалуйста подождите..."
PodcatsOff = "Подкасты отключены"
+5 -1
View File
@@ -16,13 +16,17 @@
MsSpoti3 = "Automaticky odinštalovávam Spotify z Microsoft Store..."
MsSpoti4 = "Odinštalovávam Spotify z Microsoft Store..."
Prem = "Úprava kvôli prémiovému účtu..."
OldV = "Nájdená stará verzia Spotify"
OldV2 = "Tvoja Spotify {0} verzia je stará, je odporúčané aktualizovať na verziu {1}"
OldV3 = "Chcete aktualizovať ? [Y/N]"
AutoUpd = "Automatická aktualizácia na odporúčanú verziu"
DelOrOver = "Chcete odinštalovať terajšiu verziu {0} alebo inštalovať novšiu na terajšiu(ostanú niektoré súbory)? Y [Odinštaluj] / N [Inštaluj novšiu na terajšiu]"
DelSpotify = "Odinštalovávam Spotify..."
DelOld = "Odinštalovávam staré Spotify..."
NewV = "Nepodporovaná verzia Spotify bola nájdená"
NewV2 = "Tvoja Spotify {0} verzia zatiaľ nebola testovaná, teraz je stabilná {1} verzia"
NewV3 = "Chcete pokračovať s {0} verziou (môžu nastať chyby) ? [Y/N]"
Recom = "Chcete nainštalovať odporúčanú {0} verziu ? [Y/N]"
DelNew = "Odinštalovávam netestovanú verziu Spotify..."
DownSpoti = "Sťahujem a inštalujem Spotify"
DownSpoti2 = "Prosím čakajte..."
PodcatsOff = "Vypni podcasty"
+5 -1
View File
@@ -16,13 +16,17 @@
MsSpoti3 = "Automatska deinstalacija Spotify MS..."
MsSpoti4 = "Deinstalacija Spotify MS..."
Prem = "Modifikacija za premijum nalog..."
OldV = "Pronađena je zastarela verzija Spotify-ja"
OldV2 = "Vaša verzija Spotify-ja {0} je zastarela, trenutno najnovija verzija je {1}"
OldV3 = "Želite li da ažurirate? [Y/N]"
AutoUpd = "Automatsko ažuriranje na preporučenu verziju"
DelOrOver = "Želite li da deinstalirate trenutnu verziju {0} ili da instalirate preko nje? Y [Deinstaliraj] / N [Preko]"
DelSpotify = "Deinstalacija Spotify-ja..."
DelOld = "Deinstalacija starog Spotify-ja..."
NewV = "Pronađena je nepodržana verzija Spotify-ja"
NewV2 = "Vaša verzija Spotify-ja {0} još nije testirana, trenutna stabilna verzija je {1}"
NewV3 = "Želite li da nastavite sa verzijom {0} (moguće su greške)? [Y/N]"
Recom = "Želite li da instalirate poslednju verziju {0}? [Y/N]"
DelNew = "Deinstalacija netestiranog Spotify-ja..."
DownSpoti = "Preuzimanje i instalacija Spotify-ja"
DownSpoti2 = "Molimo sačekajte..."
PodcatsOff = "Isključi podkaste"
+5 -1
View File
@@ -16,13 +16,17 @@
MsSpoti3 = "Аутоматска деинсталација Spotify MS..."
MsSpoti4 = "Деинсталација Spotify MS..."
Prem = "Модификација за премијум налог..."
OldV = "Пронађена је застарела верзија Spotify-ја"
OldV2 = "Ваша верзија Spotify-ја {0} је застарела, тренутно најновија верзија је {1}"
OldV3 = "Желите ли да ажурирате? [Y/N]"
AutoUpd = "Аутоматско ажурирање на препоручену верзију"
DelOrOver = "Желите ли да деинсталирате тренутну верзију {0} или да инсталирате преко ње? Y [Деинсталирај] / N [Преко]"
DelSpotify = "Деинсталација Spotify-ја..."
DelOld = "Деинсталација старог Spotify-ја..."
NewV = "Пронађена је неподржана верзија Spotify-ја"
NewV2 = "Ваша верзија Spotify-ја {0} још није тестирана, тренутна стабилна верзија је {1}"
NewV3 = "Желите ли да наставите са верзијом {0} (могуће су грешке)? [Y/N]"
Recom = "Желите ли да инсталирате последњу верзију {0}? [Y/N]"
DelNew = "Деинсталација нетестираног Spotify-ја..."
DownSpoti = "Преузимање и инсталација Spotify-ја"
DownSpoti2 = "Молимо сачекајте..."
PodcatsOff = "Искључи подкасте"
+5 -1
View File
@@ -16,13 +16,17 @@
MsSpoti3 = "Avinstallerar Spotify MS automatiskt..."
MsSpoti4 = "Avinstallerar Spotify MS..."
Prem = "Modifiering för premiumkonto..."
OldV = "Hittade en föråldrad version av Spotify"
OldV2 = "Din Spotify {0} version är föråldrad, det rekommenderas att uppgradera till {1}"
OldV3 = "Vill du uppdatera? [Y/N]"
AutoUpd = "Automatisk uppdatering till den rekommenderade versionen"
DelOrOver = "Vill du avinstallera den aktuella versionen av {0} eller installera över den? Y [Avinstallera] / N [Installera över]"
DelSpotify = "Avinstallerar Spotify..."
DelOld = "Avinstallerar gamla Spotify..."
NewV = "En version av Spotify som inte stöds hittades"
NewV2 = "Din Spotify {0} version har inte testats ännu, för närvarande är den en stabil {1} version"
NewV3 = "Vill du fortsätta med {0} version (fel möjliga)? [Y/N]"
Recom = "Vill du installera den rekommenderade versionen av {0}? [Y/N]"
DelNew = "Avinstallerar en oprövad Spotify..."
DownSpoti = "Ladda ner och installerar Spotify"
DownSpoti2 = "Vänta..."
PodcatsOff = "Podcasts av"
+5 -1
View File
@@ -16,13 +16,17 @@
MsSpoti3 = "MS Spotifyயை தானாக நிறுவல் நீக்குகிறது..."
MsSpoti4 = "MS Spotifyயை நிறுவல் நீக்குகிறது..."
Prem = "Premium கணக்கிற்கான மாற்றம்..."
OldV = "Spotifyயின் காலாவதியான பதிப்பு கண்டறியப்பட்டது"
OldV2 = "உங்கள் Spotify {0} பதிப்பு காலாவதியானது, {1}க்கு மேம்படுத்த பரிந்துரைக்கப்படுகிறது"
OldV3 = "புதுப்பிக்க வேண்டுமா? [Y/N]"
AutoUpd = "பரிந்துரைக்கப்பட்ட பதிப்பிற்கான தானியங்கி புதுப்பிப்பு"
DelOrOver = "{0}யின் தற்போதைய பதிப்பை நிறுவல்நீக்கம் செய்ய விரும்புகிறீர்களா அல்லது நீங்கள் அதன் மீதே நிறுவ விரும்புகிறீர்கள்? Y [Uninstall] / N [Install Over]"
DelSpotify = "Spotifyயை நிறுவல் நீக்குகிறது..."
DelOld = "பழைய Spotifyயை நிறுவல் நீக்குகிறது..."
NewV = "Spotifyயின் ஆதரிக்கப்படாத பதிப்பு கண்டறியப்பட்டது"
NewV2 = "உங்கள் Spotify {0} பதிப்பு இன்னும் சோதிக்கப்படவில்லை, தற்போது {1} பதிப்பு நிலையானது"
NewV3 = "{0} பதிப்பைத் தொடர விரும்புகிறீர்களா (பிழைகள் சாத்தியம்) ? [Y/N]"
Recom = "பரிந்துரைக்கப்பட்ட {0} பதிப்பை நிறுவ விரும்புகிறீர்களா ? [Y/N]"
DelNew = "சோதிக்கப்படாத Spotifyயை நிறுவல் நீக்குகிறது..."
DownSpoti = "Spotifyயைப் பதிவிறக்கி நிறுவுகிறது"
DownSpoti2 = "தயவுசெய்து காத்திருங்கள்..."
PodcatsOff = "Off Podcasts"
+5 -1
View File
@@ -16,13 +16,17 @@
MsSpoti3 = "Spotify MS otomatik olarak kaldırlıyor..."
MsSpoti4 = "Spotify MS kaldırılıyor..."
Prem = "Premium hesap için modifikasyon ..."
OldV = "Spotify'ın eski bir sürümü bulundu"
OldV2 = "Spotify'ın {0} sürümü güncel değil, {1} sürümüne yükseltmeniz önerilir"
OldV3 = "Güncelleme yapılsın mı? [Y/N]"
AutoUpd = "Önerilen sürüme otomatik olarak güncelle"
DelOrOver = "Mevcut {0} sürümünü kaldırmak mı yoksa üzerine yüklemek mi istiyorsunuz? Y [Kaldır] / N [Üzerine Yükle]"
DelSpotify = "Spotify kaldırılıyor..."
DelOld = "Eski Spotify kaldırılıyor..."
NewV = "Desteklenmeyen Spotify sürümü bulundu"
NewV2 = "Spotify {0} sürümü henüz test edilmedi, şu anda kararlı olan {1} sürümüdür"
NewV3 = "{0} sürümü ile devam etmek istiyor musunuz (hatalar olabilir) ? [Y/N]"
Recom = "Önerilen {0} sürümünü yüklemek istiyor musunuz? [Y/N]"
DelNew = "Test edilmemiş Spotify kaldırılıyor..."
DownSpoti = "Spotify indiriliyor ve kuruluyor"
DownSpoti2 = "Lütfen bekleyin..."
PodcatsOff = "Podcastler Kapalı"
@@ -16,13 +16,17 @@
MsSpoti3 = "Автоматичне видалення Spotify MS..."
MsSpoti4 = "Видалення Spotify MS..."
Prem = "Модифікація для преміумкористувачів..."
OldV = "Знайдена застаріла версія Spotify"
OldV2 = "Ваша версія Spotify {0} застаріла, її рекомендовано оновити до {1}"
OldV3 = "Хочете оновитися ? [Y/N]"
AutoUpd = "Автоматичне оновлення на рекомендовану версію"
DelOrOver = "Хочете видалити наявну версію {0} або встановити нову поряд? Y [Видалити] / N [Встановити поряд]"
DelSpotify = "Видалення Spotify..."
DelOld = "Видалення старої версії Spotify..."
NewV = "Непідтримувана версія Spotify знайдена"
NewV2 = "Ваша версія Spotify {0} ще не була протестована, стабільна версія наразі {1}"
NewV3 = "Чи хочете продовжити на версії {0} (можливі помилки) ? [Y/N]"
Recom = "Чи хочете встановити рекомендовану версію {0} ? [Y/N]"
DelNew = "Видалення непротестованої версії Spotify..."
DownSpoti = "Завантаження та встановлення Spotify"
DownSpoti2 = "Зачекайте, будь-ласка..."
PodcatsOff = "Вимкнути подкасти"
+5 -1
View File
@@ -16,13 +16,17 @@
MsSpoti3 = "Đang tự động gỡ Spotify MS..."
MsSpoti4 = "Đang gỡ Spotify MS..."
Prem = "Chỉnh sửa dành cho tài khoản premium..."
OldV = "Phát hiện Spotify phiên bản cũ"
OldV2 = "Phiên bản Spotify {0} của bạn đã cũ, khuyến khích nâng cấp lên {1}"
OldV3 = "Bạn có muốn cập nhật không ? [Y/N]"
AutoUpd = "Tự động cập nhật lên phiên bản được đề xuất"
DelOrOver = "Bạn muốn gỡ phiên bản hiện tại {0} hay cài đè lên? Y [Gỡ] / N [Cài đè lên]"
DelSpotify = "Đang gỡ Spotify..."
DelOld = "Đang gỡ Spotify bản cũ..."
NewV = "Phát hiện phiên bản không được hỗ trợ"
NewV2 = "Phiên bản Spotify {0} chưa được kiểm thử, hiện tại bản ổn định là {1}"
NewV3 = "Bạn có muốn tiếp tục với phiên bản {0} (có thể bị lỗi) ? [Y/N]"
Recom = "Bạn có muốn cài đặt phiên bản được đề xuất: {0} ? [Y/N]"
DelNew = "Đang gỡ phiên bản Spotify chưa được kiểm thử..."
DownSpoti = "Đang tải và cài Spotify"
DownSpoti2 = "Vui lòng chờ..."
PodcatsOff = "Tắt Podcasts"
+5 -1
View File
@@ -16,13 +16,17 @@
MsSpoti3 = "自動解除安裝 Spotify 的微軟商店版本..."
MsSpoti4 = "正在解除安裝 Spotify 的微軟商店版本..."
Prem = "針對 Premium 帳號的修改..."
OldV = "發現過時的 Spotify 版本"
OldV2 = "您的Spotify {0} 版本已過時,建議更新到 {1}"
OldV3 = "需要更新嗎? [Y/N]"
AutoUpd = "自動更新到推薦版本"
DelOrOver = "是否要解除安裝目前版本 {0} 或者覆蓋安裝? Y [解除安裝] / N [覆蓋安裝]"
DelSpotify = "正在解除安裝 Spotify..."
DelOld = "解除安裝舊版 Spotify..."
NewV = "偵測到不支援的 Spotify 版本"
NewV2 = "您的 Spotify {0} 版本還沒有經過測試,目前穩定的版本是 {1} "
NewV3 = "您想要繼續使用 {0} 版本嗎 (可能會出現錯誤)? [Y/N]"
Recom = "您想安裝推薦的 {0} 版本嗎? [Y/N]"
DelNew = "解除安裝未經測試的 Spotify 版本..."
DownSpoti = "下載並安裝 Spotify"
DownSpoti2 = "請稍候..."
PodcatsOff = "關閉 Podcasts"
+5 -1
View File
@@ -16,13 +16,17 @@
MsSpoti3 = "自动卸载 Spotify 的微软商店版本..."
MsSpoti4 = "正在卸载 Spotify 的微软商店版本..."
Prem = "正在进行针对 Premium 账户的修改..."
OldV = "发现已过时的 Spotify 版本"
OldV2 = "您的 Spotify {0} 版本已过时,建议更新到 {1}"
OldV3 = "是否需要更新? [Y/N]"
AutoUpd = "自动更新到推荐版本"
DelOrOver = "是否要卸载当前版本 {0} 或者覆盖安装? Y [卸载] / N [覆盖安装]"
DelSpotify = "正在卸载 Spotify..."
DelOld = "正在卸载旧的 Spotify..."
NewV = "检测到 Spotify 版本不受到支持"
NewV2 = "您的 Spotify {0} 版本没有经过测试,目前的推荐的版本是 {1}"
NewV3 = "您想要继续使用 {0} 版本吗 (可能会出现错误)? [Y/N]"
Recom = "您想安装推荐的 {0} 版本吗 ? [Y/N]"
DelNew = "正在卸载未经测试的 Spotify 版本..."
DownSpoti = "下载并安装 Spotify"
DownSpoti2 = "请稍等..."
PodcatsOff = "关闭播客"