1
1
using CsvHelper . Configuration ;
2
+ using CsvHelper . TypeConversion ;
2
3
3
4
namespace AudioFileSorter . Model ;
4
5
5
6
public sealed class AudiobookMap : ClassMap < OpenAudible >
6
7
{
7
8
public AudiobookMap ( )
8
9
{
9
- // Basic mappings
10
- Map ( m => m . Key ) . Name ( "Key" ) ;
10
+ // Mandatory Fields
11
+ Map ( m => m . Key ) . Name ( "Key" ) . Optional ( ) ;
11
12
Map ( m => m . Title ) . Name ( "Title" ) ;
12
13
Map ( m => m . Author ) . Name ( "Author" ) ;
14
+ Map ( m => m . Filename ) . Name ( "File name" ) ;
15
+ Map ( m => m . FilePaths ) . Name ( "File Paths" ) ;
16
+ Map ( m => m . AudibleAAX ) . Name ( "Audible (AAX)" ) . Optional ( ) ;
17
+
18
+ // Optional Fields
13
19
Map ( m => m . NarratedBy ) . Name ( "Narrated By" ) . Optional ( ) ;
14
- Map ( m => m . PurchaseDate ) . Name ( "Purchase Date" ) . TypeConverterOption . Format ( "yyyy-MM-dd" ) ;
20
+ Map ( m => m . PurchaseDate ) . Name ( "Purchase Date" ) . TypeConverterOption . Format ( "yyyy-MM-dd" , "MM/dd/yyyy" , "M/d/yyyy" ) ;
15
21
Map ( m => m . Duration ) . Name ( "Duration" ) . Optional ( ) ;
16
- Map ( m => m . ReleaseDate ) . Name ( "Release Date" ) . TypeConverterOption . Format ( "yyyy-MM-dd" ) ;
22
+ Map ( m => m . ReleaseDate ) . Name ( "Release Date" ) . TypeConverterOption . Format ( "yyyy-MM-dd" , "MM/dd/yyyy" , "M/d/yyyy" ) ;
17
23
Map ( m => m . AveRating ) . Name ( "Ave. Rating" ) . Optional ( ) ;
18
24
Map ( m => m . Genre ) . Name ( "Genre" ) . Optional ( ) ;
19
25
Map ( m => m . SeriesName ) . Name ( "Series Name" ) . Optional ( ) ;
@@ -23,25 +29,25 @@ public AudiobookMap()
23
29
Map ( m => m . BookURL ) . Name ( "Book URL" ) . Optional ( ) ;
24
30
Map ( m => m . Summary ) . Name ( "Summary" ) . Optional ( ) ;
25
31
Map ( m => m . Description ) . Name ( "Description" ) . Optional ( ) ;
26
- Map ( m => m . RatingCount ) . Name ( "Rating Count" ) . Optional ( ) ;
27
32
Map ( m => m . Publisher ) . Name ( "Publisher" ) . Optional ( ) ;
28
33
Map ( m => m . ShortTitle ) . Name ( "Short Title" ) . Optional ( ) ;
29
34
Map ( m => m . Copyright ) . Name ( "Copyright" ) . Optional ( ) ;
30
35
Map ( m => m . AuthorURL ) . Name ( "Author URL" ) . Optional ( ) ;
31
- Map ( m => m . Filename ) . Name ( "File name" ) ;
32
36
Map ( m => m . SeriesURL ) . Name ( "Series URL" ) . Optional ( ) ;
33
37
Map ( m => m . Abridged ) . Name ( "Abridged" ) . Optional ( ) ;
34
38
Map ( m => m . Language ) . Name ( "Language" ) . Optional ( ) ;
35
39
Map ( m => m . PDFURL ) . Name ( "PDF URL" ) . Optional ( ) ;
36
40
Map ( m => m . ImageURL ) . Name ( "Image URL" ) . Optional ( ) ;
37
41
Map ( m => m . Region ) . Name ( "Region" ) . Optional ( ) ;
38
- Map ( m => m . FilePaths ) . Name ( "File Paths" ) ;
39
- Map ( m => m . AYCE ) . Name ( "AYCE" ) . Optional ( ) ;
40
- Map ( m => m . ReadStatus ) . Name ( "Read Status" ) ;
42
+ Map ( m => m . ReadStatus ) . Name ( "Read Status" ) . Optional ( ) ;
41
43
Map ( m => m . UserID ) . Name ( "User ID" ) . Optional ( ) ;
42
- Map ( m => m . AudibleAAX ) . Name ( "Audible (AAX)" ) ;
43
44
Map ( m => m . Image ) . Name ( "Image" ) . Optional ( ) ;
44
45
Map ( m => m . M4B ) . Name ( "M4B" ) . Optional ( ) ;
45
46
Map ( m => m . MP3 ) . Name ( "MP3" ) . Optional ( ) ;
47
+ Map ( m => m . AYCE ) . Name ( "AYCE" ) . TypeConverter < BooleanConverter > ( ) . Optional ( ) ;
48
+ Map ( m => m . RatingCount ) . Name ( "Rating Count" ) . TypeConverter < Int32Converter > ( ) . Optional ( ) ;
49
+
50
+ // **Newly Added Field**
51
+ Map ( m => m . PDF ) . Name ( "PDF" ) . Optional ( ) ;
46
52
}
47
53
}
0 commit comments