Advertisement
Guest User

Untitled

a guest
May 27th, 2016
42
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 1.88 KB | None | 0 0
  1. #r "../../nuget_packages/FSharp.Data.2.3.0/lib/net40/FSharp.Data.dll"
  2. open FSharp.Data
  3. open System
  4. open System.IO
  5. open System.Net
  6. open System.Text
  7. open System.Collections.Specialized
  8.  
  9. // почтовый адрес
  10. let email = ""
  11.  
  12. let lab3 () =
  13.   let bases = HtmlDocument.Load("https://github.com/search?utf8=%E2%9C%93&q=language%3AF%23&type=Repositories&ref=advsearch&l=F%23")
  14. //  bases.Descendants ["h3"]
  15. //    |> Seq.filter (fun x -> x.HasClass("repo-list-name"))
  16. //    |> Seq.collect (fun (x:HtmlNode) -> x.Descendants ["a"])
  17. //    |> Seq.map(fun x -> x.InnerText())
  18. //    |> Seq.toList
  19.  
  20.   let list1 = Seq.map (fun (x:HtmlNode) -> x.InnerText()) ((Seq.collect (fun (x:HtmlNode) -> x.Descendants ["a"]) (Seq.filter (fun x -> x.HasClass("repo-list-name"))  (bases.Descendants ["h3"]))))
  21. //  printf "%A\n" list1
  22.  
  23.   let list2_n =  (bases.Descendants ["relative-time"])
  24.   printf "%A\n" list2_n
  25.  
  26.   let current_time = System.DateTime.Now
  27.   let list2 = (Seq.map (fun (x: HtmlNode) -> current_time.Subtract(System.DateTime.Parse (x.AttributeValue "datetime")).Days / 30)) list2_n
  28.   printf "%A" list2
  29.  
  30.   let result = Seq.zip list1 list2
  31.   result
  32.  
  33.   Seq.sortBy (fun (x, y) -> y) result
  34.  
  35.   let href_next = (Seq.filter (fun (x:HtmlNode) -> x.HasClass("next_page")) (bases.Descendants ["a"]))
  36.   let ref = "https://github.com" + if Seq.length href_next > 0 then (Seq.head href_next).AttributeValue("href") else ""
  37.  
  38.   printf "%A" href_next
  39.  
  40.  
  41. lab3()
  42.  
  43. let main () =
  44.   let values = new NameValueCollection()
  45.   values.Add("email", email)
  46.   values.Add("result", lab3().ToString())
  47.   values.Add("content", File.ReadAllText(__SOURCE_DIRECTORY__ + @"/" + __SOURCE_FILE__))
  48.  
  49.   let client = new WebClient()
  50.   let response = client.UploadValues(new Uri("http://91.239.143.158:13666/lab3"), values)
  51.   let responseString = Text.Encoding.Default.GetString(response)
  52.  
  53.   printf "%A\n" responseString
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement