Cheesebot can now recognize youtube urls formatted like this: - http://www.youtube.com - https://www.youtube.com - http://youtube.com - www.youtube.com - youtu.be
		
			
				
	
	
		
			43 lines
		
	
	
	
		
			1,021 B
		
	
	
	
		
			OCaml
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
	
		
			1,021 B
		
	
	
	
		
			OCaml
		
	
	
	
	
	
| open Str
 | |
| open Ssl
 | |
| open Http_client.Convenience
 | |
| open Https_client;;
 | |
| 
 | |
| Ssl.init();
 | |
| Http_client.Convenience.configure_pipeline
 | |
| (fun p ->
 | |
|   let ctx = Ssl.create_context Ssl.TLSv1 Ssl.Client_context in
 | |
|   let tct = Https_client.https_transport_channel_type ctx in
 | |
|   p # configure_transport Http_client.https_cb_id tct
 | |
| )
 | |
| 
 | |
| 
 | |
| (* Regexp required here *)
 | |
| let is_youtube_url url =
 | |
|   let regexp = Str.regexp "\\(https?\\://\\)?\\(www\\.\\)?\\(youtube\\.com\\)\\|\\(youtu\\.be\\)/.+" in
 | |
|   Str.string_match regexp url 0
 | |
| 
 | |
| 
 | |
| let get_body url =
 | |
|   try Http_client.Convenience.http_get url with
 | |
|   | Http_client.Http_error e -> "http error /o\\"
 | |
|   | Failure f -> "http fail lol"
 | |
| 
 | |
| 
 | |
| (* Maybe have a list of functions and
 | |
|  * iter on all the items in the list *)
 | |
| let evaluate str =
 | |
|   match str with
 | |
|   | str when is_youtube_url str -> get_body str
 | |
|   | _ -> str;;
 | |
| 
 | |
| 
 | |
| try
 | |
|   while true do
 | |
|     print_string "> ";
 | |
|     let line = read_line () in
 | |
|     let answer = evaluate line in
 | |
|     print_endline answer
 | |
|   done
 | |
| with
 | |
|   End_of_file -> print_endline "Bye!";;
 |