Android: Parse timestamp from fileName during upload
This commit is contained in:
parent
04bd608fb3
commit
0f72c1b4a2
2 changed files with 17 additions and 1 deletions
|
@ -1,3 +1,5 @@
|
|||
import 'dart:io';
|
||||
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:path/path.dart';
|
||||
import 'package:photo_manager/photo_manager.dart';
|
||||
|
@ -177,13 +179,23 @@ class File extends EnteFile {
|
|||
duration = asset.duration;
|
||||
}
|
||||
}
|
||||
bool hasExifTime = false;
|
||||
if (fileType == FileType.image && mediaUploadData.sourceFile != null) {
|
||||
final exifTime =
|
||||
await getCreationTimeFromEXIF(mediaUploadData.sourceFile!);
|
||||
if (exifTime != null) {
|
||||
hasExifTime = true;
|
||||
creationTime = exifTime.microsecondsSinceEpoch;
|
||||
}
|
||||
}
|
||||
// try to get the timestamp from fileName. In case of iOS, file names are
|
||||
// generic IMG_XXXX, so only parse it on Android devices
|
||||
if (!hasExifTime && Platform.isAndroid && title != null) {
|
||||
final timeFromFileName = parseDateTimeFromFileNameV2(title!);
|
||||
if (timeFromFileName != null) {
|
||||
creationTime = timeFromFileName.microsecondsSinceEpoch;
|
||||
}
|
||||
}
|
||||
hash = mediaUploadData.hashData?.fileHash;
|
||||
return metadata;
|
||||
}
|
||||
|
|
|
@ -32,7 +32,11 @@ void main() {
|
|||
});
|
||||
|
||||
test("test invalid datetime parsing", () {
|
||||
final List<String> badParsing = ["Snapchat-431959199.mp4."];
|
||||
final List<String> badParsing = [
|
||||
"Snapchat-431959199.mp4.",
|
||||
"Snapchat-400000000.mp4",
|
||||
"Snapchat-900000000.mp4"
|
||||
];
|
||||
for (String val in badParsing) {
|
||||
final parsedValue = parseDateTimeFromFileNameV2(val);
|
||||
expect(
|
||||
|
|
Loading…
Add table
Reference in a new issue