Gostaria de obter uma lista de itens que estou recuperando de um arquivo XML. Estou usando sed para limpar o XML e estou terminando com uma saída como esta:
CountofMonteCristo.zip
English.
http://www.archive.org/download/count_monte_cristo_0711_librivox/count_monte_cristo_0711_librivox_64kb_mp3.zip
Alexandre.
Dumas.
LettersofTwoBrides.zip
English.
http://www.archive.org/download/letters_brides_0709_librivox/letters_brides_0709_librivox_64kb_mp3.zip
Honoréde.
Balzac.
BleakHouse.zip
English.
http://www.archive.org/download/bleak_house_cl_librivox/bleak_house_cl_librivox_64kb_mp3.zip
Charles.
Dickens.
Eu gostaria de usar wget -i para baixar esses arquivos como Language.Lastname.Firstname.Title.zip
Estou aberto para reorganizar o arquivo de alguma forma para que eu possa usar $ filename $ url
Eu tentei alguns comandos sed diferentes. Sed é o que usei para limpar as tags XML, mas não consigo descobrir como mover o texto para o local apropriado. Os títulos, nomes e idiomas variam para cada arquivo.
EDIT: Antes de limpar as tags com sed, cada linha é agrupada em tags, como English e FileTitle. Acho que isso pode ser útil para identificar padrões para reorganizar as coisas.
EDIT2: Aqui está a fonte XML
EDIT3: Algo assim parece que funcionaria, mas estou tendo problemas para modificá-lo para atender às minhas necessidades.
Meu objetivo final é organizar todos os arquivos em pastas, com uma hierarquia de Language -> AuthorLastnameFirstname -> Files.zip
Se o que estou fazendo não for a melhor prática, estou aberto a outros métodos.
Obrigado
Vou sugerir que você não use
bash
oused
etc.! E siga o método python, que é definitivamente uma maneira muito melhor de analisar o xml que você precisa analisar. Acabei de escrever e testar isso com python3.6 e ele faz exatamente o que você pediu.Você pode salvar isso em um arquivo ou apenas colar/digitar em um cli do interpretador python3, depende de você.
Você precisará instalar python3-wget e beautifulsoup4 usando pip ou easy_install etc.
Se você pode usar
jq
, a API do Librivox também fornece saída JSON e provavelmente é mais fácil analisar JSONjq
do que XML com ferramentas XML adequadas.Dá saída como:
Depois disso, é relativamente simples de usar
xargs
:Onde
xargs
use duas linhas como argumento cada uma parawget
, com a primeira linha se tornando o-O
parâmetro de opção e a segunda a URL.Embora eu recomende uma solução baseada em Python como a de Jamie , exceto usar JSON e os recursos JSON integrados do Python em vez de bs4.
Força bruta.
Se o seu xml analisado estiver em
books
Apenas recomponha suas linhas como variáveis e você está pronto, desde que seus blocos de registro sejam preenchidos em 5 linhas.