[clean] clean code

This commit is contained in:
jscampucci 2024-06-28 09:24:53 +02:00
parent 7bd09a3904
commit 3eb4d7b905
13 changed files with 89 additions and 60 deletions

2
.gitignore vendored
View File

@ -42,3 +42,5 @@ app.*.map.json
/android/app/debug
/android/app/profile
/android/app/release
samples/

6
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,6 @@
{
"dart.analysisExcludedFolders": [
"C:\\Users\\Skapdat\\Projets\\Dev\\NoTube-Flutter\\notube\\samples"
],
"CodeGPT.apiKey": "Anthropic"
}

View File

@ -2,11 +2,9 @@ import 'dart:convert';
import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart';
import 'package:notube/models/Video.dart';
import 'package:notube/models/video.dart';
import 'package:notube/services/download.dart';
import 'dart:developer';
part 'dl_form_state.dart';
class DlFormCubit extends Cubit<DlFormState> {
@ -29,7 +27,7 @@ class DlFormCubit extends Cubit<DlFormState> {
void parseUrl() async {
dlService = await DLServices.init();
var shellStream = await dlService.analyseUrl(state.url!);
var shellStream = await dlService.analyseUrl(state.url);
shellStream.listen((line) {
if (line[0] == '{') {
@ -41,12 +39,16 @@ class DlFormCubit extends Cubit<DlFormState> {
var playlistTitle = dataInfos['title'];
for (var videoTmp in dataInfos['entries']) {
var video = Video.fromJson(videoTmp);
video.format = state.format;
video.copyWith(
format: state.format,
);
videos.add(video);
}
} else {
var video = Video.fromJson(dataInfos);
video.format = state.format;
video.copyWith(
format: state.format,
);
videos.add(video);
}
emit(state.copyWith(

View File

@ -1,9 +1,9 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:notube/dlForm/cubit/dl_form_cubit.dart';
import 'package:notube/dlForm/formComponents/formatDropdown.dart';
import 'package:notube/dlForm/formComponents/submitButton.dart';
import 'package:notube/dlForm/formComponents/urlTextField.dart';
import 'package:notube/dlForm/formComponents/format_dropdown.dart';
import 'package:notube/dlForm/formComponents/submit_button.dart';
import 'package:notube/dlForm/formComponents/url_text_field.dart';
class DlForm extends StatelessWidget {
const DlForm({super.key});
@ -69,8 +69,8 @@ class DebugDlFormState extends StatelessWidget {
return Column(
children: <Widget>[
Text('Url: ${url}'),
Text('Format: ${format}'),
Text('Url: $url'),
Text('Format: $format'),
],
);
});

View File

@ -3,17 +3,6 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:notube/constants.dart';
import 'package:notube/dlForm/cubit/dl_form_cubit.dart';
const List<String> formatList = <String>[
"MP3",
"MP3 HD",
"MP4",
"MP4 HD",
"MP4 2K",
"3GP",
"FLV",
"M4A",
];
class DropdownFormat extends StatelessWidget {
const DropdownFormat({super.key});
@ -37,10 +26,10 @@ class DropdownFormat extends StatelessWidget {
context.read<DlFormCubit>().setFormat(value!);
},
underline: Container(),
items: formatList.map<DropdownMenuItem<String>>((String value) {
items: Format.values.map<DropdownMenuItem<String>>((Format format) {
return DropdownMenuItem<String>(
value: value,
child: Text(value),
value: format.format,
child: Text(format.format),
);
}).toList(),
));

View File

@ -2,9 +2,8 @@ import 'package:flutter/material.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:notube/constants.dart';
import 'package:notube/models/Video.dart';
import 'package:notube/models/video.dart';
import 'package:notube/videoList/cubit/videos_cubit.dart';
import 'package:provider/provider.dart';
import 'package:notube/dlForm/cubit/dl_form_cubit.dart';
class SubmitButton extends StatefulWidget {

View File

@ -6,7 +6,6 @@ import 'package:window_manager/window_manager.dart';
import 'package:upgrader/upgrader.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:notube/videoList/cubit/videos_cubit.dart';
import 'package:notube/models/Video.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();

View File

@ -1,5 +1,7 @@
import 'package:equatable/equatable.dart';
import 'package:flutter/material.dart';
@immutable
class Video extends Equatable {
Video({
this.id = '',
@ -17,19 +19,19 @@ class Video extends Equatable {
this.filename = '',
});
String id;
String url;
String extractor;
bool isParsed;
String status;
String format;
String title;
String thumbnail;
String description;
String duration;
String uploader;
String uploadDate;
String filename;
final String id;
final String url;
final String extractor;
final bool isParsed;
final String status;
final String format;
final String title;
final String thumbnail;
final String description;
final String duration;
final String uploader;
final String uploadDate;
final String filename;
factory Video.fromJson(Map<String, dynamic> json) {
return Video(
@ -45,6 +47,39 @@ class Video extends Equatable {
uploadDate: json['upload_date'] ?? '');
}
//set Status
Video copyWith({
String? id,
String? url,
String? extractor,
bool? isParsed,
String? status,
String? format,
String? title,
String? thumbnail,
String? description,
String? duration,
String? uploader,
String? uploadDate,
String? filename,
}) {
return Video(
id: id ?? this.id,
url: url ?? this.url,
extractor: extractor ?? this.extractor,
isParsed: isParsed ?? this.isParsed,
status: status ?? this.status,
format: format ?? this.format,
title: title ?? this.title,
thumbnail: thumbnail ?? this.thumbnail,
description: description ?? this.description,
duration: duration ?? this.duration,
uploader: uploader ?? this.uploader,
uploadDate: uploadDate ?? this.uploadDate,
filename: filename ?? this.filename,
);
}
@override
List<Object> get props => [
id,

View File

@ -1,10 +1,8 @@
import 'package:flutter/material.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:notube/constants.dart';
import 'package:notube/dlForm/dlForm.dart';
import 'package:notube/dlForm/dl_form.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:notube/videoList/cubit/videos_cubit.dart';
import 'package:notube/models/Video.dart';
class Home extends StatelessWidget {
Home({super.key});
@ -44,15 +42,17 @@ class Home extends StatelessWidget {
itemBuilder: (context, index) {
var currentVideo = state.videoList[index];
return ListTile(
leading: SizedBox(
width: 72,
height: 48,
child: Image.network(
currentVideo.thumbnail,
fit: BoxFit.cover),
),
title: Text(currentVideo.title),
subtitle: Text(currentVideo.status));
leading: SizedBox(
width: 72,
height: 48,
child: Image.network(
currentVideo.thumbnail,
fit: BoxFit.cover),
),
title: Text(currentVideo.title),
subtitle: Text(
'${currentVideo.status} - ${currentVideo.format}'),
);
},
);
})),

View File

@ -1,16 +1,12 @@
import 'dart:convert';
import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:notube/constants.dart';
import 'package:notube/models/Video.dart';
import 'package:notube/models/video.dart';
import 'package:path_provider/path_provider.dart';
import 'package:process_run/shell.dart';
import 'dart:developer';
class DLServices {
late Directory tempDir;
late String assetName;
@ -71,7 +67,7 @@ class DLServices {
var cleanTitle = video.title.replaceAll(RegExp(r'[^\w\s]+'), '');
var command =
'${video.url.trim()} --sub-langs "all,-live_chat" --embed-subs --embed-thumbnail --embed-metadata --progress -o "temp/%(playlist)s/${cleanTitle}_${video.format}_tmp.%(ext)s" -f "$formatCmd"';
'${video.url.trim()} --sub-langs "all,-live_chat" --embed-subs --embed-thumbnail --embed-metadata --progress -o "temp/${video.id}_${video.format}_tmp.%(ext)s" -f "$formatCmd"';
var shellLinesController = ShellLinesController();
var shell = Shell(stdout: shellLinesController.sink, verbose: false);

View File

@ -18,7 +18,7 @@ packages:
source: hosted
version: "2.11.0"
bloc:
dependency: transitive
dependency: "direct main"
description:
name: bloc
sha256: "106842ad6569f0b60297619e9e0b1885c2fb9bf84812935490e6c5275777804e"

View File

@ -27,6 +27,7 @@ dependencies:
flutter_bloc: ^8.1.6
equatable: ^2.0.5
json_annotation: ^4.9.0
bloc: ^8.1.4
dev_dependencies:
flutter_test: