Skip to content

Commit c1bac2d

Browse files
author
octospacc
committed
Fix pie di pagina Listed, embed link, bottone footer, script traduzione, pagine
1 parent 202a387 commit c1bac2d

20 files changed

+371
-155
lines changed

Scripts/Lib/Html2Markdown.js

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
const Exp = {};
22

3-
const TurndownService = require('turndown');
4-
const turndownService = (new TurndownService({
3+
const markdownOptions = {
54
headingStyle: "atx",
65
hr: "---",
76
bulletListMarker: "*",
@@ -10,9 +9,29 @@ const turndownService = (new TurndownService({
109
emDelimiter: "_",
1110
strongDelimiter: "**",
1211
linkStyle: "inlined",
13-
}));
14-
turndownService.keep(['span', 'small', 'sup', 'sub', 'table', 'dl', 'iframe', 'video', 'audio', 'scripts']);
12+
};
13+
14+
const TurndownService = require('turndown');
15+
const turndownService = (new TurndownService(markdownOptions));
16+
turndownService.keep(['span', 'small', 'sup', 'sub', 'dl', 'details', 'table', 'iframe', 'video', 'audio', 'scripts']);
17+
18+
Exp.Transform = (html) => fixFootnoteRefs(turndownService.turndown(html));
1519

16-
Exp.Transform = (html) => turndownService.turndown(html);
20+
function fixFootnoteRefs (markdown) {
21+
const parts = markdown.split('\n' + markdownOptions.hr + '\n');
22+
if (parts.length > 1) {
23+
let footnotesText = '';
24+
const footnotes = ('\n' + parts.slice(-1)[0]).split('[↩](#fnref');
25+
for (let index=1; index<footnotes.length; index++) {
26+
const footnote = ((footnotes[index - 1].split('.')[0].split(')')[1] || ('\n' + index))
27+
+ '. <span id="fn' + index + '"></span>'
28+
+ footnotes[index - 1].split('\n').slice(1).join('\n').split('.').slice(1).join('.')
29+
+ '[↩](#fnref' + footnotes[index].split('\n')[0]);
30+
footnotesText += footnote;
31+
}
32+
parts[parts.length - 1] = footnotesText;
33+
}
34+
return parts.join('\n' + markdownOptions.hr + '\n');
35+
}
1736

1837
module.exports = Exp;

Scripts/Translate/Main.py

Lines changed: 31 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
11
#!/usr/bin/env python3
22
DestinationLanguages = ["it", "en", "es", "fr"] # "de", "eo"
33
IncludePaths = ["/"]
4-
ExcludePaths = ["/categories", "/note/2024-09-19-Raspberry-Output-Audio-Both.md"] # "/miscellanea"
4+
ExcludePaths = ["/categories", "/note/2024-09-19-Raspberry-Output-Audio-Both.md", "/miscellanea/Devlogs.md"] # "/miscellanea/PicoBlog.md"
55

66
import subprocess
77
from os import getcwd, listdir
88
from os.path import dirname, realpath, isfile, isdir
99
from pathlib import Path
1010
from translate_shell.translate import translate
1111

12-
# TODO handle frontmatter properly, some data must be translated (title, ...) but other must not (date, ...)
13-
# TODO also somehow handle overriding data for some translation (title, slug, ...)
14-
# TODO add warning about automatic translation at the beginning
12+
# TODO somehow handle overriding frontmatter data for some translation (title, slug, ...)
1513
# TODO handle deleted files? (it should probably be done in another sh script, not here)
1614

1715
def printf(*objects):
@@ -20,20 +18,31 @@ def printf(*objects):
2018
def get_source_language(document_path):
2119
return document_path.split('/')[0]
2220

21+
def read_original_document(document_path):
22+
return open(("../content/" + document_path), 'r').read()
23+
2324
def make_destination_path(document_path, destination_language):
24-
return ('./translate/' + destination_language + '/'
25+
return ("./translate/" + destination_language + '/'
2526
+ '/'.join(document_path.split('/')[1:]))
2627

27-
# TODO check for edit date in already translated documents and update them if needed
2828
def is_translation_uptodate(source_path, destination_path):
29+
original_lines = split_text_with_frontmatter(read_original_document(source_path))[1].splitlines()
30+
translated_lines = split_text_with_frontmatter(open(destination_path, 'r').read())[1].splitlines()
31+
for [index, original_line] in enumerate(original_lines):
32+
line_key = original_line.split('=')[0]
33+
if line_key.strip().lower() == "lastmod":
34+
if original_line != translated_lines[index]:
35+
return False
36+
break
2937
return True
3038

3139
# TODO handle when the same document is available in multiple source languages?
3240
def needs_translation(source_path, destination_language=None):
33-
for folder_path in ExcludePaths:
34-
if ('/' + '/'.join(source_path.split('/')[1:])).startswith(folder_path + '/'):
41+
for exclude_path in ExcludePaths:
42+
document_path = ('/' + '/'.join(source_path.split('/')[1:]))
43+
if (document_path == exclude_path) or document_path.startswith(exclude_path + '/'):
3544
return False
36-
if not open('../content/' + source_path).read().strip():
45+
if not read_original_document(source_path).strip():
3746
return False
3847
if destination_language:
3948
destination_path = make_destination_path(source_path, destination_language)
@@ -54,6 +63,12 @@ def find_documents(folder_path):
5463
documents[document].append(destination_language)
5564
return documents
5665

66+
def split_text_with_frontmatter(document_text):
67+
text_header = document_text.strip().splitlines()[0].strip()
68+
if text_header in ["---", "+++"]:
69+
text_tokens = document_text.split(text_header)
70+
return [text_header, text_tokens[1], text_header, text_header.join(text_tokens[2:])]
71+
5772
def fix_frontmatter(translated_text, reference_text):
5873
result = ''
5974
reference_lines = reference_text.splitlines()
@@ -75,7 +90,7 @@ def translate_document(document_path, documents):
7590
printf(f"* {document_path} ->")
7691
for destination_language in documents[document_path]:
7792
source_language = get_source_language(document_path)
78-
original_text = open(("../content/" + document_path), 'r').read()
93+
original_text = read_original_document(document_path)
7994
printf('', destination_language)
8095
try:
8196
is_python_translator = True
@@ -87,7 +102,7 @@ def translate_document(document_path, documents):
87102
try:
88103
is_python_translator = False
89104
translated = subprocess.run(
90-
("bash", "../Scripts/Lib/translate-shell.bash", "-brief",
105+
("bash", "../Scripts/Lib/translate-shell.bash", "-brief", "-no-autocorrect",
91106
"-t", destination_language, "-s", source_language,
92107
("file://" + "../content/" + document_path)),
93108
stdout=subprocess.PIPE,
@@ -100,16 +115,12 @@ def translate_document(document_path, documents):
100115
printf('✅')
101116
translated_text = (translated.results[0].paraphrase
102117
if is_python_translator else translated.stdout.decode())
103-
text_header = translated_text.strip().splitlines()[0].strip()
104118
translated_preamble = ("\n\n{{< noticeAutomaticTranslation " + source_language + " >}}\n\n")
105-
if text_header in ["---", "+++"]:
106-
text_tokens = translated_text.split(text_header)
107-
translated_body = text_header.join(text_tokens[2:])
108-
translated_text = (text_header +
109-
fix_frontmatter(text_tokens[1], original_text.split(text_header)[1]) +
110-
text_header)
111-
if translated_body.strip():
112-
translated_text += (translated_preamble + translated_body)
119+
if (translated_tokens := split_text_with_frontmatter(translated_text)):
120+
translated_tokens[1] = fix_frontmatter(translated_tokens[1], original_text.split(translated_tokens[0])[1])
121+
if translated_tokens[3].strip():
122+
translated_tokens.insert(3, translated_preamble)
123+
translated_text = ''.join(translated_tokens)
113124
elif translated_text.strip():
114125
translated_text = (translated_preamble + translated_text)
115126
destination_path = make_destination_path(document_path, destination_language)

assets/ButtonBadges.toml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,12 @@ file = "Follow-me-on-mastodon.png"
7474
href = "https://mastodon.uno/@octo"
7575
rel = "me"
7676

77+
[[20-me]]
78+
alt = "Visita il mio Fritto Misto di OctoSpacc"
79+
file = "Sites/fritto-misto-di-octospacc-1.png"
80+
href = "https://octospacc.altervista.org"
81+
rel = "me"
82+
7783
[[20-me]]
7884
alt = "Bandiera Octt"
7985
file = "Octt-Flag.png"

content/it/blog/2022-12-17-Distrazioni-di-Natale-Albero-Padoru.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -133,8 +133,8 @@ Per concludere, in buona sostanza si può - non ironicamente - affermare che **c
133133

134134
---
135135

136-
1. Sul canale ho ritrovato il comando di **[ImageMagick](https://imagemagick.org)** che usai per creare l'immagine grande contenente tutte le altre disposte a griglia, lo metto qui per chi ha bisogno di stampare cose di questa tipologia: (da eseguire stando nella cartella con tutte le immagini da includere) `montage -define png:size=496x496 -geometry 496x496 -tile 5x7 -auto-orient * OUTPUT.png`. I valori di "496x496" e "5x7" sono modificabili a piacere, qui sono messi in modo che il file risultante avrà **dimensioni** vicinissime a quelle **A4**, con **35 immagini** massime su un solo foglio, tutte scalate **uguali** e **quadrate**. Magari l'immagine finale va stampata **aggiungendo** dei buoni **margini** prima, però, altrimenti rischia di uscire leggermente tagliata. [](#fnref1)
136+
1. <span id="fn1"></span> Sul canale ho ritrovato il comando di **[ImageMagick](https://imagemagick.org)** che usai per creare l'immagine grande contenente tutte le altre disposte a griglia, lo metto qui per chi ha bisogno di stampare cose di questa tipologia: (da eseguire stando nella cartella con tutte le immagini da includere) `montage -define png:size=496x496 -geometry 496x496 -tile 5x7 -auto-orient * OUTPUT.png`. I valori di "496x496" e "5x7" sono modificabili a piacere, qui sono messi in modo che il file risultante avrà **dimensioni** vicinissime a quelle **A4**, con **35 immagini** massime su un solo foglio, tutte scalate **uguali** e **quadrate**. Magari l'immagine finale va stampata **aggiungendo** dei buoni **margini** prima, però, altrimenti rischia di uscire leggermente tagliata. [](#fnref1)
137137

138-
2. **trollare**: In questo caso, fare uno scherzetto innocuo. [](#fnref2)
138+
2. <span id="fn2"></span> **trollare**: In questo caso, fare uno scherzetto innocuo. [](#fnref2)
139139

140-
3. **stare bend**: "_to bend_" in Inglese vuol dire "_piegare_". Io uso l'espressione "_stare bend_", volutamente errata, per intendere "_stare piegata_" (con la schiena o il collo). È un mio meme stupido che nacque sotto circostanze curiose, magari un giorno lo spiegherò. [](#fnref3)
140+
3. <span id="fn3"></span> **stare bend**: "_to bend_" in Inglese vuol dire "_piegare_". Io uso l'espressione "_stare bend_", volutamente errata, per intendere "_stare piegata_" (con la schiena o il collo). È un mio meme stupido che nacque sotto circostanze curiose, magari un giorno lo spiegherò. [](#fnref3)

content/it/blog/2022-12-26-Epicyon-Piattaforma-del-Fediverso-Durata-2-Giorni.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,4 +221,4 @@ Non vorrei essere nei panni di colui che lo sta mantenendo perché, per come sta
221221

222222
---
223223

224-
1. Guardare **tutte le impostazioni disponibili** può dare una buona visione su quali sono alcune delle potenzialità di una qualsiasi piattaforma. Commentarle tutte, specialmente quelle che non ho testato, sarebbe follia; ho però pensato di lasciare [qui una schermata 🖼️]({{< assetsRoot >}}/Media/Epicyon-Dec-2022/Settings.png) completa, chi vuole può almeno leggere le varie opzioni per conto proprio. [](#fnref1)
224+
1. <span id="fn1"></span> Guardare **tutte le impostazioni disponibili** può dare una buona visione su quali sono alcune delle potenzialità di una qualsiasi piattaforma. Commentarle tutte, specialmente quelle che non ho testato, sarebbe follia; ho però pensato di lasciare [qui una schermata 🖼️]({{< assetsRoot >}}/Media/Epicyon-Dec-2022/Settings.png) completa, chi vuole può almeno leggere le varie opzioni per conto proprio. [](#fnref1)

content/it/blog/2023-01-28-Problemi-Hardware-Diventano-Mentali.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,13 +124,13 @@ Ma io **comprare il cavetto un po' prima**, e spegnere il server nell'attesa, **
124124

125125
---
126126

127-
1. È stata una sorpresa anche per me, ma **lo standard USB proibisce i cavi Y**: si veda [Update 72](https://compliance.usb.org/index.asp?UpdateFile=Policies#72); tradotto in italiano,
127+
1. <span id="fn1"></span> È stata una sorpresa anche per me, ma **lo standard USB proibisce i cavi Y**: si veda [Update 72](https://compliance.usb.org/index.asp?UpdateFile=Policies#72); tradotto in italiano,
128128

129129
> _L'uso di un cavo a "Y" (un cavo con due connettori A) è vietato su qualsiasi periferica USB. Se una periferica USB richiede una potenza superiore a quella consentita dalla specifica USB per la quale è stata progettata, deve essere auto-alimentata._
130130
131131
E insomma, che belle le regole, però poi arriva la realtà e la pensa un po' diversamente. Tutto **il mondo reale usa cavi Y** senza farsi troppe _paturnie_[](#fnref1)
132132

133-
2. (Entrambi **5V**)
133+
2. <span id="fn2"></span> (Entrambi **5V**)
134134

135135
* Per il **Pi**, un alimentatore **3A** (appena sopra [il suggerito dalla Raspberry Foundation](https://github.com/raspberrypi/documentation/blob/develop/documentation/asciidoc/computers/raspberry-pi/power-supplies.adoc)) che era incluso in un kit (computerino escluso) di accessori per il Raspante, di **Aukru**. Aò, dopo anni non è esploso, poi le recensioni erano buone comunque, e ancora questa marca vende nuovi alimentatori, e allora va bene...
136136
* Per l'alimentazione **supplementare**, un blocchetto **1A** che era incluso nella confezione del mio vecchio telefono **Huawei** (commercializzato anche in Europa) di bassa gamma, del 2017.

content/it/blog/2023-03-18-Cattiva-Interfaccia-Partizione-Distrutta.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,10 +157,10 @@ _**P.S:** La distribuzione Linux che ho installato a 'sto giro è [Pop!\_OS](htt
157157

158158
---
159159

160-
1. Il sistema che ho tenuto fino a quel momento, Linux Mint, versione 19.3, dopo 3 anni:
160+
1. <span id="fn1"></span> Il sistema che ho tenuto fino a quel momento, Linux Mint, versione 19.3, dopo 3 anni:
161161

162162
<dl><dt><strong>È diventato vecchio:</strong></dt><dd>La versione 19.3 è discontinuata, e le repository non ricevono più nuovi software. Dunque, avrei dovuto aggiornare alla corrente versione di Mint, ma a quanto pare <strong>avrei dovuto comunque</strong> farlo reinstallando <strong>da zero</strong> (su <code class="prettyprint">apt dist-upgrade</code> non ci sono nuovi aggiornamenti)</dd><dt><strong>Si è spaccato:</strong></dt><dd>Alcune cose (come i driver video saltati, e l'ambiente desktop che parte solo in modalità fallback) sono sicuramente colpa mia (<em>ho cringiato</em> con i driver <a href="https://en.wikipedia.org/wiki/Nvidia#:%7E:text=Nvidia" rel="noopener nofollow" target="_blank">ACCIDIA</a> nelle scorse settimane), ma altre (il Bluetooth che non funziona più!?) direi di no :/. In ogni caso, <strong>quando il sistema è così spaccato, si fa prima a reinstallare tutto</strong>...</dd></dl>
163163

164164
 [](#fnref1)
165165

166-
2. Io magari si, son cretina, ma non fino al punto di andarmi ad impostare volontariamente le partizioni con una struttura per me aliena. Al tempo, molto banalmente, feci l'installazione di Linux Mint con le impostazioni guidate predefinite. Tutte le volte in cui installando Linux ho usato il partizionamento manuale, anziché scegliere di cancellare tutto il disco e far decidere le cose al programma di installazione, ho invece sempre creato partizioni normali. Quindi... **non date la colpa a me**, [kthx](https://en.m.wiktionary.org/wiki/kthx#:%7E:text=\(Internet%20slang\)%20Abbreviation%20of%20okay%2C%20thanks.)[](#fnref2)
166+
2. <span id="fn2"></span> Io magari si, son cretina, ma non fino al punto di andarmi ad impostare volontariamente le partizioni con una struttura per me aliena. Al tempo, molto banalmente, feci l'installazione di Linux Mint con le impostazioni guidate predefinite. Tutte le volte in cui installando Linux ho usato il partizionamento manuale, anziché scegliere di cancellare tutto il disco e far decidere le cose al programma di installazione, ho invece sempre creato partizioni normali. Quindi... **non date la colpa a me**, [kthx](https://en.m.wiktionary.org/wiki/kthx#:%7E:text=\(Internet%20slang\)%20Abbreviation%20of%20okay%2C%20thanks.)[](#fnref2)

content/it/blog/2023-04-03-Tutto-Per-Non-Cambiare-Due-Pile.md

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -88,13 +88,3 @@ Questo è quanto. Se **dovessi migliorare** la mia soluzione - che, si, è **gre
8888

8989
---
9090

91-
## Domande scomode
92-
93-
So già che la **domanda arriverà**, quindi rispondo ora:
94-
95-
> _Ma tutte quelle batterie sfuse che hai messo nella foto di copertina?_
96-
97-
Ehhh. Buona domanda.
98-
Sono tutte **pile** che **conservo** quando in casa (non per mano mia, in quanto, lo ripeto, evito più possibile le non ricaricabili) vengono **scartate**, perché molto spesso "scariche" significa soltanto "troppo scariche per il dispositivo da cui sono state sostituite". **Per alcuni** telecomandi **vanno** infatti spesso **ancora bene**, inclusi i miei in certi casi.
99-
100-
Allora ho solo **perso tempo** con il progetto di oggi? Nah, **non direi**: da ora posso tranquillamente **tenere il telecomando** un po' più **riposto**, non più necessariamente sempre sulla **scrivania**, che quindi posso tenere _leggerissimamente_ (perché io poi in un attimo rovino i miei stessi sforzi!) **più ordinata**.

content/it/blog/2023-05-02-Piu-Che-un-Esame-Ho-Fatto-una-Guerra.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,6 @@ Eppure, quel dubbio mi resta ancora: ma **cosa avrò fatto** di tanto male al mo
7373

7474
---
7575

76-
1. La **certificazione**... oddio, anche di quest'ultima, **non è che mi importi** in prima persona: sul mio **letto di morte non** starò certo a **contare le carte** che avrei potuto ma non ho voluto ottenere; principalmente mi convinsero i miei, e allora vabbè. (_Se **dovesse scadere** pure questa prima che possa essere sul serio utile a qualcosa, **mi incazzerò** sul serio, ma lasciamo stare..._[](#fnref1)
76+
1. <span id="fn1"></span> La **certificazione**... oddio, anche di quest'ultima, **non è che mi importi** in prima persona: sul mio **letto di morte non** starò certo a **contare le carte** che avrei potuto ma non ho voluto ottenere; principalmente mi convinsero i miei, e allora vabbè. (_Se **dovesse scadere** pure questa prima che possa essere sul serio utile a qualcosa, **mi incazzerò** sul serio, ma lasciamo stare..._[](#fnref1)
7777

78-
2. **Colpa di Google** (GSuite, cacca), la **rete scolastica** non è riconosciuta come fidata e **non mi fa accedere**. Quel giorno non riuscivo ad accedere nemmeno da smartphone collegandomi alla VPN di casa mia, per qualche motivo! **Spiegai meglio** il problema generale nel mio **articolo sulla chiavetta Puppy**, comunque, quindi rimando lì per chi ha interesse. [](#fnref2)
78+
2. <span id="fn2"></span> **Colpa di Google** (GSuite, cacca), la **rete scolastica** non è riconosciuta come fidata e **non mi fa accedere**. Quel giorno non riuscivo ad accedere nemmeno da smartphone collegandomi alla VPN di casa mia, per qualche motivo! **Spiegai meglio** il problema generale nel mio **articolo sulla chiavetta Puppy**, comunque, quindi rimando lì per chi ha interesse. [](#fnref2)

content/it/blog/2023-06-30-Brutture-Irrisolvibili-della-Dock-Nintendo-Switch.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,4 +118,4 @@ C'è fin troppo di cui parlare a proposito, come al solito, quindi tutto ciò sa
118118

119119
---
120120

121-
1. Una **revisione hardware silenziosa** ha introdotto una versione riprogettata del SoC _NVIDIA Tegra X1_, con un processo produttivo più compatto, che funziona in modo quasi identico all'originale, ma **richiede meno energia**, quindi ne disperde meno, e quindi **scalda di meno**: [https://wiki.wiidatabase.de/wiki/Mariko](https://wiki.wiidatabase.de/wiki/Mariko)[](#fnref1)
121+
1. <span id="fn1"></span> Una **revisione hardware silenziosa** ha introdotto una versione riprogettata del SoC _NVIDIA Tegra X1_, con un processo produttivo più compatto, che funziona in modo quasi identico all'originale, ma **richiede meno energia**, quindi ne disperde meno, e quindi **scalda di meno**: [https://wiki.wiidatabase.de/wiki/Mariko](https://wiki.wiidatabase.de/wiki/Mariko)[](#fnref1)

0 commit comments

Comments
 (0)