Anonimo

Modulo:DTSem: differenze tra le versioni

Da Wikitrek.
m
nessun oggetto della modifica
mNessun oggetto della modifica
mNessun oggetto della modifica
 
(80 versioni intermedie di uno stesso utente non sono mostrate)
Riga 58: Riga 58:
function p.SeasonsQty(ShortName)
function p.SeasonsQty(ShortName)
local QueryResult
local QueryResult
local Max
local Max = 0
local PrefixText
local PrefixText
Riga 72: Riga 72:
-- See https://github.com/SemanticMediaWiki/SemanticScribunto/blob/master/docs/mw.smw.ask.md#result
-- See https://github.com/SemanticMediaWiki/SemanticScribunto/blob/master/docs/mw.smw.ask.md#result
-- for return value example
-- for return value example
Max = QueryResult[1]["Stagione"]
     if QueryResult == nil or Max < 0 then
     if QueryResult == nil or Max < 0 then
         return 0
         return 0
     else
     else
    Max = QueryResult[1]["Stagione"]
     return Max
     return Max
     end
     end
Riga 88: Riga 88:
local CategoryText
local CategoryText
local Pages
local Pages
local PagesList = {}
local Series
local Series
local SeriesShort
local SeriesShort
Riga 101: Riga 102:
Series = mw.wikibase.getLabel(Item.claims['P16'][1].mainsnak.datavalue.value.id)
Series = mw.wikibase.getLabel(Item.claims['P16'][1].mainsnak.datavalue.value.id)
if ShortName == "Serie Classica" or ShortName == "Serie Animata" then
if SeriesShort == "Serie Classica" or SeriesShort == "Serie Animata" then
CategoryText = '[[Category:Personaggi della ' .. SeriesShort .. "]]"
CategoryText = '[[Category:Personaggi della ' .. SeriesShort .. "]]"
else
else
Riga 114: Riga 115:
         return "''Nessun risultato''"
         return "''Nessun risultato''"
     else
     else
     return p.RecurringList(Pages, Series)   
    for _, Page in ipairs(Pages.results) do
    table.insert(PagesList, Page.fulltext)
    end
     return p.RecurringList(PagesList, Series)   
end
end
Riga 131: Riga 136:
local SeriesShort
local SeriesShort
local Characters = {}
local Characters = {}
local PagesList = {}
if not Item then
if not Item then
Riga 142: Riga 148:
Series = mw.wikibase.getLabel(Item.claims['P16'][1].mainsnak.datavalue.value.id)
Series = mw.wikibase.getLabel(Item.claims['P16'][1].mainsnak.datavalue.value.id)
if ShortName == "Serie Classica" or ShortName == "Serie Animata" then
if SeriesShort == "Serie Classica" or SeriesShort == "Serie Originale" or SeriesShort == "Serie Animata" then
InstanceText = '[[Istanza::Episodio della ' .. SeriesShort .. "]]"
InstanceText = '[[Istanza::Episodio della ' .. SeriesShort .. "]]"
else
else
InstanceText = '[[Istanza::Episodio di ' .. SeriesShort .. "]]"
InstanceText = '[[Istanza::Episodio di ' .. SeriesShort .. "]]"
end
end
--[==[
Pages = mw.smw.ask(InstanceText .. "|?Personaggio|order=asc|sort=Numero di produzione")
Pages = mw.smw.ask(InstanceText .. "|?Personaggio|order=asc|sort=Numero di produzione")
if Pages == nil then
if Pages == nil then
         return "''Nessun risultato''"
         return "''Nessun risultato'' (<code>" .. mw.text.nowiki(InstanceText) .. "</code>, )"  
     else
     else
     --local myResult = ""
     --local myResult = ""
         for num, row in pairs(Pages) do
         for num, row in pairs(Pages) do
             --myResult = myResult .. '* This is result #' .. num .. '\n'
             --myResult = myResult .. '* This is result #' .. num .. '\n'
            mw.smw.set("Test=" .. num)
             for property, data in pairs( row ) do
             for property, data in pairs( row ) do
             if property == "Personaggio"  then
             if property == "Personaggio"  then
             if type(data) == 'table' then
             if type(data) == 'table' then
             for _, Character in pairs(data) do
             for _, Character in pairs(data) do
             if Characters[data] == nil then
             if Characters[Character] == nil then
             table.insert(Characters, data)
             --table.insert(Characters, Character)
             end
             end
             end
             end
             else
             else
            -- This should never happens
            table.insert(Characters, "NEXT ONE ->")
             if Characters[data] == nil then
             if Characters[data] == nil then
             table.insert(Characters, data)
             table.insert(Characters, data)
Riga 173: Riga 182:
         end
         end
end
end
return p.RecurringList(Characters, Series)  
]==]
NewPages = mw.smw.getQueryResult(InstanceText .. "|?Personaggio|limit=500|order=asc|sort=Numero di produzione")
for _, Episode in ipairs(NewPages.results) do
for _, Character in ipairs(Episode.printouts.Personaggio) do
local CharText = Character.fulltext
if not Characters[CharText] then
table.insert(Characters, CharText)
Characters[CharText] = true
end
end
end
 
table.sort(Characters)
if type(Characters) == 'table' and Characters ~= nil then
for _, Page in ipairs(Characters) do
    table.insert(PagesList, Page)
    end
return p.RecurringList(PagesList, Series, 3)
--return #Characters .. " - " .. #Characters .. " - " .. table.concat(PagesList, ", ")
else
return "No table"
end
--return table.concat(Results, string.char(10))
--return table.concat(Results, string.char(10))
end
end
--- Helper to extract recurring characters and list them
--- Helper to extract recurring characters and list them
--  
--  
-- @param Pages Array of characters' page name
-- @param Pages Table containing characters' pages names
-- @param Series String with name of the Series
-- @param Series String with name of the Series
-- @param[opt=1] MinOccurr Integer with minimum value of occurencies
-- @return String Bullet list of characters and episodes
-- @return String Bullet list of characters and episodes
function p.RecurringList(Pages, Series)
function p.RecurringList(Pages, Series, MinOccurr)
local Results = {}
local Results = {}
if not MinOccurr or MinOccurr < 1 then
MinOccurr = 1
end
     if type(Pages) == "table" then
     if type(Pages) == "table" then
     for _, Page in ipairs(Pages.results) do
     --for _, Page in ipairs(Pages.results) do
    for _, Page in ipairs(Pages) do
     local Count
     local Count
     local Episodes = {}
     local Episodes = {}
Riga 192: Riga 232:
        
        
         --Count = mw.smw.ask('[[Serie::' .. Series .. ']][[Personaggio::' .. Page.fulltext .. ']]|format=count')
         --Count = mw.smw.ask('[[Serie::' .. Series .. ']][[Personaggio::' .. Page.fulltext .. ']]|format=count')
         Episodes = mw.smw.ask('[[Serie::' .. Series .. ']][[Personaggio::' .. Page.fulltext .. ']]|sort=Numero di produzione|order=asc')
         --Episodes = mw.smw.ask('[[Serie::' .. Series .. ']][[Personaggio::' .. Page.fulltext .. ']]|sort=Numero di produzione|order=asc')
        Episodes = mw.smw.ask('[[Serie::' .. Series .. ']][[Personaggio::' .. Page .. ']]|limit=100|sort=Numero di produzione|order=asc')
        
        
         if (Episodes ~= nil) and (#Episodes > 0) then
         if (Episodes ~= nil) and (#Episodes > MinOccurr - 1) then
         --[=[
         --[=[
         Episodes = mw.smw.getQueryResult('[[Serie::' .. Series .. ']][[Personaggio::' .. Page.fulltext .. ']]|sort=Numero di produzione|order=asc')
         Episodes = mw.smw.getQueryResult('[[Serie::' .. Series .. ']][[Personaggio::' .. Page.fulltext .. ']]|sort=Numero di produzione|order=asc')
Riga 214: Riga 255:
             end
             end
         end
         end
         table.insert(Results, "* '''[[" .. Page.fulltext .. "]]''' (" .. #Episodes .. "): " .. table.concat(List, ", "))
         table.insert(Results, "* '''[[" .. Page .. "]]''' (" .. #Episodes .. "): " .. table.concat(List, ", "))
        else
        -- Episode is NULL or number of episodes is LESS the set value
        --table.insert(Results, "* NULL or ZERO Episodes - " .. mw.text.nowiki('[[Serie::' .. Series .. ']][[Personaggio::' .. Page .. ']]|sort=Numero di produzione|order=asc'))
         end
         end
     end
     end