From d28b01fde0630013b7ef7e9376d945beb25fe4b9 Mon Sep 17 00:00:00 2001 From: amd64fox <62529699+amd64fox@users.noreply.github.com> Date: Tue, 13 Jun 2023 04:15:14 +0300 Subject: [PATCH] Improve search algorithm - multithreading replaced with asynchrony - minor fixes in the code --- LoaderSpot.py | 238 +++++++++------- README.md | 2 +- archive/LoaderSpot.ps1 | 45 --- archive/LoaderSpot_Gui.ps1 | 514 ---------------------------------- archive/LoaderSpot_Gui_Ru.ps1 | 508 --------------------------------- 5 files changed, 132 insertions(+), 1175 deletions(-) delete mode 100644 archive/LoaderSpot.ps1 delete mode 100644 archive/LoaderSpot_Gui.ps1 delete mode 100644 archive/LoaderSpot_Gui_Ru.ps1 diff --git a/LoaderSpot.py b/LoaderSpot.py index 27f04b0..3747efc 100644 --- a/LoaderSpot.py +++ b/LoaderSpot.py @@ -1,129 +1,153 @@ import re -import requests -from concurrent.futures import ThreadPoolExecutor +import aiohttp +import asyncio +from tqdm import tqdm -def check_url(url, platform_name): +async def check_url(session, url, platform_name): try: - response = requests.get(url) - if response.status_code == 200: - if platform_name: - return response.url, platform_name - else: - return response.url - else: - print(f"\nInvalid link: {url}") - response.close() - except requests.exceptions.RequestException: + async with session.get(url) as response: + if response.status == 200: + if platform_name: + return response.url, platform_name + else: + return response.url + except aiohttp.ClientError: pass return None -version_spoti = "" -while not re.match(r"^\d+\.\d+\.\d+\.\d+\.g[0-9a-f]{8}$", version_spoti): - version_spoti = input("Spotify version, for example 1.1.68.632.g2b11de83: ") +async def main(version_spoti=""): + if not version_spoti: + while not re.match(r"^\d+\.\d+\.\d+\.\d+\.g[0-9a-f]{8}$", version_spoti): + version_spoti = input("Spotify version, for example 1.1.68.632.g2b11de83: ") -start_number = "" -while not start_number.isdigit() or not 0 <= int(start_number) <= 20000: - start_number = input("Start search from: ") + start_number = "" + while not start_number.isdigit() or not 0 <= int(start_number) <= 20000: + start_number = input("Start search from: ") -before_enter = "" -while not before_enter.isdigit() or not 1 <= int(before_enter) <= 20000: - before_enter = input("End search at: ") + before_enter = "" + while not before_enter.isdigit() or not 1 <= int(before_enter) <= 20000: + before_enter = input("End search at: ") -max_workers_req = "" -while True: - max_workers_req = input("Number of threads: ") - try: - max_workers = int(max_workers_req) - if 1 <= max_workers <= 150: - break + numbers = int(start_number) + find_url = [] + + win32 = "https://upgrade.scdn.co/upgrade/client/win32-x86/spotify_installer-{version_spoti}-{numbers}.exe" + win_arm64 = "https://upgrade.scdn.co/upgrade/client/win32-arm64/spotify_installer-{version_spoti}-{numbers}.exe" + osx = "https://upgrade.scdn.co/upgrade/client/osx-x86_64/spotify-autoupdate-{version_spoti}-{numbers}.tbz" + osx_arm64 = "https://upgrade.scdn.co/upgrade/client/osx-arm64/spotify-autoupdate-{version_spoti}-{numbers}.tbz" + + print("\nSelect the link type for the search:") + print("[1] WIN32") + print("[2] WIN-ARM64") + print("[3] OSX") + print("[4] OSX-ARM64") + print("[5] All platforms") + + choices = [] + while not choices: + choice = input("Enter the number(s): ") + choice_list = choice.split(",") + for c in choice_list: + c = c.strip() + if c == "1": + choices.append("1") + elif c == "2": + choices.append("2") + elif c == "3": + choices.append("3") + elif c == "4": + choices.append("4") + elif c == "5": + choices = ["1", "2", "3", "4"] + break + else: + print("Value should be in the range from 1 to 5") + + print("\nSearching...\n") + + async with aiohttp.ClientSession() as session: + tasks = [] + + if "5" in choices: + url_templates = [win32, win_arm64, osx, osx_arm64] + platform_names = ["WIN32", "WIN-ARM64", "OSX", "OSX-ARM64"] + for url_template, platform_name in zip(url_templates, platform_names): + numbers = int(start_number) + while numbers <= int(before_enter): + url = url_template.format( + version_spoti=version_spoti, numbers=numbers + ) + tasks.append(check_url(session, url, platform_name)) + numbers += 1 else: - print("Value should be in the range from 1 to 150") - except ValueError: - print("Invalid value, please enter an integer") + for choice in choices: + if choice == "1": + url_template = win32 + platform_name = "WIN32" + elif choice == "2": + url_template = win_arm64 + platform_name = "WIN-ARM64" + elif choice == "3": + url_template = osx + platform_name = "OSX" + elif choice == "4": + url_template = osx_arm64 + platform_name = "OSX-ARM64" + numbers = int(start_number) + while numbers <= int(before_enter): + url = url_template.format(version_spoti=version_spoti, numbers=numbers) + tasks.append(check_url(session, url, platform_name)) + numbers += 1 -numbers = int(start_number) -find_url = [] + results = [] -win32 = "https://upgrade.scdn.co/upgrade/client/win32-x86/spotify_installer-{version_spoti}-{numbers}.exe" -win_arm64 = "https://upgrade.scdn.co/upgrade/client/win32-arm64/spotify_installer-{version_spoti}-{numbers}.exe" -osx = "https://upgrade.scdn.co/upgrade/client/osx-x86_64/spotify-autoupdate-{version_spoti}-{numbers}.tbz" -osx_arm64 = "https://upgrade.scdn.co/upgrade/client/osx-arm64/spotify-autoupdate-{version_spoti}-{numbers}.tbz" + with tqdm(total=len(tasks)) as pbar: + for task in asyncio.as_completed(tasks): + result = await task + if result is not None: + find_url.append(result) + pbar.update(1) -print("Select the link type for the search:") -print("[1] WIN32") -print("[2] WIN-ARM64") -print("[3] OSX") -print("[4] OSX-ARM64") -print("[5] ALL") + print("\nSearch completed:\n") + if find_url: + platform_urls = {} + for item in find_url: + if isinstance(item, tuple): + url, platform_name = item + if platform_name not in platform_urls: + platform_urls[platform_name] = [] + platform_urls[platform_name].append(url) + else: + if "Unknown" not in platform_urls: + platform_urls["Unknown"] = [] + platform_urls["Unknown"].append(item) -choice = None -while choice not in ["1", "2", "3", "4", "5"]: - choice = input("Enter the number: ") + for platform_name, urls in platform_urls.items(): + print(f"{platform_name}:") + for url in urls: + print(url) + print() + else: + print("Nothing found, consider increasing the search range\n") + + choice = input("Choose an option:\n" + "[1] Perform the search with a new version\n" + "[2] Perform the search again with the same version\n" + "[3] Exit\n" + "Enter the number: ") if choice == "1": - url_template = win32 - platform_name = "WIN32" + print("\n") + await main() elif choice == "2": - url_template = win_arm64 - platform_name = "WIN-ARM64" + print("\n") + print(f"Search version: {version_spoti}") + await main(version_spoti) elif choice == "3": - url_template = osx - platform_name = "OSX" - elif choice == "4": - url_template = osx_arm64 - platform_name = "OSX-ARM64" - elif choice == "5": - url_templates = [win32, win_arm64, osx, osx_arm64] - platform_names = ["WIN32", "WIN-ARM64", "OSX", "OSX-ARM64"] + return else: - print("Value should be in the range from 1 to 5") + print("Invalid choice. Exiting the code.") -print("Searching...") - -with ThreadPoolExecutor(max_workers=max_workers) as executor: - tasks = [] - - if choice == "5": - for url_template, platform_name in zip(url_templates, platform_names): - numbers = int(start_number) - while numbers <= int(before_enter): - url = url_template.format(version_spoti=version_spoti, numbers=numbers) - tasks.append(executor.submit(check_url, url, platform_name)) - numbers += 1 - else: - while numbers <= int(before_enter): - url = url_template.format(version_spoti=version_spoti, numbers=numbers) - tasks.append(executor.submit(check_url, url, platform_name)) - numbers += 1 - - for task in tasks: - result = task.result() - if result is not None: - find_url.append(result) - -print("\nSearch completed.\n") -if find_url: - platform_urls = {} - for item in find_url: - if isinstance(item, tuple): - url, platform_name = item - if platform_name not in platform_urls: - platform_urls[platform_name] = [] - platform_urls[platform_name].append(url) - else: - if "Unknown" not in platform_urls: - platform_urls["Unknown"] = [] - platform_urls["Unknown"].append(item) - - for platform_name, urls in platform_urls.items(): - print(f"{platform_name}:") - for url in urls: - print(url) - print() -else: - print("Nothing found, consider increasing the search range.") - -print("\n") -input("Press Enter to exit") +asyncio.run(main()) diff --git a/README.md b/README.md index f560e29..53b0e61 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@

LoaderSpot

-

A tool for downloading the full Spotify Desktop client.

+

Tool for finding full Spotify installers.

I also created an updatable document, with all the links I found. You can see it here

diff --git a/archive/LoaderSpot.ps1 b/archive/LoaderSpot.ps1 deleted file mode 100644 index d504923..0000000 --- a/archive/LoaderSpot.ps1 +++ /dev/null @@ -1,45 +0,0 @@ -do { $version_spoti = Read-Host -Prompt "Enter the Spotify version, for example 1.1.68.632.g2b11de83" } -while ($version_spoti -notmatch '^\d.\d.\d{1,2}.\d{1,5}.[a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z]$') - -do { $before_enter = Read-Host -Prompt "Enter the number to stop at (e.g. 99)" } -while ($before_enter -notmatch '^\d{1,4}$') - -$numbers = 0 - -"Search..." -While ($numbers -le $before_enter) { - - $_URL = "https://upgrade.scdn.co/upgrade/client/win32-x86/spotify_installer-$version_spoti-$numbers.exe" - - - try { - $request = [System.Net.WebRequest]::Create($_URL) - $response = $request.getResponse() - - if ($response.StatusCode -eq "200") { - $response.ResponseUri.OriginalString - $find_url += [System.Environment]::NewLine + $response.ResponseUri.OriginalString - $response.Close() - } - - } - catch { - $numbers - } - - $numbers++ -} - -write-host "`n" -"Search completed" -write-host "`n" -if ($find_url) { - "Found links :" - $find_url -} -if (!($find_url)) { - "Nothing found, please increase your search range." -} -write-host "`n" -pause -exit diff --git a/archive/LoaderSpot_Gui.ps1 b/archive/LoaderSpot_Gui.ps1 deleted file mode 100644 index b48a6ec..0000000 --- a/archive/LoaderSpot_Gui.ps1 +++ /dev/null @@ -1,514 +0,0 @@ - -Add-Type -Name Window -Namespace Console -MemberDefinition ' -[DllImport("Kernel32.dll")] -public static extern IntPtr GetConsoleWindow(); - -[DllImport("user32.dll")] -public static extern bool ShowWindow(IntPtr hWnd, Int32 nCmdShow); -' -function Hide-Console { - $consolePtr = [Console.Window]::GetConsoleWindow() - #0 hide - [Console.Window]::ShowWindow($consolePtr, 0) -} -Hide-Console - -function Show-Search_psf { - - [void][reflection.assembly]::Load('System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a') - [void][reflection.assembly]::Load('System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089') - - try { - [ProgressBarOverlay] | Out-Null - } - catch { - if ($PSVersionTable.PSVersion.Major -ge 7) { - $Assemblies = 'System.Windows.Forms', 'System.Drawing', 'System.Drawing.Primitives', 'System.ComponentModel.Primitives', 'System.Drawing.Common', 'System.Runtime' - } - else { - $Assemblies = 'System.Windows.Forms', 'System.Drawing' - - } - Add-Type -ReferencedAssemblies $Assemblies -TypeDefinition @" - using System; - using System.Windows.Forms; - using System.Drawing; - namespace SAPIENTypes - { - public class ProgressBarOverlay : System.Windows.Forms.ProgressBar - { - public ProgressBarOverlay() : base() { SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true); } - protected override void WndProc(ref Message m) - { - base.WndProc(ref m); - if (m.Msg == 0x000F)// WM_PAINT - { - if (Style != System.Windows.Forms.ProgressBarStyle.Marquee || !string.IsNullOrEmpty(this.Text)) - { - using (Graphics g = this.CreateGraphics()) - { - using (StringFormat stringFormat = new StringFormat(StringFormatFlags.NoWrap)) - { - stringFormat.Alignment = StringAlignment.Center; - stringFormat.LineAlignment = StringAlignment.Center; - if (!string.IsNullOrEmpty(this.Text)) - g.DrawString(this.Text, this.Font, Brushes.Black, this.ClientRectangle, stringFormat); - else - { - int percent = (int)(((double)Value / (double)Maximum) * 100); - g.DrawString(percent.ToString() + "%", this.Font, Brushes.Black, this.ClientRectangle, stringFormat); - } - } - } - } - } - } - - public string TextOverlay - { - get - { - return base.Text; - } - set - { - base.Text = value; - Invalidate(); - } - } - } - } -"@ -IgnoreWarnings | Out-Null - } - - [System.Windows.Forms.Application]::EnableVisualStyles() - $formFindingASpotifyClien = New-Object 'System.Windows.Forms.Form' - $progressbar1 = New-Object 'SAPIENTypes.ProgressBarOverlay' - $textbox1 = New-Object 'System.Windows.Forms.TextBox' - $linklabelFoundLinks = New-Object 'System.Windows.Forms.LinkLabel' - $groupbox2 = New-Object 'System.Windows.Forms.GroupBox' - $labelEnterSpotifyVersion = New-Object 'System.Windows.Forms.Label' - $maskedtextbox1 = New-Object 'System.Windows.Forms.MaskedTextBox' - $labelForExample1182758g8b = New-Object 'System.Windows.Forms.Label' - $groupbox1 = New-Object 'System.Windows.Forms.GroupBox' - $labelMaximumNumberFromFou = New-Object 'System.Windows.Forms.Label' - $labelEnterSearchRange = New-Object 'System.Windows.Forms.Label' - $labelTo = New-Object 'System.Windows.Forms.Label' - $maskedtextbox2 = New-Object 'System.Windows.Forms.MaskedTextBox' - $labelFrom = New-Object 'System.Windows.Forms.Label' - $maskedtextbox3 = New-Object 'System.Windows.Forms.MaskedTextBox' - $buttonStartSearch = New-Object 'System.Windows.Forms.Button' - $buttonExit = New-Object 'System.Windows.Forms.Button' - $InitialFormWindowState = New-Object 'System.Windows.Forms.FormWindowState' - - function Update-ListBox { - param - ( - [Parameter(Mandatory = $true)] - [ValidateNotNull()] - [System.Windows.Forms.ListBox] - $ListBox, - [Parameter(Mandatory = $true)] - [ValidateNotNull()] - $Items, - [Parameter(Mandatory = $false)] - [string] - $DisplayMember, - [Parameter(Mandatory = $false)] - [string]$ValueMember, - [switch] - $Append - ) - - if (-not $Append) { - $listBox.Items.Clear() - } - - if ($Items -is [System.Windows.Forms.ListBox+ObjectCollection]) { - $listBox.Items.AddRange($Items) - } - elseif ($Items -is [Array]) { - $listBox.BeginUpdate() - foreach ($obj in $Items) { - $listBox.Items.Add($obj) - } - $listBox.EndUpdate() - } - else { - $listBox.Items.Add($Items) - } - - if ($DisplayMember) { - $listBox.DisplayMember = $DisplayMember - } - if ($ValueMember) { - $ListBox.ValueMember = $ValueMember - } - } - - - - function Update-ComboBox { - param - ( - [Parameter(Mandatory = $true)] - [ValidateNotNull()] - [System.Windows.Forms.ComboBox] - $ComboBox, - [Parameter(Mandatory = $true)] - [ValidateNotNull()] - $Items, - [Parameter(Mandatory = $false)] - [string]$DisplayMember, - [Parameter(Mandatory = $false)] - [string]$ValueMember, - [switch] - $Append - ) - - if (-not $Append) { - $ComboBox.Items.Clear() - } - - if ($Items -is [Object[]]) { - $ComboBox.Items.AddRange($Items) - } - elseif ($Items -is [System.Collections.IEnumerable]) { - $ComboBox.BeginUpdate() - foreach ($obj in $Items) { - $ComboBox.Items.Add($obj) - } - $ComboBox.EndUpdate() - } - else { - $ComboBox.Items.Add($Items) - } - - if ($DisplayMember) { - $ComboBox.DisplayMember = $DisplayMember - } - - if ($ValueMember) { - $ComboBox.ValueMember = $ValueMember - } - } - - - $buttonStartSearch_Click = { - # Search button logic - - if ($maskedtextbox2.Text -notmatch "\D" -and $maskedtextbox3.Text -notmatch "\D") { - - $ErrorActionPreference = 'SilentlyContinue' - $version_spoti = $maskedtextbox1.Text - $numbers = [int]$maskedtextbox2.Text - $before_enter = [int]$maskedtextbox3.Text - - if ($before_enter -gt $numbers) { - - if ($version_spoti -match '^\d.\d.\d{1,2}.\d{1,5}.[a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z]$') { - $textbox1.AppendText([System.Environment]::NewLine + "") - $textbox1.AppendText("Search...") - - $numbers_bar = 0 - $progressbar1.Minimum = 0 - $progressbar1.Maximum = $before_enter - $numbers - - While ($numbers -le $before_enter) { - - $progressbar1.Value = $numbers_bar - $numbers_bar++ - - - $_URL = "https://upgrade.scdn.co/upgrade/client/win32-x86/spotify_installer-$version_spoti-$numbers.exe" - - - try { - $request = [System.Net.WebRequest]::Create($_URL) - $response = $request.getResponse() - - if ($response.StatusCode -eq "200") { - $response.ResponseUri.OriginalString - $find_url += [System.Environment]::NewLine + $response.ResponseUri.OriginalString - $response.Close() - } - - } - catch - { } - $numbers++ - } - $textbox1.AppendText([System.Environment]::NewLine + "") - $textbox1.AppendText([System.Environment]::NewLine + "Search completed") - $textbox1.AppendText([System.Environment]::NewLine + "") - if ($find_url) { - $textbox1.AppendText([System.Environment]::NewLine + "Found links:") - $textbox1.AppendText([System.Environment]::NewLine + $find_url) - $textbox1.AppendText([System.Environment]::NewLine + "`n") - } - if (!($find_url)) { - $textbox1.AppendText([System.Environment]::NewLine + "The search returned no results, try increasing the range.") - $textbox1.AppendText([System.Environment]::NewLine + "`n") - } - } - else { - $textbox1.AppendText([System.Environment]::NewLine + "") - $textbox1.AppendText("Unsuccessfully") - $textbox1.AppendText([System.Environment]::NewLine + "Spotify version entered incorrectly") - $textbox1.AppendText([System.Environment]::NewLine + "`n") - } - } - else { - $textbox1.AppendText([System.Environment]::NewLine + "") - $textbox1.AppendText("Unsuccessfully") - $textbox1.AppendText([System.Environment]::NewLine + "Search range entered incorrectly") - $textbox1.AppendText([System.Environment]::NewLine + "The start range cannot be greater than the end range.") - $textbox1.AppendText([System.Environment]::NewLine + "`n") - } - } - else { - $textbox1.AppendText([System.Environment]::NewLine + "") - $textbox1.AppendText("Unsuccessfully") - $textbox1.AppendText([System.Environment]::NewLine + "Search range entered incorrectly") - $textbox1.AppendText([System.Environment]::NewLine + "Enter only numbers") - $textbox1.AppendText([System.Environment]::NewLine + "`n") - } - } - - $buttonExit_Click = { - # Exit button logic - $formFindingASpotifyClien.hide() - } - $linklabelFoundLinks_LinkClicked = [System.Windows.Forms.LinkLabelLinkClickedEventHandler] { - #Event Argument: $_ = [System.Windows.Forms.LinkLabelLinkClickedEventArgs] - Start-Process "https://cutt.ly/8EH6NuH" - } - - $Form_StateCorrection_Load = - { - #Correct the initial state of the form to prevent the .Net maximized form issue - $formFindingASpotifyClien.WindowState = $InitialFormWindowState - } - - $Form_Cleanup_FormClosed = - { - #Remove all event handlers from the controls - try { - $linklabelFoundLinks.remove_LinkClicked($linklabelFoundLinks_LinkClicked) - $buttonStartSearch.remove_Click($buttonStartSearch_Click) - $buttonExit.remove_Click($buttonExit_Click) - $formFindingASpotifyClien.remove_Load($Form_StateCorrection_Load) - $formFindingASpotifyClien.remove_FormClosed($Form_Cleanup_FormClosed) - } - catch { Out-Null <# Prevent PSScriptAnalyzer warning #> } - } - - $formFindingASpotifyClien.SuspendLayout() - $groupbox2.SuspendLayout() - $groupbox1.SuspendLayout() - # - # formFindingASpotifyClien - # - $formFindingASpotifyClien.Controls.Add($progressbar1) - $formFindingASpotifyClien.Controls.Add($textbox1) - $formFindingASpotifyClien.Controls.Add($linklabelFoundLinks) - $formFindingASpotifyClien.Controls.Add($groupbox2) - $formFindingASpotifyClien.Controls.Add($groupbox1) - $formFindingASpotifyClien.Controls.Add($buttonStartSearch) - $formFindingASpotifyClien.Controls.Add($buttonExit) - $formFindingASpotifyClien.AutoScaleDimensions = New-Object System.Drawing.SizeF(6, 13) - $formFindingASpotifyClien.AutoScaleMode = 'Font' - $formFindingASpotifyClien.AutoSizeMode = 'GrowAndShrink' - $formFindingASpotifyClien.ClientSize = New-Object System.Drawing.Size(444, 370) - $formFindingASpotifyClien.MaximizeBox = $False - $formFindingASpotifyClien.Name = 'formFindingASpotifyClien' - $formFindingASpotifyClien.ShowIcon = $False - $formFindingASpotifyClien.SizeGripStyle = 'Hide' - $formFindingASpotifyClien.StartPosition = 'CenterScreen' - $formFindingASpotifyClien.Text = 'Finding a Spotify Client' - # - # progressbar1 - # - $progressbar1.Location = New-Object System.Drawing.Point(12, 307) - $progressbar1.Name = 'progressbar1' - $progressbar1.Size = New-Object System.Drawing.Size(420, 23) - $progressbar1.TabIndex = 18 - # - # textbox1 - # - $textbox1.Font = [System.Drawing.Font]::new('Tahoma', '6.75') - $textbox1.Location = New-Object System.Drawing.Point(13, 149) - $textbox1.Multiline = $True - $textbox1.Name = 'textbox1' - $textbox1.ReadOnly = $True - $textbox1.ScrollBars = 'Both' - $textbox1.Size = New-Object System.Drawing.Size(419, 151) - $textbox1.TabIndex = 17 - # - # linklabelFoundLinks - # - $linklabelFoundLinks.LinkColor = [System.Drawing.SystemColors]::HotTrack - $linklabelFoundLinks.Location = New-Object System.Drawing.Point(12, 341) - $linklabelFoundLinks.Name = 'linklabelFoundLinks' - $linklabelFoundLinks.Size = New-Object System.Drawing.Size(62, 17) - $linklabelFoundLinks.TabIndex = 16 - $linklabelFoundLinks.TabStop = $True - $linklabelFoundLinks.Text = 'Found links' - $linklabelFoundLinks.VisitedLinkColor = [System.Drawing.Color]::SlateBlue - $linklabelFoundLinks.add_LinkClicked($linklabelFoundLinks_LinkClicked) - # - # groupbox2 - # - $groupbox2.Controls.Add($labelEnterSpotifyVersion) - $groupbox2.Controls.Add($maskedtextbox1) - $groupbox2.Controls.Add($labelForExample1182758g8b) - $groupbox2.Location = New-Object System.Drawing.Point(228, 20) - $groupbox2.Name = 'groupbox2' - $groupbox2.Size = New-Object System.Drawing.Size(204, 122) - $groupbox2.TabIndex = 13 - $groupbox2.TabStop = $False - # - # labelEnterSpotifyVersion - # - $labelEnterSpotifyVersion.AutoSize = $True - $labelEnterSpotifyVersion.Font = [System.Drawing.Font]::new('Tahoma', '9', [System.Drawing.FontStyle]'Bold') - $labelEnterSpotifyVersion.Location = New-Object System.Drawing.Point(30, 16) - $labelEnterSpotifyVersion.Name = 'labelEnterSpotifyVersion' - $labelEnterSpotifyVersion.Size = New-Object System.Drawing.Size(138, 14) - $labelEnterSpotifyVersion.TabIndex = 3 - $labelEnterSpotifyVersion.Text = 'Enter Spotify Version' - # - # maskedtextbox1 - # - $maskedtextbox1.Font = [System.Drawing.Font]::new('Tahoma', '8.25') - $maskedtextbox1.Location = New-Object System.Drawing.Point(24, 87) - $maskedtextbox1.Name = 'maskedtextbox1' - $maskedtextbox1.Size = New-Object System.Drawing.Size(158, 21) - $maskedtextbox1.TabIndex = 2 - $maskedtextbox1.TextAlign = 'Center' - # - # labelForExample1182758g8b - # - $labelForExample1182758g8b.AccessibleDescription = '' - $labelForExample1182758g8b.AccessibleName = '' - $labelForExample1182758g8b.AutoSize = $True - $labelForExample1182758g8b.Font = [System.Drawing.Font]::new('Tahoma', '8.25') - $labelForExample1182758g8b.Location = New-Object System.Drawing.Point(40, 48) - $labelForExample1182758g8b.Name = 'labelForExample1182758g8b' - $labelForExample1182758g8b.Size = New-Object System.Drawing.Size(118, 26) - $labelForExample1182758g8b.TabIndex = 4 - $labelForExample1182758g8b.Text = 'For example: -1.1.82.758.g8b7b66c7' - # - # groupbox1 - # - $groupbox1.Controls.Add($labelMaximumNumberFromFou) - $groupbox1.Controls.Add($labelEnterSearchRange) - $groupbox1.Controls.Add($labelTo) - $groupbox1.Controls.Add($maskedtextbox2) - $groupbox1.Controls.Add($labelFrom) - $groupbox1.Controls.Add($maskedtextbox3) - $groupbox1.Location = New-Object System.Drawing.Point(12, 20) - $groupbox1.Name = 'groupbox1' - $groupbox1.Size = New-Object System.Drawing.Size(204, 122) - $groupbox1.TabIndex = 12 - $groupbox1.TabStop = $False - # - # labelMaximumNumberFromFou - # - $labelMaximumNumberFromFou.AutoSize = $True - $labelMaximumNumberFromFou.Font = [System.Drawing.Font]::new('Tahoma', '8.25') - $labelMaximumNumberFromFou.Location = New-Object System.Drawing.Point(40, 48) - $labelMaximumNumberFromFou.Name = 'labelMaximumNumberFromFou' - $labelMaximumNumberFromFou.Size = New-Object System.Drawing.Size(118, 26) - $labelMaximumNumberFromFou.TabIndex = 14 - $labelMaximumNumberFromFou.Text = 'Maximum number from -found links was 490.' - # - # labelEnterSearchRange - # - $labelEnterSearchRange.AutoSize = $True - $labelEnterSearchRange.Font = [System.Drawing.Font]::new('Tahoma', '9', [System.Drawing.FontStyle]'Bold') - $labelEnterSearchRange.Location = New-Object System.Drawing.Point(40, 16) - $labelEnterSearchRange.Name = 'labelEnterSearchRange' - $labelEnterSearchRange.Size = New-Object System.Drawing.Size(122, 14) - $labelEnterSearchRange.TabIndex = 6 - $labelEnterSearchRange.Text = 'Enter search range' - # - # labelTo - # - $labelTo.AutoSize = $True - $labelTo.Font = [System.Drawing.Font]::new('Lucida Console', '8.25') - $labelTo.Location = New-Object System.Drawing.Point(103, 92) - $labelTo.Name = 'labelTo' - $labelTo.Size = New-Object System.Drawing.Size(19, 11) - $labelTo.TabIndex = 11 - $labelTo.Text = 'to' - # - # maskedtextbox2 - # - $maskedtextbox2.Font = [System.Drawing.Font]::new('Tahoma', '8.25') - $maskedtextbox2.Location = New-Object System.Drawing.Point(45, 87) - $maskedtextbox2.Name = 'maskedtextbox2' - $maskedtextbox2.Size = New-Object System.Drawing.Size(50, 21) - $maskedtextbox2.TabIndex = 5 - $maskedtextbox2.Text = '0' - $maskedtextbox2.TextAlign = 'Center' - # - # labelFrom - # - $labelFrom.AutoSize = $True - $labelFrom.Font = [System.Drawing.Font]::new('Lucida Console', '8.25') - $labelFrom.Location = New-Object System.Drawing.Point(6, 92) - $labelFrom.Name = 'labelFrom' - $labelFrom.Size = New-Object System.Drawing.Size(33, 11) - $labelFrom.TabIndex = 10 - $labelFrom.Text = 'From' - # - # maskedtextbox3 - # - $maskedtextbox3.Font = [System.Drawing.Font]::new('Tahoma', '8.25') - $maskedtextbox3.Location = New-Object System.Drawing.Point(128, 87) - $maskedtextbox3.Name = 'maskedtextbox3' - $maskedtextbox3.Size = New-Object System.Drawing.Size(50, 21) - $maskedtextbox3.TabIndex = 8 - $maskedtextbox3.Text = '100' - $maskedtextbox3.TextAlign = 'Center' - # - # buttonStartSearch - # - $buttonStartSearch.Location = New-Object System.Drawing.Point(333, 336) - $buttonStartSearch.Name = 'buttonStartSearch' - $buttonStartSearch.Size = New-Object System.Drawing.Size(99, 23) - $buttonStartSearch.TabIndex = 1 - $buttonStartSearch.Text = 'Start Search' - $buttonStartSearch.UseVisualStyleBackColor = $True - $buttonStartSearch.add_Click($buttonStartSearch_Click) - # - # buttonExit - # - $buttonExit.Location = New-Object System.Drawing.Point(252, 336) - $buttonExit.Name = 'buttonExit' - $buttonExit.Size = New-Object System.Drawing.Size(75, 23) - $buttonExit.TabIndex = 0 - $buttonExit.TabStop = $False - $buttonExit.Text = 'Exit' - $buttonExit.UseVisualStyleBackColor = $True - $buttonExit.add_Click($buttonExit_Click) - $groupbox1.ResumeLayout() - $groupbox2.ResumeLayout() - $formFindingASpotifyClien.ResumeLayout() - - #Save the initial state of the form - $InitialFormWindowState = $formFindingASpotifyClien.WindowState - #Init the OnLoad event to correct the initial state of the form - $formFindingASpotifyClien.add_Load($Form_StateCorrection_Load) - #Clean up the control events - $formFindingASpotifyClien.add_FormClosed($Form_Cleanup_FormClosed) - #Show the Form - return $formFindingASpotifyClien.ShowDialog() - -} #End Function - -#Call the form -Show-Search_psf | Out-Null \ No newline at end of file diff --git a/archive/LoaderSpot_Gui_Ru.ps1 b/archive/LoaderSpot_Gui_Ru.ps1 deleted file mode 100644 index 0718a3a..0000000 --- a/archive/LoaderSpot_Gui_Ru.ps1 +++ /dev/null @@ -1,508 +0,0 @@ - -Add-Type -Name Window -Namespace Console -MemberDefinition ' -[DllImport("Kernel32.dll")] -public static extern IntPtr GetConsoleWindow(); - -[DllImport("user32.dll")] -public static extern bool ShowWindow(IntPtr hWnd, Int32 nCmdShow); -' -function Hide-Console { - $consolePtr = [Console.Window]::GetConsoleWindow() - #0 hide - [Console.Window]::ShowWindow($consolePtr, 0) -} -Hide-Console - -function Show-Search_psf { - - [void][reflection.assembly]::Load('System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a') - [void][reflection.assembly]::Load('System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089') - - try { - [ProgressBarOverlay] | Out-Null - } - catch { - if ($PSVersionTable.PSVersion.Major -ge 7) { - $Assemblies = 'System.Windows.Forms', 'System.Drawing', 'System.Drawing.Primitives', 'System.ComponentModel.Primitives', 'System.Drawing.Common', 'System.Runtime' - } - else { - $Assemblies = 'System.Windows.Forms', 'System.Drawing' - - } - Add-Type -ReferencedAssemblies $Assemblies -TypeDefinition @" - using System; - using System.Windows.Forms; - using System.Drawing; - namespace SAPIENTypes - { - public class ProgressBarOverlay : System.Windows.Forms.ProgressBar - { - public ProgressBarOverlay() : base() { SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true); } - protected override void WndProc(ref Message m) - { - base.WndProc(ref m); - if (m.Msg == 0x000F)// WM_PAINT - { - if (Style != System.Windows.Forms.ProgressBarStyle.Marquee || !string.IsNullOrEmpty(this.Text)) - { - using (Graphics g = this.CreateGraphics()) - { - using (StringFormat stringFormat = new StringFormat(StringFormatFlags.NoWrap)) - { - stringFormat.Alignment = StringAlignment.Center; - stringFormat.LineAlignment = StringAlignment.Center; - if (!string.IsNullOrEmpty(this.Text)) - g.DrawString(this.Text, this.Font, Brushes.Black, this.ClientRectangle, stringFormat); - else - { - int percent = (int)(((double)Value / (double)Maximum) * 100); - g.DrawString(percent.ToString() + "%", this.Font, Brushes.Black, this.ClientRectangle, stringFormat); - } - } - } - } - } - } - - public string TextOverlay - { - get - { - return base.Text; - } - set - { - base.Text = value; - Invalidate(); - } - } - } - } -"@ -IgnoreWarnings | Out-Null - } - - [System.Windows.Forms.Application]::EnableVisualStyles() - $formПоискКлиентаSpotify = New-Object 'System.Windows.Forms.Form' - $progressbar1 = New-Object 'SAPIENTypes.ProgressBarOverlay' - $textbox1 = New-Object 'System.Windows.Forms.TextBox' - $linklabelНайденныеСсылки = New-Object 'System.Windows.Forms.LinkLabel' - $groupbox2 = New-Object 'System.Windows.Forms.GroupBox' - $labelВведитеВерсиюSpotify = New-Object 'System.Windows.Forms.Label' - $maskedtextbox1 = New-Object 'System.Windows.Forms.MaskedTextBox' - $labelНапример1182758g8b7b = New-Object 'System.Windows.Forms.Label' - $groupbox1 = New-Object 'System.Windows.Forms.GroupBox' - $labelМаксимальныйНомерИзН = New-Object 'System.Windows.Forms.Label' - $labelВведитеДиапозонПоиск = New-Object 'System.Windows.Forms.Label' - $labelДо = New-Object 'System.Windows.Forms.Label' - $maskedtextbox2 = New-Object 'System.Windows.Forms.MaskedTextBox' - $labelОт = New-Object 'System.Windows.Forms.Label' - $maskedtextbox3 = New-Object 'System.Windows.Forms.MaskedTextBox' - $buttonНачатьПоиск = New-Object 'System.Windows.Forms.Button' - $buttonВыйти = New-Object 'System.Windows.Forms.Button' - $InitialFormWindowState = New-Object 'System.Windows.Forms.FormWindowState' - - function Update-ListBox { - param - ( - [Parameter(Mandatory = $true)] - [ValidateNotNull()] - [System.Windows.Forms.ListBox] - $ListBox, - [Parameter(Mandatory = $true)] - [ValidateNotNull()] - $Items, - [Parameter(Mandatory = $false)] - [string] - $DisplayMember, - [Parameter(Mandatory = $false)] - [string]$ValueMember, - [switch] - $Append - ) - - if (-not $Append) { - $listBox.Items.Clear() - } - - if ($Items -is [System.Windows.Forms.ListBox+ObjectCollection]) { - $listBox.Items.AddRange($Items) - } - elseif ($Items -is [Array]) { - $listBox.BeginUpdate() - foreach ($obj in $Items) { - $listBox.Items.Add($obj) - } - $listBox.EndUpdate() - } - else { - $listBox.Items.Add($Items) - } - - if ($DisplayMember) { - $listBox.DisplayMember = $DisplayMember - } - if ($ValueMember) { - $ListBox.ValueMember = $ValueMember - } - } - - function Update-ComboBox { - param - ( - [Parameter(Mandatory = $true)] - [ValidateNotNull()] - [System.Windows.Forms.ComboBox] - $ComboBox, - [Parameter(Mandatory = $true)] - [ValidateNotNull()] - $Items, - [Parameter(Mandatory = $false)] - [string]$DisplayMember, - [Parameter(Mandatory = $false)] - [string]$ValueMember, - [switch] - $Append - ) - - if (-not $Append) { - $ComboBox.Items.Clear() - } - - if ($Items -is [Object[]]) { - $ComboBox.Items.AddRange($Items) - } - elseif ($Items -is [System.Collections.IEnumerable]) { - $ComboBox.BeginUpdate() - foreach ($obj in $Items) { - $ComboBox.Items.Add($obj) - } - $ComboBox.EndUpdate() - } - else { - $ComboBox.Items.Add($Items) - } - - if ($DisplayMember) { - $ComboBox.DisplayMember = $DisplayMember - } - - if ($ValueMember) { - $ComboBox.ValueMember = $ValueMember - } - } - - - $buttonНачатьПоиск_Click = { - # Логика кнопки поиск - - if ($maskedtextbox2.Text -notmatch "\D" -and $maskedtextbox3.Text -notmatch "\D") { - - $ErrorActionPreference = 'SilentlyContinue' - $version_spoti = $maskedtextbox1.Text - $numbers = [int]$maskedtextbox2.Text - $before_enter = [int]$maskedtextbox3.Text - - if ($before_enter -gt $numbers) { - - if ($version_spoti -match '^\d.\d.\d{1,2}.\d{1,5}.[a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z]$') { - $textbox1.AppendText([System.Environment]::NewLine + "") - $textbox1.AppendText("Поиск...") - - $numbers_bar = 0 - $progressbar1.Minimum = 0 - $progressbar1.Maximum = $before_enter - $numbers - - While ($numbers -le $before_enter) { - - $progressbar1.Value = $numbers_bar - $numbers_bar++ - - - $_URL = "https://upgrade.scdn.co/upgrade/client/win32-x86/spotify_installer-$version_spoti-$numbers.exe" - - - try { - $request = [System.Net.WebRequest]::Create($_URL) - $response = $request.getResponse() - - if ($response.StatusCode -eq "200") { - $response.ResponseUri.OriginalString - $find_url += [System.Environment]::NewLine + $response.ResponseUri.OriginalString - $response.Close() - } - - } - catch - { } - $numbers++ - } - $textbox1.AppendText([System.Environment]::NewLine + "") - $textbox1.AppendText([System.Environment]::NewLine + "Поиск завершен") - $textbox1.AppendText([System.Environment]::NewLine + "") - if ($find_url) { - $textbox1.AppendText([System.Environment]::NewLine + "Найденные ссылки :") - $textbox1.AppendText([System.Environment]::NewLine + $find_url) - $textbox1.AppendText([System.Environment]::NewLine + "`n") - } - if (!($find_url)) { - $textbox1.AppendText([System.Environment]::NewLine + "Поиск не дал результатов, попробуйте увеличить диапазон.") - $textbox1.AppendText([System.Environment]::NewLine + "`n") - } - } - else { - $textbox1.AppendText([System.Environment]::NewLine + "") - $textbox1.AppendText("Неудачно") - $textbox1.AppendText([System.Environment]::NewLine + "Не корректно введена версия Spotify") - $textbox1.AppendText([System.Environment]::NewLine + "`n") - } - } - else { - $textbox1.AppendText([System.Environment]::NewLine + "") - $textbox1.AppendText("Неудачно") - $textbox1.AppendText([System.Environment]::NewLine + "Не корректно введен диапазон поиска") - $textbox1.AppendText([System.Environment]::NewLine + "Начальный диапазон не может быть больше конечного диапазона") - $textbox1.AppendText([System.Environment]::NewLine + "`n") - } - } - else { - $textbox1.AppendText([System.Environment]::NewLine + "") - $textbox1.AppendText("Неудачно") - $textbox1.AppendText([System.Environment]::NewLine + "Не корректно введен диапазон поиска") - $textbox1.AppendText([System.Environment]::NewLine + "Вводите только цифры") - $textbox1.AppendText([System.Environment]::NewLine + "`n") - } - } - $buttonВыйти_Click = { - # Логика кнопки выйти - $formПоискКлиентаSpotify.hide() - } - $linklabelНайденныеСсылки_LinkClicked = [System.Windows.Forms.LinkLabelLinkClickedEventHandler] { - Start-Process "https://cutt.ly/8EH6NuH" - } - - $Form_StateCorrection_Load = - { - $formПоискКлиентаSpotify.WindowState = $InitialFormWindowState - } - - $Form_Cleanup_FormClosed = - { - try { - $linklabelНайденныеСсылки.remove_LinkClicked($linklabelНайденныеСсылки_LinkClicked) - $buttonНачатьПоиск.remove_Click($buttonНачатьПоиск_Click) - $buttonВыйти.remove_Click($buttonВыйти_Click) - $formПоискКлиентаSpotify.remove_Load($Form_StateCorrection_Load) - $formПоискКлиентаSpotify.remove_FormClosed($Form_Cleanup_FormClosed) - } - catch { Out-Null <# Prevent PSScriptAnalyzer warning #> } - } - $formПоискКлиентаSpotify.SuspendLayout() - $groupbox1.SuspendLayout() - $groupbox2.SuspendLayout() - # - # formПоискКлиентаSpotify - # - $formПоискКлиентаSpotify.Controls.Add($progressbar1) - $formПоискКлиентаSpotify.Controls.Add($textbox1) - $formПоискКлиентаSpotify.Controls.Add($linklabelНайденныеСсылки) - $formПоискКлиентаSpotify.Controls.Add($groupbox2) - $formПоискКлиентаSpotify.Controls.Add($groupbox1) - $formПоискКлиентаSpotify.Controls.Add($buttonНачатьПоиск) - $formПоискКлиентаSpotify.Controls.Add($buttonВыйти) - $formПоискКлиентаSpotify.AutoScaleDimensions = New-Object System.Drawing.SizeF(6, 13) - $formПоискКлиентаSpotify.AutoScaleMode = 'Font' - $formПоискКлиентаSpotify.AutoSizeMode = 'GrowAndShrink' - $formПоискКлиентаSpotify.ClientSize = New-Object System.Drawing.Size(444, 370) - $formПоискКлиентаSpotify.MaximizeBox = $False - $formПоискКлиентаSpotify.Name = 'formПоискКлиентаSpotify' - $formПоискКлиентаSpotify.ShowIcon = $False - $formПоискКлиентаSpotify.SizeGripStyle = 'Hide' - $formПоискКлиентаSpotify.StartPosition = 'CenterScreen' - $formПоискКлиентаSpotify.Text = 'Поиск клиента Spotify' - # - # progressbar1 - # - $progressbar1.Location = New-Object System.Drawing.Point(12, 307) - $progressbar1.Name = 'progressbar1' - $progressbar1.Size = New-Object System.Drawing.Size(420, 23) - $progressbar1.TabIndex = 18 - # - # textbox1 - # - $textbox1.Font = [System.Drawing.Font]::new('Tahoma', '6.75') - $textbox1.Location = New-Object System.Drawing.Point(13, 149) - $textbox1.Multiline = $True - $textbox1.Name = 'textbox1' - $textbox1.ReadOnly = $True - $textbox1.ScrollBars = 'Both' - $textbox1.Size = New-Object System.Drawing.Size(419, 151) - $textbox1.TabIndex = 17 - # - # linklabelНайденныеСсылки - # - $linklabelНайденныеСсылки.LinkColor = [System.Drawing.SystemColors]::HotTrack - $linklabelНайденныеСсылки.Location = New-Object System.Drawing.Point(12, 341) - $linklabelНайденныеСсылки.Name = 'linklabelНайденныеСсылки' - $linklabelНайденныеСсылки.Size = New-Object System.Drawing.Size(107, 17) - $linklabelНайденныеСсылки.TabIndex = 16 - $linklabelНайденныеСсылки.TabStop = $True - $linklabelНайденныеСсылки.Text = 'Найденные ссылки' - $linklabelНайденныеСсылки.VisitedLinkColor = [System.Drawing.Color]::SlateBlue - $linklabelНайденныеСсылки.add_LinkClicked($linklabelНайденныеСсылки_LinkClicked) - # - # groupbox2 - # - $groupbox2.Controls.Add($labelВведитеВерсиюSpotify) - $groupbox2.Controls.Add($maskedtextbox1) - $groupbox2.Controls.Add($labelНапример1182758g8b7b) - $groupbox2.Location = New-Object System.Drawing.Point(228, 20) - $groupbox2.Name = 'groupbox2' - $groupbox2.Size = New-Object System.Drawing.Size(204, 122) - $groupbox2.TabIndex = 13 - $groupbox2.TabStop = $False - # - # labelВведитеВерсиюSpotify - # - $labelВведитеВерсиюSpotify.AutoSize = $True - $labelВведитеВерсиюSpotify.Font = [System.Drawing.Font]::new('Tahoma', '9', [System.Drawing.FontStyle]'Bold') - $labelВведитеВерсиюSpotify.Location = New-Object System.Drawing.Point(30, 16) - $labelВведитеВерсиюSpotify.Name = 'labelВведитеВерсиюSpotify' - $labelВведитеВерсиюSpotify.Size = New-Object System.Drawing.Size(158, 14) - $labelВведитеВерсиюSpotify.TabIndex = 3 - $labelВведитеВерсиюSpotify.Text = 'Введите версию Spotify' - # - # maskedtextbox1 - # - $maskedtextbox1.Font = [System.Drawing.Font]::new('Tahoma', '8.25') - $maskedtextbox1.Location = New-Object System.Drawing.Point(30, 87) - $maskedtextbox1.Name = 'maskedtextbox1' - $maskedtextbox1.Size = New-Object System.Drawing.Size(158, 21) - $maskedtextbox1.TabIndex = 2 - $maskedtextbox1.TextAlign = 'Center' - # - # labelНапример1182758g8b7b - # - $labelНапример1182758g8b7b.AccessibleDescription = '' - $labelНапример1182758g8b7b.AccessibleName = '' - $labelНапример1182758g8b7b.AutoSize = $True - $labelНапример1182758g8b7b.Font = [System.Drawing.Font]::new('Tahoma', '8.25') - $labelНапример1182758g8b7b.Location = New-Object System.Drawing.Point(51, 48) - $labelНапример1182758g8b7b.Name = 'labelНапример1182758g8b7b' - $labelНапример1182758g8b7b.Size = New-Object System.Drawing.Size(118, 26) - $labelНапример1182758g8b7b.TabIndex = 4 - $labelНапример1182758g8b7b.Text = 'Например: -1.1.82.758.g8b7b66c7' - # - # groupbox1 - # - $groupbox1.Controls.Add($labelМаксимальныйНомерИзН) - $groupbox1.Controls.Add($labelВведитеДиапозонПоиск) - $groupbox1.Controls.Add($labelДо) - $groupbox1.Controls.Add($maskedtextbox2) - $groupbox1.Controls.Add($labelОт) - $groupbox1.Controls.Add($maskedtextbox3) - $groupbox1.Location = New-Object System.Drawing.Point(12, 20) - $groupbox1.Name = 'groupbox1' - $groupbox1.Size = New-Object System.Drawing.Size(204, 122) - $groupbox1.TabIndex = 12 - $groupbox1.TabStop = $False - # - # labelМаксимальныйНомерИзН - # - $labelМаксимальныйНомерИзН.AutoSize = $True - $labelМаксимальныйНомерИзН.Font = [System.Drawing.Font]::new('Tahoma', '8.25') - $labelМаксимальныйНомерИзН.Location = New-Object System.Drawing.Point(27, 48) - $labelМаксимальныйНомерИзН.Name = 'labelМаксимальныйНомерИзН' - $labelМаксимальныйНомерИзН.Size = New-Object System.Drawing.Size(151, 26) - $labelМаксимальныйНомерИзН.TabIndex = 14 - $labelМаксимальныйНомерИзН.Text = 'Максимальный номер из -найденных ссылок был 490. -' - # - # labelВведитеДиапозонПоиск - # - $labelВведитеДиапозонПоиск.AutoSize = $True - $labelВведитеДиапозонПоиск.Font = [System.Drawing.Font]::new('Tahoma', '9', [System.Drawing.FontStyle]'Bold') - $labelВведитеДиапозонПоиск.Location = New-Object System.Drawing.Point(15, 16) - $labelВведитеДиапозонПоиск.Name = 'labelВведитеДиапозонПоиск' - $labelВведитеДиапозонПоиск.Size = New-Object System.Drawing.Size(171, 14) - $labelВведитеДиапозонПоиск.TabIndex = 6 - $labelВведитеДиапозонПоиск.Text = 'Введите диапазон поиска' - # - # labelДо - # - $labelДо.AutoSize = $True - $labelДо.Font = [System.Drawing.Font]::new('Lucida Console', '8.25') - $labelДо.Location = New-Object System.Drawing.Point(103, 92) - $labelДо.Name = 'labelДо' - $labelДо.Size = New-Object System.Drawing.Size(19, 11) - $labelДо.TabIndex = 11 - $labelДо.Text = 'До' - # - # maskedtextbox2 - # - $maskedtextbox2.Font = [System.Drawing.Font]::new('Tahoma', '8.25') - $maskedtextbox2.Location = New-Object System.Drawing.Point(40, 87) - $maskedtextbox2.Name = 'maskedtextbox2' - $maskedtextbox2.Size = New-Object System.Drawing.Size(50, 21) - $maskedtextbox2.TabIndex = 5 - $maskedtextbox2.Text = '0' - $maskedtextbox2.TextAlign = 'Center' - # - # labelОт - # - $labelОт.AutoSize = $True - $labelОт.Font = [System.Drawing.Font]::new('Lucida Console', '8.25') - $labelОт.Location = New-Object System.Drawing.Point(15, 92) - $labelОт.Name = 'labelОт' - $labelОт.Size = New-Object System.Drawing.Size(19, 11) - $labelОт.TabIndex = 10 - $labelОт.Text = 'От' - # - # maskedtextbox3 - # - $maskedtextbox3.Font = [System.Drawing.Font]::new('Tahoma', '8.25') - $maskedtextbox3.Location = New-Object System.Drawing.Point(128, 87) - $maskedtextbox3.Name = 'maskedtextbox3' - $maskedtextbox3.Size = New-Object System.Drawing.Size(50, 21) - $maskedtextbox3.TabIndex = 8 - $maskedtextbox3.Text = '100' - $maskedtextbox3.TextAlign = 'Center' - # - # buttonНачатьПоиск - # - $buttonНачатьПоиск.Location = New-Object System.Drawing.Point(333, 336) - $buttonНачатьПоиск.Name = 'buttonНачатьПоиск' - $buttonНачатьПоиск.Size = New-Object System.Drawing.Size(99, 23) - $buttonНачатьПоиск.TabIndex = 1 - $buttonНачатьПоиск.Text = 'Начать поиск' - $buttonНачатьПоиск.UseVisualStyleBackColor = $True - $buttonНачатьПоиск.add_Click($buttonНачатьПоиск_Click) - # - # buttonВыйти - # - $buttonВыйти.Location = New-Object System.Drawing.Point(252, 336) - $buttonВыйти.Name = 'buttonВыйти' - $buttonВыйти.Size = New-Object System.Drawing.Size(75, 23) - $buttonВыйти.TabIndex = 0 - $buttonВыйти.TabStop = $False - $buttonВыйти.Text = 'Выйти' - $buttonВыйти.UseVisualStyleBackColor = $True - $buttonВыйти.add_Click($buttonВыйти_Click) - $groupbox2.ResumeLayout() - $groupbox1.ResumeLayout() - $formПоискКлиентаSpotify.ResumeLayout() - - #Save the initial state of the form - $InitialFormWindowState = $formПоискКлиентаSpotify.WindowState - #Init the OnLoad event to correct the initial state of the form - $formПоискКлиентаSpotify.add_Load($Form_StateCorrection_Load) - #Clean up the control events - $formПоискКлиентаSpotify.add_FormClosed($Form_Cleanup_FormClosed) - #Show the Form - return $formПоискКлиентаSpotify.ShowDialog() - -} - -#Call the form -Show-Search_psf | Out-Null \ No newline at end of file