fbpx
วิกิพีเดีย

มอดูล:Attached KML

คู่มือการใช้งานมอดูล[สร้าง]
-- Note: Originally written on English Wikipedia as [[w:en:Module:Attached_KML]] -- ##### Localisation (L10n) settings ##### local L10n = {}  -- Template parameter names -- (replace values in quotes with local parameter names) L10n.para = {  display = "display",  from = "from",  header = "header",  title = "title",  wikidata = "wikidata",  demo = "demo", }  -- Other configuration settings L10n.config = {  inline_format = "box", -- controls the format used for inline display, can be set to "box" (default) or "line"  -- "box" example: https://en.wikipedia.org/wiki/Template:Attached_KML  -- "line" example: https://sv.wikipedia.org/wiki/Mall:KML }  -- Other strings L10n.str = {  inline = "inline", -- used with display parameter: (|display=inline) or (|display=title) or (|display=inline,title) or (|display=title,inline)  title = "title", -- (as above)  dsep = ",", -- separator between inline and title (comma in the example above)  kml_prefix = "Template:Attached KML/", -- local KML files are stored as subpages of this location  default_title = "แผนที่เส้นทาง", -- default title for links at top of page, when title parameter not used in transclusion  default_header = "", -- default header for links in inline box, when header parameter not used in transclusion  kml_file = "ไฟล์ KML", -- text to display for link to raw KML file  edit = "แก้ไข", -- text to display for link to edit KML file  help = "วิธีใช้", -- text to display for help page link  help_location = ":en:Help:Attached KML", -- page to link to for help page link  err_prepend = "Attached KML", -- text to prepend to the error messages, when shown at top of page (display=title)  err = { -- error messages  malformed_qid = "Error: malformed item id in <code><nowiki>|" .. L10n.para.wikidata .. "=</nowiki></code>", -- item id doesn't match pattern (number with Q prefix)  bad_qid = "ผิดพลาด: item specified on Wikidata, or in <code><nowiki>|" .. L10n.para.wikidata .. "=</nowiki></code>, is not a KML file <small>(P31→Q26267864 not found)</small>", -- item doesn't have a P31→Q26267864 statement  no_item = "ผิดพลาด: item specified in <code><nowiki>|" .. L10n.para.wikidata .. "=</nowiki></code> not found on Wikidata", -- item not found on wikidata  bad_from = "ผิดพลาด: ไม่พบไฟล์ KML ตรวจสอบ <code><nowiki>|" .. L10n.para.from .. "=</nowiki></code>", -- KML specified by from parameter doesn't exist  no_kml = "ผิดพลาด: ไม่พบไฟล์ KML", -- no KML file found  },  cat = { -- tracking categories: full wikimarkup required, or set to the empty string ("") to not to track the condition  wikidata_kml = "[[หมวดหมู่:บทความที่ใช้เคเอ็มแอลจากวิกิสนเทศ]]", -- tracks mainspace articles using KML from Wikidata  local_kml = "[[Category:Articles using KML not from Wikidata]]", -- tracks mainspace articles not using KML from Wikidata  error_mqid = "[[Category:Attached KML errors|M]]", -- tracks malformed_qid error  error_badqid = "[[Category:Attached KML errors|W]]", -- tracks bad_qid error  error_noitem = "[[Category:Attached KML errors|N]]", -- tracks no_item error  error_from = "[[Category:Attached KML errors|F]]", -- tracks bad_from error  error_nokml = "[[Category:Attached KML errors|K]]", -- tracks no_kml error  },  line = { -- these strings are only needed if using 'inline_format = "line"' configuration  start = "", -- wikitext to display at start of line, may include image markup, should start with a space  separator = "", -- text to display between links to external mapping providers, should include spaces  }, }  -- Masks for external mapping providers, in the form: -- externalLinkMasks[index-number] = { short = "short-label", long = "long-label", link = "url" }' -- The short label is used for the title links; the long label is used for the inline links -- Links in the output will be ordered by index-number -- Instead of kml file's raw url or encoded raw url, use __KML_URL__ or __KML_URL_E__ local externalLinks = {} --externalLinks[1] = {  -- short = "Bing", -- long = "Display on Bing Maps", -- link = "http://www.bing.com/maps/?mapurl=__KML_URL__" --}  -- #### End of L10n settings ####  -- Table of available wikis, in the order that they are to be searched for kml files -- (once a kml file is found, further sites are not checked) local sites = {} sites[1] = { mw.ustring.match( mw.site.server, "%w+" ) .. mw.ustring.gsub( mw.ustring.lower(mw.site.siteName), "[mp]edia", ""), mw.ustring.sub(mw.site.server, 3), "" } -- local wiki (listed first so local files can override files on other wikis) sites[2] = { "commonswiki", "commons.wikimedia.org", "c:" } -- Commons would be a logical central repository for KML files (but has no files as of August 2016) sites[3] = { "enwiki", "en.wikipedia.org", "w:en:" } -- largest source of KML files (as of August 2016) sites[4] = { "bnwiki", "bn.wikipedia.org", "w:bn:" } -- other sites with a KML template, listed in alphabetical order sites[5] = { "cswiki", "cs.wikipedia.org", "w:cs:" } sites[6] = { "fawiki", "fa.wikipedia.org", "w:fa:" } sites[7] = { "frwiki", "fr.wikipedia.org", "w:fr:" } sites[8] = { "jawiki", "ja.wikipedia.org", "w:ja:" } sites[9] = { "mlwiki", "ml.wikipedia.org", "w:ml:" } sites[10] = { "svwiki", "sv.wikipedia.org", "w:sv:" } sites[11] = { "zhwiki", "zh.wikipedia.org", "w:zh:" }  --Parameter for cleaned-up parent.args (whitespace trimmed, blanks removed) local Args = {}  local p = {}  function p.main(frame)  local parent = frame.getParent(frame)  Args = setCleanArgs(parent.args)   local qid = Args[L10n.para.wikidata] or nil   -- get KML file url  local wikiUrl, wikiTitle, wikiLink, trackingWikitext, kmlError  if not (Args[L10n.para.from]) then  if not qid then  wikiUrl, wikiLink, siteindex, kmlError = getUrlFromWikidata()  elseif mw.ustring.find( qid, "^Q%d+" ) then  wikiUrl, wikiLink, siteindex, kmlError = getUrlFromQid(qid)  else  kmlError = makeError(L10n.str.err.malformed_qid, L10n.str.cat.error_mqid)  end  end  if not (wikiUrl) then  wikiLink = Args[L10n.para.from] or mw.title.new(tostring(mw.title.getCurrentTitle())).text  wikiLink = L10n.str.kml_prefix .. wikiLink  wikiTitle = mw.title.new( wikiLink )  if not (wikiTitle.exists) and not (kmlError) then  if Args[L10n.para.from] then  kmlError = makeError(L10n.str.err.bad_from, L10n.str.cat.error_from)  else  kmlError = makeError(L10n.str.err.no_kml, L10n.str.cat.error_nokml)  end  end  wikiUrl = wikiTitle:fullUrl("action=raw","https")  siteindex = 1  trackingWikitext = mw.ustring.format( "<div title=\"KML & Wikidata\" style=\"display:none;\">KML is not from Wikidata</div>{{#ifeq:{{NAMESPACE}}|{{ns:0}}|%s}}", L10n.str.cat.local_kml )  else  trackingWikitext = mw.ustring.format( "<div title=\"KML & Wikidata\" style=\"display:none;\">KML is from Wikidata</div>{{#ifeq:{{NAMESPACE}}|{{ns:0}}|%s}}", L10n.str.cat.wikidata_kml )  end   -- replace __KML_URL__ or __KML_URL_E__ with actual values  local encodedWikiUrl = mw.uri.encode(wikiUrl, "PATH")  for i, v in ipairs( externalLinks ) do  local el1 = safeReplace( v.link, "__KML_URL__", wikiUrl )  local el2 = safeReplace( el1, "__KML_URL_E__", encodedWikiUrl )  externalLinks[i]["link"] = el2  end   -- suppress errors and categories if demo parameter is set  if Args[L10n.para.demo] then  kmlError = nil  trackingWikitext = ""  end   local wikitext = ""  if Args[L10n.para.display] then  local display = mw.text.split(Args[L10n.para.display], '%s*' .. L10n.str.dsep .. '%s*')  if display[1] == L10n.str.title or display[2] == L10n.str.title then  wikitext = makeTitleWikitext(Args[L10n.para.title] or L10n.str.default_title, kmlError)  end  if display[1] == L10n.str.inline or display[2] == L10n.str.inline or (display[1] ~= L10n.str.title and display[2] ~= L10n.str.title) then  local inlineWikitext = makeInlineWikitext(Args[L10n.para.header] or L10n.str.default_header, wikiUrl, kmlError)  wikitext = wikitext .. inlineWikitext  end  else  wikitext = makeInlineWikitext(Args[L10n.para.header] or L10n.str.default_header, wikiUrl, kmlError)  end  wikitext = wikitext .. makeKmldataDiv(wikiLink, siteindex) .. trackingWikitext   return frame:preprocess( wikitext )  end  function setCleanArgs(argsTable)  local cleanArgs = {}  for key, val in pairs(argsTable) do  if type(val) == 'string' then  val = val:match('^%s*(.-)%s*$')  if val ~= '' then  cleanArgs[key] = val  end  else  cleanArgs[key] = val  end  end  return cleanArgs end  function safeReplace(string, pattern, replacement)  -- avoids "Lua error: invalid capture index" that occurs with string.gsub when the replacement contains one or more literal % character  local nonpattern_parts = mw.text.split( string, pattern )  return table.concat(nonpattern_parts, replacement) end   function makeTitleWikitext(titletext, err)  if err and L10n.str.err_prepend then err = mw.ustring.gsub( err, ">", ">" .. L10n.str.err_prepend .. " ", 1 ) end   local titleLinks = {}  for i, v in ipairs( externalLinks ) do  titleLinks[i] = mw.ustring.format( "[%s %s]", v.link , v.short)  end  return mw.ustring.format( "<span style=\"font-size: small;\"><span id=\"coordinates\">\'\'\'%s\'\'\': %s</span></span>", titletext, err or table.concat(titleLinks, " / ") ) end   function makeInlineWikitext(headertext, url, err)  local inlineLinks = {}  for i, v in ipairs( externalLinks ) do  inlineLinks[i] = mw.ustring.format( "[%s %s]", v.link , v.long)  end  local editUrl = mw.ustring.gsub( url, "action=raw", "action=edit" )  local wiki_link_class  if mw.ustring.find( editUrl, mw.site.server, 1, true ) then  wiki_link_class = "plainlinks"  else  wiki_link_class = ""  end   if L10n.config.inline_format == "line" then  return mw.ustring.format( "<li>%s%s%s (<span class=\"%s\">[%s %s] <span style=\"font-size:85%%;\">([%s %s] • [[%s|%s]])</span></span>)</li>", headertext, L10n.str.line.start, err or table.concat(inlineLinks, L10n.str.line.separator), wiki_link_class, url, L10n.str.kml_file, editUrl, L10n.str.edit, L10n.str.help_location, L10n.str.help)  else  return mw.ustring.format( "<table class=\"metadata mbox-small\" style=\"border:1px solid #aaa;background-color:#f9f9f9;font-size: 88%%; line-height: 1.5em\"><tr><td style=\"width:1px\"></td><td class=\"mbox-text plainlist\">%s<span class=\"%s\">\'\'\'[%s %s]\'\'\' ([%s %s] • [[%s|%s]])</span>\n<ul><li>%s</li></ul></td></tr></table>", headertext, wiki_link_class, url, L10n.str.kml_file, editUrl, L10n.str.edit, L10n.str.help_location, L10n.str.help, err or table.concat(inlineLinks, "</li><li>") )  end end  function makeKmldataDiv(link, s_index)  return mw.ustring.format( "<div class=\"kmldata\" data-server=\"%s\" title=\"%s\" style=\"display:none;\">[[%s%s]]</div>", sites[s_index][2], link, sites[s_index][3], link )  end  function makeError(msg, cat)  return mw.ustring.format( "%s%s%s%s%s%s", "<strong class=\"error\" style=\"font-size:100%\">", mw.ustring.gsub( msg, "<code>", "<code class=\"error\" style=\"font-size:inherit;font-weight:normal;border:0\">" ), "</strong>", "{{#switch:{{NAMESPACE}}|{{ns:0}}|{{ns:118}}=", cat, "}}") end   function getUrlFromWikidata() -- Attempts to get url from linked wikidata items, will return nil if it can't  local entity = mw.wikibase.getEntityObject()  if not entity then return nil end   local kml_claim = entity:getBestStatements("P3096") -- P3096 is property "KML file"   if kml_claim then  -- get the QID of the first value of the property  if (kml_claim[1] and kml_claim[1].mainsnak.snaktype == "value" and kml_claim[1].mainsnak.datavalue.type == "wikibase-entityid") then  local kml_qid = "Q" .. kml_claim[1].mainsnak.datavalue.value["numeric-id"]  return getUrlFromQid( kml_qid )  else  return nil -- TODO: error message  end  else  return nil -- TODO: error message  end end  function getUrlFromQid( kml_qid )  local pcall_result, kml_entity = pcall(mw.wikibase.getEntity, kml_qid)  if not pcall_result then return nil, nil, nil, makeError(L10n.str.err.no_item, L10n.str.cat.error_noitem) end -- Error if entity doesn't exist   local p31_claim = kml_entity:getBestStatements("P31") -- P31 is property "instance of"  local has_good_p31  for k, v in pairs( p31_claim ) do  if (p31_claim[k] and p31_claim[k].mainsnak.snaktype == "value" and p31_claim[k].mainsnak.datavalue.type == "wikibase-entityid" and p31_claim[k].mainsnak.datavalue.value["numeric-id"] == 26267864) then  has_good_p31 = true  end  end  if not (has_good_p31) then return nil, nil, nil, makeError(L10n.str.err.bad_qid, L10n.str.cat.error_badqid) end -- Error if item isn't a kml file   local kml_sitelink  local kml_siteindex  local kml_url  for i, v in ipairs( sites ) do  kml_sitelink = kml_entity:getSitelink( v[1] )  if kml_sitelink then  kml_url = "https://" .. v[2] .. "/w/index.php?title=" .. mw.uri.encode( kml_sitelink, "WIKI" ) .. "&action=raw"  kml_siteindex = i  end  if kml_url then break end  end  return kml_url or nil, kml_sitelink or nil, kml_siteindex or nil, nil end  return p 

มอด, attached, อการใช, งานมอด, สร, าง, ณอาจจะต, องการสร, างค, อการใช, งานของมอด, ลน, เข, ยนสามารถทำการทดลองได, กระบะทราย, สร, าง, ดลอก, และช, ดทดสอบ, สร, าง, ของมอด, ลน, โปรดเพ, มหมวดหม, ไปท, หน, าย, อย, หน, าย, อยของมอด, ลน, note, originally, written, english. khumuxkarichnganmxdul srang khunxaccatxngkarsrangkhumuxkarichngankhxngmxdulniphuekhiynsamarththakarthdlxngidthikrabathray srang khdlxk aelachudthdsxb srang khxngmxdulnioprdephimhmwdhmuipthihnayxy doc hnayxykhxngmxdulni Note Originally written on English Wikipedia as w en Module Attached KML Localisation L10n settings local L10n Template parameter names replace values in quotes with local parameter names L10n para display display from from header header title title wikidata wikidata demo demo Other configuration settings L10n config inline format box controls the format used for inline display can be set to box default or line box example https en wikipedia org wiki Template Attached KML line example https sv wikipedia org wiki Mall KML Other strings L10n str inline inline used with display parameter display inline or display title or display inline title or display title inline title title as above dsep separator between inline and title comma in the example above kml prefix Template Attached KML local KML files are stored as subpages of this location default title aephnthiesnthang default title for links at top of page when title parameter not used in transclusion default header default header for links in inline box when header parameter not used in transclusion kml file ifl KML text to display for link to raw KML file edit aekikh text to display for link to edit KML file help withiich text to display for help page link help location en Help Attached KML page to link to for help page link err prepend Attached KML text to prepend to the error messages when shown at top of page display title err error messages malformed qid Error malformed item id in lt code gt lt nowiki gt L10n para wikidata lt nowiki gt lt code gt item id doesn t match pattern number with Q prefix bad qid phidphlad item specified on Wikidata or in lt code gt lt nowiki gt L10n para wikidata lt nowiki gt lt code gt is not a KML file lt small gt P31 Q26267864 not found lt small gt item doesn t have a P31 Q26267864 statement no item phidphlad item specified in lt code gt lt nowiki gt L10n para wikidata lt nowiki gt lt code gt not found on Wikidata item not found on wikidata bad from phidphlad imphbifl KML trwcsxb lt code gt lt nowiki gt L10n para from lt nowiki gt lt code gt KML specified by from parameter doesn t exist no kml phidphlad imphbifl KML no KML file found cat tracking categories full wikimarkup required or set to the empty string to not to track the condition wikidata kml hmwdhmu bthkhwamthiichekhexmaexlcakwikisneths tracks mainspace articles using KML from Wikidata local kml Category Articles using KML not from Wikidata tracks mainspace articles not using KML from Wikidata error mqid Category Attached KML errors M tracks malformed qid error error badqid Category Attached KML errors W tracks bad qid error error noitem Category Attached KML errors N tracks no item error error from Category Attached KML errors F tracks bad from error error nokml Category Attached KML errors K tracks no kml error line these strings are only needed if using inline format line configuration start wikitext to display at start of line may include image markup should start with a space separator text to display between links to external mapping providers should include spaces Masks for external mapping providers in the form externalLinkMasks index number short short label long long label link url The short label is used for the title links the long label is used for the inline links Links in the output will be ordered by index number Instead of kml file s raw url or encoded raw url use KML URL or KML URL E local externalLinks externalLinks 1 short Bing long Display on Bing Maps link http www bing com maps mapurl KML URL End of L10n settings Table of available wikis in the order that they are to be searched for kml files once a kml file is found further sites are not checked local sites sites 1 mw ustring match mw site server w mw ustring gsub mw ustring lower mw site siteName mp edia mw ustring sub mw site server 3 local wiki listed first so local files can override files on other wikis sites 2 commonswiki commons wikimedia org c Commons would be a logical central repository for KML files but has no files as of August 2016 sites 3 enwiki en wikipedia org w en largest source of KML files as of August 2016 sites 4 bnwiki bn wikipedia org w bn other sites with a KML template listed in alphabetical order sites 5 cswiki cs wikipedia org w cs sites 6 fawiki fa wikipedia org w fa sites 7 frwiki fr wikipedia org w fr sites 8 jawiki ja wikipedia org w ja sites 9 mlwiki ml wikipedia org w ml sites 10 svwiki sv wikipedia org w sv sites 11 zhwiki zh wikipedia org w zh Parameter for cleaned up parent args whitespace trimmed blanks removed local Args local p function p main frame local parent frame getParent frame Args setCleanArgs parent args local qid Args L10n para wikidata or nil get KML file url local wikiUrl wikiTitle wikiLink trackingWikitext kmlError if not Args L10n para from then if not qid then wikiUrl wikiLink siteindex kmlError getUrlFromWikidata elseif mw ustring find qid Q d then wikiUrl wikiLink siteindex kmlError getUrlFromQid qid else kmlError makeError L10n str err malformed qid L10n str cat error mqid end end if not wikiUrl then wikiLink Args L10n para from or mw title new tostring mw title getCurrentTitle text wikiLink L10n str kml prefix wikiLink wikiTitle mw title new wikiLink if not wikiTitle exists and not kmlError then if Args L10n para from then kmlError makeError L10n str err bad from L10n str cat error from else kmlError makeError L10n str err no kml L10n str cat error nokml end end wikiUrl wikiTitle fullUrl action raw https siteindex 1 trackingWikitext mw ustring format lt div title KML amp Wikidata style display none gt KML is not from Wikidata lt div gt ifeq NAMESPACE ns 0 s L10n str cat local kml else trackingWikitext mw ustring format lt div title KML amp Wikidata style display none gt KML is from Wikidata lt div gt ifeq NAMESPACE ns 0 s L10n str cat wikidata kml end replace KML URL or KML URL E with actual values local encodedWikiUrl mw uri encode wikiUrl PATH for i v in ipairs externalLinks do local el1 safeReplace v link KML URL wikiUrl local el2 safeReplace el1 KML URL E encodedWikiUrl externalLinks i link el2 end suppress errors and categories if demo parameter is set if Args L10n para demo then kmlError nil trackingWikitext end local wikitext if Args L10n para display then local display mw text split Args L10n para display s L10n str dsep s if display 1 L10n str title or display 2 L10n str title then wikitext makeTitleWikitext Args L10n para title or L10n str default title kmlError end if display 1 L10n str inline or display 2 L10n str inline or display 1 L10n str title and display 2 L10n str title then local inlineWikitext makeInlineWikitext Args L10n para header or L10n str default header wikiUrl kmlError wikitext wikitext inlineWikitext end else wikitext makeInlineWikitext Args L10n para header or L10n str default header wikiUrl kmlError end wikitext wikitext makeKmldataDiv wikiLink siteindex trackingWikitext return frame preprocess wikitext end function setCleanArgs argsTable local cleanArgs for key val in pairs argsTable do if type val string then val val match s s if val then cleanArgs key val end else cleanArgs key val end end return cleanArgs end function safeReplace string pattern replacement avoids Lua error invalid capture index that occurs with string gsub when the replacement contains one or more literal character local nonpattern parts mw text split string pattern return table concat nonpattern parts replacement end function makeTitleWikitext titletext err if err and L10n str err prepend then err mw ustring gsub err gt gt L10n str err prepend 1 end local titleLinks for i v in ipairs externalLinks do titleLinks i mw ustring format s s v link v short end return mw ustring format lt span style font size small gt lt span id coordinates gt s s lt span gt lt span gt titletext err or table concat titleLinks end function makeInlineWikitext headertext url err local inlineLinks for i v in ipairs externalLinks do inlineLinks i mw ustring format s s v link v long end local editUrl mw ustring gsub url action raw action edit local wiki link class if mw ustring find editUrl mw site server 1 true then wiki link class plainlinks else wiki link class end if L10n config inline format line then return mw ustring format lt li gt s s s lt span class s gt s s lt span style font size 85 gt s s s s lt span gt lt span gt lt li gt headertext L10n str line start err or table concat inlineLinks L10n str line separator wiki link class url L10n str kml file editUrl L10n str edit L10n str help location L10n str help else return mw ustring format lt table class metadata mbox small style border 1px solid aaa background color f9f9f9 font size 88 line height 1 5em gt lt tr gt lt td style width 1px gt lt td gt lt td class mbox text plainlist gt s lt span class s gt s s s s s s lt span gt n lt ul gt lt li gt s lt li gt lt ul gt lt td gt lt tr gt lt table gt headertext wiki link class url L10n str kml file editUrl L10n str edit L10n str help location L10n str help err or table concat inlineLinks lt li gt lt li gt end end function makeKmldataDiv link s index return mw ustring format lt div class kmldata data server s title s style display none gt s s lt div gt sites s index 2 link sites s index 3 link end function makeError msg cat return mw ustring format s s s s s s lt strong class error style font size 100 gt mw ustring gsub msg lt code gt lt code class error style font size inherit font weight normal border 0 gt lt strong gt switch NAMESPACE ns 0 ns 118 cat end function getUrlFromWikidata Attempts to get url from linked wikidata items will return nil if it can t local entity mw wikibase getEntityObject if not entity then return nil end local kml claim entity getBestStatements P3096 P3096 is property KML file if kml claim then get the QID of the first value of the property if kml claim 1 and kml claim 1 mainsnak snaktype value and kml claim 1 mainsnak datavalue type wikibase entityid then local kml qid Q kml claim 1 mainsnak datavalue value numeric id return getUrlFromQid kml qid else return nil TODO error message end else return nil TODO error message end end function getUrlFromQid kml qid local pcall result kml entity pcall mw wikibase getEntity kml qid if not pcall result then return nil nil nil makeError L10n str err no item L10n str cat error noitem end Error if entity doesn t exist local p31 claim kml entity getBestStatements P31 P31 is property instance of local has good p31 for k v in pairs p31 claim do if p31 claim k and p31 claim k mainsnak snaktype value and p31 claim k mainsnak datavalue type wikibase entityid and p31 claim k mainsnak datavalue value numeric id 26267864 then has good p31 true end end if not has good p31 then return nil nil nil makeError L10n str err bad qid L10n str cat error badqid end Error if item isn t a kml file local kml sitelink local kml siteindex local kml url for i v in ipairs sites do kml sitelink kml entity getSitelink v 1 if kml sitelink then kml url https v 2 w index php title mw uri encode kml sitelink WIKI amp action raw kml siteindex i end if kml url then break end end return kml url or nil kml sitelink or nil kml siteindex or nil nil end return p ekhathungcak https th wikipedia org w index php title mxdul Attached KML amp oldid 8103230, wikipedia, วิกิ หนังสือ, หนังสือ, ห้องสมุด,

บทความ

, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม