Attachment @ Un medico in famiglia file_download
2019-03-29
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{ &rarr; Stag(}
        f.print %Q{          <a href="#s#{'%02d' % (s_num  )}">prec</a>  }.strip
        f.print %Q{ &middot; <a href="#s#{'%02d' % (s_num+1)}">cur</a>   }
        f.print %Q{ &middot; <a href="#s#{'%02d' % (s_num+2)}">succ</a>) }
        f.print %Q{ &rarr; Ep(}
        f.print %Q{          <a href="#s#{'%02d' % (s_num+1)}ep#{'%02d' % (ep_num-2)}">prec</a> }.strip
        f.print %Q{ &middot; <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>&nbsp;&nbsp;" + ep_links.each_slice(10).map{|i| i.join(' &middot; ') }.join("<br>&nbsp;&nbsp;") + "</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 |