Advertisement
Guest User

Untitled

a guest
May 27th, 2016
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 2.27 KB | None | 0 0
  1. #r "../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 firstPart = "https://github.com/search?l=F%23&p="
  13. let secondPart = "&q=language%3AF%23&ref=advsearch&type=Repositories&utf8=✓"
  14.  
  15. let lab3 () =
  16.   let getListFromPage (pageNumber:int) =
  17.       let bases = HtmlDocument.Load(firstPart + pageNumber.ToString() + secondPart)
  18.     //  bases.Descendants ["h3"]
  19.     //    |> Seq.filter (fun x -> x.HasClass("repo-list-name"))
  20.     //    |> Seq.collect (fun (x:HtmlNode) -> x.Descendants ["a"])
  21.     //    |> Seq.map(fun x -> x.InnerText())
  22.     //    |> Seq.toList
  23.  
  24.       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"]))))
  25.     //  printf "%A\n" list1
  26.  
  27.       let list2_n =  (bases.Descendants ["relative-time"])
  28.     //  printf "%A\n" list2_n
  29.  
  30.       let current_time = System.DateTime.Now
  31.       let list2 = (Seq.map (fun (x: HtmlNode) -> current_time.Subtract(System.DateTime.Parse (x.AttributeValue "datetime")).Days / 30)) list2_n
  32.       //printf "%A" list2
  33.  
  34.       let result = Seq.zip list1 list2
  35.       Seq.toList result
  36.  
  37.  
  38. //  let pages = Seq.init 10 (fun x -> x + 1)
  39.   let pages = [1..4]
  40.  
  41.   let result = List.collect (fun x -> getListFromPage x) pages
  42.  
  43.  
  44.   Seq.sortBy (fun (x, y) -> y) result
  45. //
  46. //  let href_next = (Seq.filter (fun (x:HtmlNode) -> x.HasClass("next_page")) (bases.Descendants ["a"]))
  47. //  let ref = "https://github.com" + if Seq.length href_next > 0 then (Seq.head href_next).AttributeValue("href") else ""
  48. //
  49. //  printf "%A" href_next
  50.  
  51.  
  52. lab3()
  53.  
  54. let lol = Seq.init 10 (fun x -> x + 1)
  55.  
  56. lol
  57.  
  58. let main () =
  59.   let values = new NameValueCollection()
  60.   values.Add("email", email)
  61.   values.Add("result", lab3().ToString())
  62.   values.Add("content", File.ReadAllText(__SOURCE_DIRECTORY__ + @"/" + __SOURCE_FILE__))
  63.  
  64.   let client = new WebClient()
  65.   let response = client.UploadValues(new Uri("http://91.239.143.158:13666/lab3"), values)
  66.   let responseString = Text.Encoding.Default.GetString(response)
  67.  
  68.   printf "%A\n" responseString
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement