Advertisement
Guest User

获取下载数量

a guest
May 29th, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 0.80 KB | None | 0 0
  1. open System
  2. open System.IO
  3. open FSharp.Data
  4.  
  5. type NPMPackage = JsonProvider<"d:\client.json">
  6. let asyncGetPackage name =
  7.     let url = "https://api.npmjs.org/downloads/point/last-month/" + name
  8.     NPMPackage.AsyncLoad(url)
  9.    
  10. let packagesAync = seq {
  11.     for line in File.ReadLines("d:/modules.txt") do
  12.         let name = line.Split([|' ';'\t'|]).[0]
  13.         yield async {
  14.             try
  15.                 return! asyncGetPackage name
  16.             with _ ->
  17.                 return new NPMPackage.Root(0, DateTime.Now, DateTime.Now, name)
  18.         }
  19. }
  20.  
  21. let packages =
  22.     Async.Parallel packagesAync
  23.     |> Async.RunSynchronously
  24.  
  25. packages
  26. |> Seq.sortByDescending (fun p -> p.Downloads)
  27. |> Seq.take(100)
  28. |> Seq.iter (fun p -> printfn "Downloads: %A \t\t Count: %A" p.Package p.Downloads)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement