Skip to content

Instantly share code, notes, and snippets.

@jovaneyck
Created June 18, 2017 18:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jovaneyck/68b67e6b3ea4ab1f97a5eaf4289b4eca to your computer and use it in GitHub Desktop.
Save jovaneyck/68b67e6b3ea4ab1f97a5eaf4289b4eca to your computer and use it in GitHub Desktop.
#r @"..\packages\FSharp.Data\lib\net40\Fsharp.Data.dll"
open FSharp.Data
type BookTypes = JsonProvider<"sample-books.json", RootName="books">
type GoodReadsExport = CsvProvider<"goodreads_library_export.csv">
let toAuthor (lastNameFirstName : string) =
match lastNameFirstName.Split([|", "|], System.StringSplitOptions.RemoveEmptyEntries) with
| [| lastName; firstName |] -> BookTypes.Author(lastName, firstName)
| _ -> failwithf "Let's not deal with errors today."
let export = new GoodReadsExport()
export.Rows
|> Seq.sortByDescending(fun r -> r.``My Rating``)
|> Seq.take 20
|> Seq.map (fun row ->
BookTypes.Book(
row.Title,
row.``Author l-f`` |> toAuthor,
row.ISBN13,
createdAt = row.``Date Added``,
readAt = row.``Date Read``))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment