require "simplexml" function descriptor() return { title = "TheTVDB" ; version = "1.0" ; author = "Seva Deribas" ; url = 'http://www.thetvdb.com/'; shortdesc = "An open database for television fans."; description = "Read info about series fetched from TheTVDB database."; capabilities = { "input-listener" } } end function activate() create_dialog() end function deactivate() end function close() vlc.deactivate() end function create_dialog() dlg = vlc.dialog("TVDB") dlg:add_label("Series name:", 1, 1, 1, 1) local item = vlc.input.item() series_name = dlg:add_text_input(item and item:name() or "Input series name here", 2, 1, 1, 1) dlg:add_button("Search", get_info, 3, 1, 1, 1) dlg:show() end function get_info() local title_table = {} local index = 1 local count = 1 local title = series_name:get_text() if title_list then dlg:del_widget(title_list) dlg:del_widget(button_open) dlg:del_widget(summary_label) title_list = nil button_open = nil end title_list = dlg:add_list("", 1, 3, 3, 1) --name = txt:get_text() if no_results then dlg:del_widget(no_results) no_results = nil end url = "http://thetvdb.com/api/GetSeries.php?seriesname=" .. title local waitmsg = 'Searching for ' .. title .. " on theTVDB..." if not waitlbl then waitlbl = dlg:add_label(waitmsg, 1, 2, 3, 1) else waitlbl:set_text(waitmsg) end dlg:update() xml = simplexml.parse_url(url) --vlc.msg.dbg(xml) if xml == nil then no_results = dlg:add_label("The search returned no results (Could be a server error).", 1, 2) if summary_label then dlg:del_widget(summary_label) end dlg:show() return end for i, v in pairs(xml.children) do --vlc.msg.dbg(v.name) if v.name == "Series" then title_table[count] = v.children[3].children[1] count = count + 1 end end count = 1 for i, v in pairs(title_table) do title_list:add_value(v, count) count = count + 1 end waitlbl:set_text(count - 1 .. " results found for " .. title .. ".") button_open = dlg:add_button("Open", show_info, 1, 4, 1, 1) dlg:show() end function show_info() title = title_list:get_selection() for i, v in pairs(title) do selection = v end for i, v in pairs(xml.children) do --vlc.msg.dbg(v.name) if v.children[3].children[1] == selection then summary = v.children[5].children[1] end end if summary ~= nil then row = 4 length = string.len(summary) w = 1 artist_info = "" summary_label = dlg:add_html(summary, 2, 3, 1, 1) else dlg:add_label("The overview for these series is currently anavailable.") end dlg:show() end