Jump to content

Module:Librivox book/sandbox

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by GreenC (talk | contribs) at 00:02, 19 March 2015. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
local p = {}

function p.book(frame)


  local pframe = frame:getParent()
  local args = pframe.args

  local tname = "Librivox book" -- name of calling template. Change if template rename.

  local dtitle  = nil -- display title (default: title field)
  local stitle  = nil -- search title (default: title field)
  local tagline = "public domain audiobook at [[LibriVox]]"
  local urlhead = "https://librivox.org/search?"
  local italic   = "''"

  if args.id ~= "" and args.id ~= nil then
    return "Error in {{" .. tname .. "}}, id not supported. Please use {{Librivox author}}"
  end

  if args.title == "" or args.title == nil then
    title = mw.title.getCurrentTitle().text
    dtitle = title
    stitle = dtitle
  else
    title = mw.text.trim(args.title)
    dtitle = title
    stitle = dtitle
  end

  if args.stitle ~= nil and args.stitle ~= "" then
    stitle = mw.text.trim(args.stitle)
  end
  if args.dtitle ~= nil and args.dtitle ~= "" then
    dtitle = mw.text.trim(args.dtitle)
    italic  = ""
  end
  local dtitle = mw.ustring.gsub(dtitle,"%s%(.*%)", "") -- remove disambiguation () 
  local stitle = mw.ustring.gsub(stitle,"%s%(.*%)", "")
  local stitle = mw.ustring.gsub(stitle," ", "+") -- replace "<space>" with "+"

  if args.author == "" or args.author == nil then
    lname = ""
  else
    --- Split name into words, count words, set name to last word
    local N = mw.text.split(mw.text.trim(args.author), " ")
    local l, count = mw.ustring.gsub(mw.text.trim(args.author), "%S+", "")
    lname = N[count]
  end

  local url = "[[Image:Speaker Icon.svg|20px]] " .. "[" .. urlhead .. "title=" .. stitle .. "&author=" .. lname .. "&reader=&keywords=&genre_id=0&status=all&project_type=either&recorded_language=&sort_order=catalog_date&search_page=1&search_form=advanced" .. " " .. italic .. dtitle .. italic .. "]" .. " " .. tagline

  return url

end

return p