-
André Starosta authoredAndré Starosta authored
finalScript.rb 4.20 KiB
def createCommunities file
d = Dir[file + "*"].sort
d.each{|subfile|
meta = subfile + "/" + subfile.split('/')[-1] +".metadata"
name = getName(meta)
descript = getDescription(meta)
community = $client.communities.create(
Dspace::Community.new(
{
'name' => name,
'introductoryText' =>description
}
)
)
createSubComs(subfile,community.id)
}
end
def createSubComs file,id
d = Dir[File.join(file , "*")]
d.each{|subfile|
if(subfile.split(".")[-1] != "metadata")
meta = File.join(subfile , "/" , subfile.split('/')[-1] + ".metadata")
name = getName(meta)
descript = getDescription(meta)
community = $client.communities.create_subcommunity(
Dspace::community.new(
{
'name' = name,
'introductoryText' => description
}
),
id: id
)
createSubComs(subfile,community.id)
end
}
end
def createCollections file
d = Dir[File.join(file , "*")]
d.each{|subfile|
if(subfile.split(".")[-1] != "metadata")
target = subfile
fileName = target.split('/')[-1]
target = fileName.split("_")
if(target[0] == "COL")
meta = file + "/" + file.split('/')[-1] +".metadata"
name = getName(meta)
descript = getDescription(meta)
##PARSE COMMUNITY AND CREATE createCollections
collection =
createItem(subfile,collection.id)
end
if(target[0] == "NUCLEO")
createCollections(subfile)
end
end
}
end
def createItem file,id
d = Dir[File.join(file , "*")]
d.each{|subfile|
target = subfile
fileName = target.split('/')[-1]
target = fileName.split("_")
if(target[0]=="ITEM")
meta = subfile + "/" + subfile.split('/')[-1] + ".metadata"
if(File.exist?(meta))
metarray = getItemMeta(meta)
title = metarray[0]
metarray.delete_at(0)
author = metarray[0]
metarray.delete_at(0)
description = metarray[-1]
metarray.delete_at(-1)
keywords = metarray
else
title = subfile.split('/')[-1].gsub('_',' ')
author = ""
description = ""
keywords = title.split(' ')
end
item_metadata = Dspace::Item.new(
'metadata' => [
{'key' => "dc.title", 'value' => title},
{'key' => "dc.creator", 'value' => author},
{'key' => "dc.description", 'value' => description}
]
)
# p id
item = $client.collections.create_item(item_metadata, id: id)
g = Dir[subfile + "/*"].sort
g.each{|subsubfile|
if((subsubfile.split('.')[-1]=~/(?i)pdf|png/g))
itemFile = File.new(subsubfile,'r')
$client.items.add_bitstream(
itemFile,
id:item.id,
name:subsubfile.split('/')[-1].gsub('_',' '),
description:" "
end
)
}
end
}
end
def getName meta
f = File.open(meta, "r")
i = 0
f.each_line{|line|
if(i == 1)
return(line.extractMeta)
end
i += 1
}
end
def getDescription meta
f = File.open(meta, "r")
i = 0
f.each_line{|line|
if(i == 2)
return(line.extractMeta)
end
i += 1
}
end
###################################################################################################
###################################################################################################
$LOAD_PATH.unshift('/home/starosta/c3sl/dspace-scripts/dspace-rest-client/lib')
require 'dspace'
url = "https://seppirhomologa.c3sl.ufpr.br:8443/rest"
login = "admin@seppirhomologa.com"
passw = "adminadmin"
#autenticacao
if(ARGV[0] == "debug")
$client = Dspace::Client.new(dspace_api: url, logger: Logger.new(STDOUT))
else
$client = Dspace::Client.new(dspace_api: url)
end
if !$client.is_running?
raise 'Can\'t connect to DSpace API.'
end
$client.login(login, passw)
###################################################################################################
###################################################################################################
rootComunidades = "/home/starosta/c3sl/dspaceFiles/SEPPIR_SoNucleos/"
rootColecoesItens = "/home/starosta/c3sl/dspaceFiles/BANCO-SEPPIR-20160624/"
#main
createCommunities(rootComunidades)
createCollections(rootColecoesItens)