跳转到内容

模組:FindSources

被永久保护的模块
维基百科,自由的百科全书

这是本页的一个历史版本,由Dabao qian留言 | 贡献2024年10月15日 (二) 21:01 (回退到由Dabao qian讨论)做出的修订版本84600836)编辑。这可能和当前版本存在着巨大的差异。

local fs = {}
local getArgs
local KW_LIMIT = 5

local function linkbuilder(args,url_model, split, url_other, firstword_show, split_show)
	local qw = {}
	for i = 1, KW_LIMIT do
		local val = args[i]
		val = (i == 1 and val == nil) and args["subpagename"] or val
		if val ~= nil then
			val = tostring(mw.uri.encode(i == 1 and '"' .. val .. '"' or val))
			if i ~= 1 then table.insert(qw, split) end
			table.insert(qw, val)
		else
			break
		end
	end
	local url = mw.ustring.format(url_model, table.concat(qw, ""))
	url = (url_other ~= nil and url .. url_other) or url

	local shower_url = nil
	if firstword_show == nil then
		local sw = {}
		for i = 1, KW_LIMIT do
			local val = args[i]
			val = (i == 1 and val == nil) and args["subpagename"] or val
			if val ~= nil then
				if i == 1 then
					table.insert(sw, '"' .. val .. '"')
				else
					table.insert(sw, split_show)
					table.insert(sw, val)
				end
			else
				break
			end
		end
		shower_url = table.concat(sw, "")
	else
		shower_url = firstword_show
	end
	return mw.ustring.format('[%s %s]', url, shower_url)
end

local function isinterface()
	return args["namespacenum"] == 8
end

local function textconv(hans, hant, frame)
	local lan = require('Module:Lan')

	return lan._main(
		{ ['zh-hans'] = hans, ['zh-hant'] = hant },
		frame or mw.getCurrentFrame()
	)
end

function fs._main(args)
	local out

	if args["namespacenum"]==0 then
		return '<span class="error">請勿在條目使用findsources模板!</span>'
	end

	if isinterface then
		out = textconv('来源搜索:', '來源搜尋:')
	else
		out = '来源搜-{zh-cn:索;zh-tw:尋;}-:'
	end

	out = out .. '<span class="plainlinks">'
	--
	.. isinterface and textconv('“', '「') or '「-{' .. linkbuilder(args, '//www.google.com/search?&as_eq=wikipedia&q=%s', '+' , nil , nil , '&nbsp;') .. textconv('”', '」') or '}-」' .. '&mdash;&mdash;'
	--
	..'Google:'
	..linkbuilder(args,'//www.google.com/search?q=%s','+',nil,'网页')..'、'
	..linkbuilder(args,'//www.google.com/search?tbm=nws&as_src=-newswire+-wire+-presswire+-PR+-press+-release+-wikipedia&q=%s','+',args['free']=='yes' and '&as_price=p1' or nil,'新闻')..'、'
	..linkbuilder(args,'//scholar.google.com/scholar?&q=%s','+',nil,'学术')..'、'	
	..linkbuilder(args,'//www.google.com/search?tbo=p&tbm=bks&q=%s','+',nil,'图书')..'、'
	..linkbuilder(args,'//www.google.com/search?tbm=isch&safe=off&q=%s','+',nil,'图片')..';'
	--
	..'百度:'
	..linkbuilder(args,'//www.baidu.com/s?ie=utf-8&wd=%s','+',nil,'网页')..'、'
	..linkbuilder(args,'https://www.baidu.com/s?rtt=1&bsst=1&cl=2&tn=news&rsv_dl=ns_pc&word=%s','+',nil,'新闻')..'、'
	..linkbuilder(args,'http://xueshu.baidu.com/s?ie=utf-8&wd=%s','+',nil,'学术')..'、'
	..linkbuilder(args,'http://image.baidu.com/i?ie=utf-8&tn=baiduimage&word=%s','+',nil,'图片')..';'
	--
	..linkbuilder(args,'https://gongjushu.cnki.net/rbook/search/simplesearch?key=%s&t=0&c=1','+',nil,'知网工具书')..';'
	..linkbuilder(args,'https://www.jstor.org/action/doBasicSearch?Query=%s&acc=on&wc=on','+',nil,'JSTOR')..';'
	..linkbuilder(args,'https://wikipedialibrary.wmflabs.org/search/?q=%s','+',nil,'维基百科图书馆')
	--
	..'</span>'
	..'<span style="display:none">'
	..linkbuilder(args,'//abusefilter.invalid/ReportedPage?page=%s','+',nil,'Report')
	..'</span>'

	return out
end

function fs.main(frame)
	if not getArgs then
		getArgs = require('Module:Arguments').getArgs
	end
	local args = getArgs(frame, {parentFirst=true})
	local curPage_obj=mw.title.getCurrentTitle()
	args["subpagename"]= curPage_obj.subpageText
	args["namespacenum"]= curPage_obj.namespace
	
	return fs._main(args)
end

return fs