Attachment @ Un medico in famiglia file_download
2019-03-29
«scrape.rb»
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | #!/usr/bin/env ruby # source: https://it.wikipedia.org/wiki/Un_medico_in_famiglia#Prima_stagione stagioni = %w{ https://it.wikipedia.org/wiki/Speciale:Esporta/Episodi_di_Un_medico_in_famiglia_(prima_stagione) https://it.wikipedia.org/wiki/Speciale:Esporta/Episodi_di_Un_medico_in_famiglia_(seconda_stagione) https://it.wikipedia.org/wiki/Speciale:Esporta/Episodi_di_Un_medico_in_famiglia_(terza_stagione) https://it.wikipedia.org/wiki/Speciale:Esporta/Episodi_di_Un_medico_in_famiglia_(quarta_stagione) https://it.wikipedia.org/wiki/Speciale:Esporta/Episodi_di_Un_medico_in_famiglia_(quinta_stagione) https://it.wikipedia.org/wiki/Speciale:Esporta/Episodi_di_Un_medico_in_famiglia_(sesta_stagione) https://it.wikipedia.org/wiki/Speciale:Esporta/Episodi_di_Un_medico_in_famiglia_(settima_stagione) https://it.wikipedia.org/wiki/Speciale:Esporta/Episodi_di_Un_medico_in_famiglia_(ottava_stagione) https://it.wikipedia.org/wiki/Speciale:Esporta/Episodi_di_Un_medico_in_famiglia_(nona_stagione) https://it.wikipedia.org/wiki/Speciale:Esporta/Episodi_di_Un_medico_in_famiglia_(decima_stagione) } # testo copiato a mano su due righe per stagione (titolo/descr) descr_stagioni = File.read('descr_stagioni.md').split("\n").each_slice(2).to_a # NOTE: # - fixed descr stagione 1: "1998." => "Anno 1998." # - fixed s06ep26 "Ascolti Italia" sulla stessa riga fast_links_stagioni = 'Stagioni: ' + descr_stagioni.size.times. map{|s_num| %Q|<a href="#s#{'%02d' % (s_num+1)}">#{'%02d' % (s_num+1)}</a>| }.join(' / ') f_recap = File.open("recap.md",'w') f_recap.puts %Q|# Stagioni:\n\n| stagioni.each_with_index do |s_url, s_num| fname = "s#{'%02d' % (s_num+1)}" unless File.exist?("#{fname}.xml") system %Q{ curl -s "#{s_url}" > #{fname}.xml } end unless File.exist?("#{fname}.txt") system %Q{ cat #{fname}.xml | grep -Ei "^[=a-z]" | grep -Ev "== *(Trama|Note|Collegamenti esterni) *==" | grep -Ev "((Diretto|Scritto) da)|Ascolti Italia" > #{fname}.txt } end f_recap.print %Q|1. **<a href="#s#{'%02d' % (s_num+1)}">#{descr_stagioni[s_num][0].delete('#')}</a>**: | ep_links = [] ep_num = 0 File.open("#{fname}.md",'w') do |f| f.puts "\n<hr>#{fast_links_stagioni}\n" if s_num > 0 f.puts %Q|\n<a name="s#{'%02d' % (s_num+1)}"></a>\n| f.puts "# ==_#{descr_stagioni[s_num][0]}_==\n\n" f.puts "#{descr_stagioni[s_num][1]}\n" File.read("#{fname}.txt").split("\n").each do |l| if l =~ /==(.+)==/ ep_num += 1 f.puts %Q|\n<a name="s#{'%02d' % (s_num+1)}ep#{'%02d' % ep_num}"></a>| f.print %Q{<div style="float: right">} f.print %Q{ → Stag(} f.print %Q{ <a href="#s#{'%02d' % (s_num )}">prec</a> }.strip f.print %Q{ · <a href="#s#{'%02d' % (s_num+1)}">cur</a> } f.print %Q{ · <a href="#s#{'%02d' % (s_num+2)}">succ</a>) } f.print %Q{ → Ep(} f.print %Q{ <a href="#s#{'%02d' % (s_num+1)}ep#{'%02d' % (ep_num-2)}">prec</a> }.strip f.print %Q{ · <a href="#s#{'%02d' % (s_num+1)}ep#{'%02d' % (ep_num)}">succ</a>) } f.puts %Q{</div><br style="clear: both">} f.puts %Q|## \`S#{'%02d' % (s_num+1)}.Ep#{'%02d' % ep_num}\` #{$1}\n\n| ep_links << %Q|<a href="#s#{'%02d' % (s_num+1)}ep#{'%02d' % ep_num}">#{'%02d' % ep_num}</a>| elsif ep_num > 0 f.puts l.gsub(/(\[\[|\]\])/, '*') end end # txt end # md f_recap.puts "<tt><br> " + ep_links.each_slice(10).map{|i| i.join(' · ') }.join("<br> ") + "</tt>" end f_recap.close system %Q| cat recap.md s??.md > umif.md | #system %Q| echo "<hr>\\n# Script per lo scraping dei testi da wikipedia\\n\n~~~ruby" >> umif.md | #system %Q| cat scrape.rb >> umif.md | #system %Q| echo "~~~" >> umif.md | |