mirror of
https://github.com/nadimkobeissi/mkbsd.git
synced 2024-12-23 00:55:20 +00:00
Add dart implementation and download in all res
This commit is contained in:
parent
82e50c64f0
commit
18d29b68ad
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,2 +1,4 @@
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
downloads
|
downloads
|
||||||
|
.dart_tool
|
||||||
|
pubspec.lock
|
@ -30,6 +30,13 @@ MKBSD comes in two variants! Node.js and Python.
|
|||||||
4. Wait a little.
|
4. Wait a little.
|
||||||
5. All wallpapers are now in a newly created `downloads` subfolder.
|
5. All wallpapers are now in a newly created `downloads` subfolder.
|
||||||
|
|
||||||
|
### Running in Dart
|
||||||
|
|
||||||
|
1. Ensure you have Node.js installed.
|
||||||
|
2. Run `dart run mkbsd.dart`
|
||||||
|
3. Wait a little.
|
||||||
|
4. All wallpapers are now in a newly created `downloads` subfolder.
|
||||||
|
|
||||||
## FAQ
|
## FAQ
|
||||||
|
|
||||||
### Q: What's the story behind this?
|
### Q: What's the story behind this?
|
||||||
|
81
mkbsd.dart
Normal file
81
mkbsd.dart
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
import 'dart:convert';
|
||||||
|
import 'dart:io';
|
||||||
|
import 'package:http/http.dart' as http;
|
||||||
|
import 'package:path/path.dart' as path;
|
||||||
|
|
||||||
|
void main(List<String> arguments) async {
|
||||||
|
ascii_art();
|
||||||
|
|
||||||
|
sleep(Duration(seconds: 5));
|
||||||
|
|
||||||
|
try {
|
||||||
|
final String url = 'https://storage.googleapis.com/panels-api/data/20240916/media-1a-i-p~s';
|
||||||
|
final response = await http.get(Uri.parse(url));
|
||||||
|
|
||||||
|
if (response.statusCode != 200) {
|
||||||
|
throw Exception("Failed to fetch JSON file: ${response.reasonPhrase}");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!response.body.contains("data")) {
|
||||||
|
throw Exception('⛔ JSON does not have a "data" property at its root.');
|
||||||
|
}
|
||||||
|
|
||||||
|
final Map<String, dynamic> data = jsonDecode(response.body)["data"];
|
||||||
|
|
||||||
|
final downloadDir = Directory("downloads");
|
||||||
|
|
||||||
|
if (!downloadDir.existsSync()) {
|
||||||
|
downloadDir.createSync(recursive: true);
|
||||||
|
print("📁 Created directory: ${downloadDir}`");
|
||||||
|
}
|
||||||
|
|
||||||
|
for (String key in data.keys) {
|
||||||
|
final subDir = Directory("${downloadDir.path}/$key");
|
||||||
|
if (!subDir.existsSync()) {
|
||||||
|
subDir.createSync(recursive: true);
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> subproperty = data[key];
|
||||||
|
|
||||||
|
for (String subKey in subproperty.keys) {
|
||||||
|
final String imageURL = subproperty[subKey];
|
||||||
|
final uri = Uri.parse(imageURL);
|
||||||
|
|
||||||
|
final String ext = path.extension(uri.path).isNotEmpty ? path.extension(uri.path) : '.jpg';
|
||||||
|
final String filename = "${subKey}${ext}";
|
||||||
|
final String filePath = path.join(subDir.path, filename);
|
||||||
|
await downloadImage(uri, filePath);
|
||||||
|
print("🖼️ Saved image to ${filePath}");
|
||||||
|
sleep(Duration(milliseconds: 250));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
print("Error: $e");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> downloadImage(Uri uri, String savePath) async {
|
||||||
|
final response = await http.get(uri);
|
||||||
|
|
||||||
|
if (response.statusCode != 200) {
|
||||||
|
throw Exception("Failed to download image: ${response.reasonPhrase}");
|
||||||
|
}
|
||||||
|
|
||||||
|
final file = File(savePath);
|
||||||
|
|
||||||
|
await file.writeAsBytes(response.bodyBytes);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ascii_art() {
|
||||||
|
print("""
|
||||||
|
/\$\$ /\$\$ /\$\$ /\$\$ /\$\$\$\$\$\$\$ /\$\$\$\$\$\$ /\$\$\$\$\$\$\$
|
||||||
|
| \$\$\$ /\$\$\$| \$\$ /\$\$/| \$\$__ \$\$ /\$\$__ \$\$| \$\$__ \$\$
|
||||||
|
| \$\$\$\$ /\$\$\$\$| \$\$ /\$\$/ | \$\$ \\ \$\$| \$\$ \\__/| \$\$ \\ \$\$
|
||||||
|
| \$\$ \$\$/\$\$ \$\$| \$\$\$\$\$/ | \$\$\$\$\$\$\$ | \$\$\$\$\$\$ | \$\$ | \$\$
|
||||||
|
| \$\$ \$\$\$| \$\$| \$\$ \$\$ | \$\$__ \$\$ \\____ \$\$| \$\$ | \$\$
|
||||||
|
| \$\$\\ \$ | \$\$| \$\$\\ \$\$ | \$\$ \\ \$\$ /\$\$ \\ \$\$| \$\$ | \$\$
|
||||||
|
| \$\$ \\/ | \$\$| \$\$ \\ \$\$| \$\$\$\$\$\$\$/| \$\$\$\$\$\$/| \$\$\$\$\$\$\$/
|
||||||
|
|__/ |__/|__/ \\__/|_______/ \\______/ |_______/""");
|
||||||
|
print("");
|
||||||
|
print("🤑 Starting downloads from your favorite sellout grifter's wallpaper app...");
|
||||||
|
}
|
15
pubspec.yaml
Normal file
15
pubspec.yaml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
name: mkbsd
|
||||||
|
description: A sample command-line application.
|
||||||
|
version: 1.0.0
|
||||||
|
|
||||||
|
environment:
|
||||||
|
sdk: ^3.0.6
|
||||||
|
|
||||||
|
# Add regular dependencies here.
|
||||||
|
dependencies:
|
||||||
|
http: ^1.1.0
|
||||||
|
path: ^1.9.0
|
||||||
|
|
||||||
|
dev_dependencies:
|
||||||
|
lints: ^2.0.0
|
||||||
|
test: ^1.21.0
|
Loading…
Reference in New Issue
Block a user