hunk ./titleParser.ml 6 + | E_Name of string hunk ./titleParser.ml 55 + | E_Name str -> str hunk ./titleParser.ml 116 + let episode_name = function + | [name; ep_name] -> Some (clean_name name, E_Name (clean_name ep_name)) + | _ -> None + in hunk ./titleParser.ml 153 + "^(.*?) - (.*)", episode_name; hunk ./autotv.ml 2 -open XmlFilter - -type torrent = - { t_id : string; - t_title : string; (* original title *) - t_info : TitleParser.t; (* parsed name *) - t_size : Int64.t option; - t_url : string option; - } +open Torrent hunk ./autotv.ml 28 -let rec pcdata_of_xml = function - | Xml.Element (_, _, xml::[]) -> pcdata_of_xml xml - | Xml.PCData x -> x - | xml -> Printf.ksprintf failwith "cannot extract pcdata from xml %s" (Xml.to_string_fmt xml) - -let torrent_of_xml xml = - let field s = List.hd (path [s] (const true) xml) in - let id = pcdata_of_xml (field "guid") in - let title = pcdata_of_xml (field "title") in - let enclosure = field "enclosure" in - let size = try Some (Int64.of_string (Xml.attrib enclosure "length")) with _ -> None in - let url = try Some (Xml.attrib enclosure "url") with _ -> None in - { t_id = id; - t_title = title; - t_info = TitleParser.of_title title; - t_size = size; - t_url = url; - } - hunk ./autotv.ml 64 - let items = path ["channel"; "item"] (const true) xml in - let torrents = List.map torrent_of_xml items in + let torrents = Parse.parse xml in addfile ./parse.ml hunk ./parse.ml 1 +open XmlFilter +open Torrent + +let rec pcdata_of_xml = function + | Xml.Element (_, _, xml::[]) -> pcdata_of_xml xml + | Xml.PCData x -> x + | xml -> Printf.ksprintf failwith "cannot extract pcdata from xml %s" (Xml.to_string_fmt xml) + +let torrent_of_xml xml = + let field s = List.hd (path [s] (const true) xml) in + let id = pcdata_of_xml (field "guid") in + let title = pcdata_of_xml (field "title") in + let enclosure = field "enclosure" in + let size = try Some (Int64.of_string (Xml.attrib enclosure "length")) with _ -> None in + let url = try Some (Xml.attrib enclosure "url") with _ -> None in + { t_id = id; + t_title = title; + t_info = TitleParser.of_title title; + t_size = size; + t_url = url; + } + +let parse xml = + let items = path ["channel"; "item"] (const true) xml in + let torrents = List.map torrent_of_xml items in + torrents + addfile ./torrent.ml hunk ./torrent.ml 1 +type torrent = + { t_id : string; + t_title : string; (* original title *) + t_info : TitleParser.t; (* parsed name *) + t_size : Int64.t option; + t_url : string option; + } +