Skip to content

Commit

Permalink
v0.0.1
Browse files Browse the repository at this point in the history
  • Loading branch information
nyakokitsu committed Jan 1, 2024
1 parent 26ebd7f commit 906f5d4
Show file tree
Hide file tree
Showing 5 changed files with 69 additions and 89 deletions.
4 changes: 2 additions & 2 deletions .github/dependabot.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
interval: "weekly"
- package-ecosystem: "pub"
directory: "/"
schedule:
interval: "daily"
interval: "weekly"
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,13 @@ Or locally via:
dart pub global activate --source=path <path to this package>
```

Also you can use portable version in Releases page.

## Usage

```sh
# Sample command
$ maco sample
# Parse direct mp4 url for kodik player.

Check warning on line 29 in README.md

View workflow job for this annotation

GitHub Actions / spell-check / build

Unknown word (kodik)
$ maco kodik -u //kodik.info/seria/428055/cf7b8847a36a6904743111e46c2b77d1/720p

Check warning on line 30 in README.md

View workflow job for this annotation

GitHub Actions / spell-check / build

Unknown word (maco)

Check warning on line 30 in README.md

View workflow job for this annotation

GitHub Actions / spell-check / build

Unknown word (kodik)

Check warning on line 30 in README.md

View workflow job for this annotation

GitHub Actions / spell-check / build

Unknown word (kodik)

Check warning on line 30 in README.md

View workflow job for this annotation

GitHub Actions / spell-check / build

Unknown word (seria)

# Sample command option
$ maco sample --cyan

Check warning on line 33 in README.md

View workflow job for this annotation

GitHub Actions / spell-check / build

Unknown word (maco)
Expand Down
89 changes: 62 additions & 27 deletions lib/src/commands/kodik_command.dart
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import 'package:args/command_runner.dart';
// ignore: depend_on_referenced_packages
import 'package:dio/dio.dart';
import 'package:libanime/libanime.dart';
import 'package:libanime/structures/video.dart';
import 'package:mason_logger/mason_logger.dart';
import 'package:libanime/libanime.dart';
import 'package:dio/dio.dart';


///
Expand All @@ -18,13 +19,23 @@ class KodikCommand extends Command<int> {
..addOption(
'url',
abbr: 'u',
help: 'Url to player for download',
help: 'Player Url',
)
..addOption(
'path',
abbr: 'p',
help: 'Path for downloading. (Default ./video.mp4)',
)
..addFlag(
'info',
abbr: 'i',
help: 'Log additional anime info',
)
..addFlag(
'download',
abbr: 'd',
help: 'Automaticly download into current directory.',
negatable: false
help: 'Download video. Use path option for downloading path change.',
negatable: false,
)
..addOption(
'token',
Expand All @@ -40,48 +51,72 @@ class KodikCommand extends Command<int> {
String get name => 'kodik';

final Logger _logger;
final dio = Dio();

@override
Future<int> run() async {
final token = "b7cc4293ed475c4ad1fd599d114f4435";
if (argResults?.wasParsed("url") == false) {
_logger.err(lightRed.wrap("Url param cannot be null.")!);
final url = argResults!['url'].toString().startsWith('//') ? 'https:${argResults!['url']}' : argResults!['url'].toString();
dynamic token = 'b7cc4293ed475c4ad1fd599d114f4435';
if (argResults?.wasParsed('url') == false) {
_logger.err(lightRed.wrap('Url option cannot be null.'));
return ExitCode.noInput.code;
}
if (argResults?.wasParsed("token") == false) {
_logger.info(cyan.wrap("Token not set using default.")!);
if (argResults?.wasParsed('token') == false) {
_logger.info(cyan.wrap('Token not set using default.'));
} else {
token = argResults!['token'];
}
final kodik = Kodik(token);
final kodik = Kodik(token.toString());
Map<String, Video>? links = {};
final progress = _logger.progress("Begging video extracing.");
final progress = _logger.progress('Begging video extracing.');
try {
links = await kodik.parse(argResults!['url'].toString(), true);
links = await kodik.parse(url, true);
} on Exception {
progress.fail("An error occurred");
_logger.err(lightRed.wrap("Link decode error!"));
progress.fail('An error occurred');
_logger.err(lightRed.wrap('Link decode error!'));
return ExitCode.unavailable.code;
}
progress.complete('Fetching complete!');
// ignore: use_if_null_to_convert_nulls_to_bools
if (argResults?.wasParsed('info') == true) {
dynamic info;
try {
// ignore: inference_failure_on_function_invocation
final infoRq = await dio.get('https://kodikapi.com/search?token=$token&player_link=$url');
// ignore: avoid_dynamic_calls
info = infoRq.data['results'][0];
} on DioException {
progress.fail('An error occurred');
_logger.err(lightRed.wrap('Info requesting error'));
return ExitCode.unavailable.code;
}

progress.complete("Fetching complete!");

// ignore: avoid_dynamic_calls, lines_longer_than_80_chars
_logger.info('\n${styleBold.wrap('Title Original')}: ${info!["title_orig"]}\n${styleBold.wrap('Title RU')}: ${info!["title"]}\n${styleBold.wrap('Release Year')}: ${info!["year"]}\n${styleBold.wrap('Translator Name')}: ${info!["translation"]["title"]}\n${styleBold.wrap('Shikimori')}: https://shikimori.one/animes/${info!["shikimori_id"]}\n');
}
final quality = _logger.chooseOne(
'Choose quality:',
choices: ['360', '480', '720'],
defaultValue: '480',
);
final url = links![quality]?.url;
_logger.info(url);
if (argResults?["download"] == true) {
final dio = Dio();
final downloadProgress = _logger.progress("Starting downloading.");
final mp4Url = links![quality]?.url;
_logger.info(mp4Url);
if (argResults?['download'] == true) {

var path = './video.mp4';
// ignore: use_if_null_to_convert_nulls_to_bools
if (argResults?.wasParsed('path') == true) {
path = argResults!['path'].toString();
}
final downloadProgress = _logger.progress('Downloading.');
try {
final path = "" + "video.mp4";
await dio.download(url!, path);
await dio.download(mp4Url!, path);
} catch (e) {
downloadProgress.fail("An error occurred while downloading");
} finally {
downloadProgress.complete("Downloaded at ${path}")
downloadProgress.fail('An error occurred while downloading');
_logger.detail('Error: $e');
}

downloadProgress.complete('Downloaded at $path');
}

return ExitCode.success.code;
Expand Down
1 change: 1 addition & 0 deletions pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ dependencies:
libanime: ^0.0.8
mason_logger: ^0.2.5
path_provider: ^2.1.1
platform: ^3.1.3
pub_updater: ^0.3.1

dev_dependencies:
Expand Down
58 changes: 0 additions & 58 deletions test/src/commands/sample_command_test.dart

This file was deleted.

0 comments on commit 906f5d4

Please sign in to comment.