Migration to Python
- Multithreaded mode has been added for faster searching - Added search options: "Win-32", "Win-ARM64", "OSX", "OSX-ARM64" or search all at once.
This commit is contained in:
parent
33b35d456f
commit
89a1196978
7 changed files with 183 additions and 89 deletions
|
|
@ -1,4 +0,0 @@
|
|||
@echo off
|
||||
powershell -Command "& {[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12}"; "& {Invoke-WebRequest -UseBasicParsing 'https://raw.githubusercontent.com/amd64fox/LoaderSpot/main/GUI/LoaderSpot_Gui.ps1' | Invoke-Expression}"
|
||||
pause
|
||||
exit
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
@echo off
|
||||
powershell -Command "& {[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12}"; "& {(Invoke-WebRequest -UseBasicParsing 'https://raw.githubusercontent.com/amd64fox/LoaderSpot/main/GUI/LoaderSpot_Gui_Ru.ps1').Content | Invoke-Expression}"
|
||||
pause
|
||||
exit
|
||||
129
LoaderSpot.py
Normal file
129
LoaderSpot.py
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
import re
|
||||
import requests
|
||||
from concurrent.futures import ThreadPoolExecutor
|
||||
|
||||
|
||||
def check_url(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:
|
||||
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: ")
|
||||
|
||||
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: ")
|
||||
|
||||
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
|
||||
else:
|
||||
print("Value should be in the range from 1 to 150")
|
||||
except ValueError:
|
||||
print("Invalid value, please enter an integer")
|
||||
|
||||
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("Select the link type for the search:")
|
||||
print("[1] WIN32")
|
||||
print("[2] WIN-ARM64")
|
||||
print("[3] OSX")
|
||||
print("[4] OSX-ARM64")
|
||||
print("[5] ALL")
|
||||
|
||||
choice = None
|
||||
while choice not in ["1", "2", "3", "4", "5"]:
|
||||
choice = input("Enter the number: ")
|
||||
|
||||
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"
|
||||
elif choice == "5":
|
||||
url_templates = [win32, win_arm64, osx, osx_arm64]
|
||||
platform_names = ["WIN32", "WIN-ARM64", "OSX", "OSX-ARM64"]
|
||||
else:
|
||||
print("Value should be in the range from 1 to 5")
|
||||
|
||||
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")
|
||||
45
README.md
45
README.md
|
|
@ -1,36 +1,9 @@
|
|||
<p align="center">
|
||||
<a href="https://t.me/amd64fox"><img src="https://img.shields.io/badge/%40Amd64fox-%40Amd64fox-blue.svg?style=flat&logo=telegram&label=Telegram"></a>
|
||||
<a href="https://cutt.ly/8EH6NuH"><img src="https://img.shields.io/badge/Excel%20table--brightgreen.svg?style=flat&logo=microsoftexcel&label=Excel table"></a>
|
||||
<a href="https://github.com/amd64fox/LoaderSpot/releases"><img src="https://img.shields.io/github/downloads/amd64fox/LoaderSpot/total.svg?style=flat&label=Total downloads"></a>
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<center>
|
||||
<h1 align="center">LoaderSpot
|
||||
</h1>
|
||||
<h2 align="center">A tool for downloading the full Spotify Windows Desktop client.</h4
|
||||
|
||||
</center>
|
||||
|
||||
|
||||
- To download the version you need, you need to find out its full name, for example, you can find it [here](https://www.spotify.com/us/opensource)
|
||||
- The version found should look something like this: 1.1.68.632.g2b11de83
|
||||
- Download and run
|
||||
- [LoaderSpot.bat](https://cutt.ly/pEvhtdr)
|
||||
- [LoaderSpot_Gui.bat](https://cutt.ly/9FbGCtv)
|
||||
- [LoaderSpot_Gui_Ru.bat](https://cutt.ly/UFbG7XG)
|
||||
- Follow the further instructions on the screen
|
||||
|
||||
|
||||
* * *
|
||||
|
||||
<center>
|
||||
<h3 align="center">I also created an updatable document, with all the links I found. You can see it <a href="https://cutt.ly/8EH6NuH">here</a></h4
|
||||
</center>
|
||||
|
||||
|
||||
<p align="center">
|
||||
<a href="https://docs.google.com/spreadsheets/d/1wztO1L4zvNykBRw7X4jxP8pvo11oQjT0O5DvZ_-S4Ok/edit#gid=0"><img src="https://img.shields.io/badge/Excel%20table--brightgreen.svg?style=flat&logo=microsoftexcel&label=Excel table"></a>
|
||||
</p>
|
||||
<h1 align="center">LoaderSpot</h1>
|
||||
<h2 align="center">A tool for downloading the full Spotify Desktop client.</h2>
|
||||
<p align="center">
|
||||
<h3 align="center">I also created an updatable document, with all the links I found. You can see it <a href="https://docs.google.com/spreadsheets/d/1wztO1L4zvNykBRw7X4jxP8pvo11oQjT0O5DvZ_-S4Ok/edit#gid=0">here</a></h3>
|
||||
</p>
|
||||
<p align="center">Thanks for the idea <a href="https://github.com/nick-botticelli/SpotifyUpgradeFinder">nick-botticelli</a></p>
|
||||
|
|
@ -1,45 +1,45 @@
|
|||
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
|
||||
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
|
||||
Loading…
Reference in a new issue