Skip to content

Commit

Permalink
Fix pie di pagina Listed, embed link, bottone footer, script traduzio…
Browse files Browse the repository at this point in the history
…ne, pagine
  • Loading branch information
octospacc committed Sep 21, 2024
1 parent 202a387 commit c1bac2d
Show file tree
Hide file tree
Showing 20 changed files with 371 additions and 155 deletions.
29 changes: 24 additions & 5 deletions Scripts/Lib/Html2Markdown.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
const Exp = {};

const TurndownService = require('turndown');
const turndownService = (new TurndownService({
const markdownOptions = {
headingStyle: "atx",
hr: "---",
bulletListMarker: "*",
Expand All @@ -10,9 +9,29 @@ const turndownService = (new TurndownService({
emDelimiter: "_",
strongDelimiter: "**",
linkStyle: "inlined",
}));
turndownService.keep(['span', 'small', 'sup', 'sub', 'table', 'dl', 'iframe', 'video', 'audio', 'scripts']);
};

const TurndownService = require('turndown');
const turndownService = (new TurndownService(markdownOptions));
turndownService.keep(['span', 'small', 'sup', 'sub', 'dl', 'details', 'table', 'iframe', 'video', 'audio', 'scripts']);

Exp.Transform = (html) => fixFootnoteRefs(turndownService.turndown(html));

Exp.Transform = (html) => turndownService.turndown(html);
function fixFootnoteRefs (markdown) {
const parts = markdown.split('\n' + markdownOptions.hr + '\n');
if (parts.length > 1) {
let footnotesText = '';
const footnotes = ('\n' + parts.slice(-1)[0]).split('[↩](#fnref');
for (let index=1; index<footnotes.length; index++) {
const footnote = ((footnotes[index - 1].split('.')[0].split(')')[1] || ('\n' + index))
+ '. <span id="fn' + index + '"></span>'
+ footnotes[index - 1].split('\n').slice(1).join('\n').split('.').slice(1).join('.')
+ '[↩](#fnref' + footnotes[index].split('\n')[0]);
footnotesText += footnote;
}
parts[parts.length - 1] = footnotesText;
}
return parts.join('\n' + markdownOptions.hr + '\n');
}

module.exports = Exp;
51 changes: 31 additions & 20 deletions Scripts/Translate/Main.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,15 @@
#!/usr/bin/env python3
DestinationLanguages = ["it", "en", "es", "fr"] # "de", "eo"
IncludePaths = ["/"]
ExcludePaths = ["/categories", "/note/2024-09-19-Raspberry-Output-Audio-Both.md"] # "/miscellanea"
ExcludePaths = ["/categories", "/note/2024-09-19-Raspberry-Output-Audio-Both.md", "/miscellanea/Devlogs.md"] # "/miscellanea/PicoBlog.md"

import subprocess
from os import getcwd, listdir
from os.path import dirname, realpath, isfile, isdir
from pathlib import Path
from translate_shell.translate import translate

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

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

def read_original_document(document_path):
return open(("../content/" + document_path), 'r').read()

def make_destination_path(document_path, destination_language):
return ('./translate/' + destination_language + '/'
return ("./translate/" + destination_language + '/'
+ '/'.join(document_path.split('/')[1:]))

# TODO check for edit date in already translated documents and update them if needed
def is_translation_uptodate(source_path, destination_path):
original_lines = split_text_with_frontmatter(read_original_document(source_path))[1].splitlines()
translated_lines = split_text_with_frontmatter(open(destination_path, 'r').read())[1].splitlines()
for [index, original_line] in enumerate(original_lines):
line_key = original_line.split('=')[0]
if line_key.strip().lower() == "lastmod":
if original_line != translated_lines[index]:
return False
break
return True

# TODO handle when the same document is available in multiple source languages?
def needs_translation(source_path, destination_language=None):
for folder_path in ExcludePaths:
if ('/' + '/'.join(source_path.split('/')[1:])).startswith(folder_path + '/'):
for exclude_path in ExcludePaths:
document_path = ('/' + '/'.join(source_path.split('/')[1:]))
if (document_path == exclude_path) or document_path.startswith(exclude_path + '/'):
return False
if not open('../content/' + source_path).read().strip():
if not read_original_document(source_path).strip():
return False
if destination_language:
destination_path = make_destination_path(source_path, destination_language)
Expand All @@ -54,6 +63,12 @@ def find_documents(folder_path):
documents[document].append(destination_language)
return documents

def split_text_with_frontmatter(document_text):
text_header = document_text.strip().splitlines()[0].strip()
if text_header in ["---", "+++"]:
text_tokens = document_text.split(text_header)
return [text_header, text_tokens[1], text_header, text_header.join(text_tokens[2:])]

def fix_frontmatter(translated_text, reference_text):
result = ''
reference_lines = reference_text.splitlines()
Expand All @@ -75,7 +90,7 @@ def translate_document(document_path, documents):
printf(f"* {document_path} ->")
for destination_language in documents[document_path]:
source_language = get_source_language(document_path)
original_text = open(("../content/" + document_path), 'r').read()
original_text = read_original_document(document_path)
printf('', destination_language)
try:
is_python_translator = True
Expand All @@ -87,7 +102,7 @@ def translate_document(document_path, documents):
try:
is_python_translator = False
translated = subprocess.run(
("bash", "../Scripts/Lib/translate-shell.bash", "-brief",
("bash", "../Scripts/Lib/translate-shell.bash", "-brief", "-no-autocorrect",
"-t", destination_language, "-s", source_language,
("file://" + "../content/" + document_path)),
stdout=subprocess.PIPE,
Expand All @@ -100,16 +115,12 @@ def translate_document(document_path, documents):
printf('✅')
translated_text = (translated.results[0].paraphrase
if is_python_translator else translated.stdout.decode())
text_header = translated_text.strip().splitlines()[0].strip()
translated_preamble = ("\n\n{{< noticeAutomaticTranslation " + source_language + " >}}\n\n")
if text_header in ["---", "+++"]:
text_tokens = translated_text.split(text_header)
translated_body = text_header.join(text_tokens[2:])
translated_text = (text_header +
fix_frontmatter(text_tokens[1], original_text.split(text_header)[1]) +
text_header)
if translated_body.strip():
translated_text += (translated_preamble + translated_body)
if (translated_tokens := split_text_with_frontmatter(translated_text)):
translated_tokens[1] = fix_frontmatter(translated_tokens[1], original_text.split(translated_tokens[0])[1])
if translated_tokens[3].strip():
translated_tokens.insert(3, translated_preamble)
translated_text = ''.join(translated_tokens)
elif translated_text.strip():
translated_text = (translated_preamble + translated_text)
destination_path = make_destination_path(document_path, destination_language)
Expand Down
6 changes: 6 additions & 0 deletions assets/ButtonBadges.toml
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,12 @@ file = "Follow-me-on-mastodon.png"
href = "https://mastodon.uno/@octo"
rel = "me"

[[20-me]]
alt = "Visita il mio Fritto Misto di OctoSpacc"
file = "Sites/fritto-misto-di-octospacc-1.png"
href = "https://octospacc.altervista.org"
rel = "me"

[[20-me]]
alt = "Bandiera Octt"
file = "Octt-Flag.png"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -133,8 +133,8 @@ Per concludere, in buona sostanza si può - non ironicamente - affermare che **c

---

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)
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)

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

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)
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)
Original file line number Diff line number Diff line change
Expand Up @@ -221,4 +221,4 @@ Non vorrei essere nei panni di colui che lo sta mantenendo perché, per come sta

---

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)
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)
Original file line number Diff line number Diff line change
Expand Up @@ -124,13 +124,13 @@ Ma io **comprare il cavetto un po' prima**, e spegnere il server nell'attesa, **

---

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,
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,

> _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._
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)

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

* 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...
* 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.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,10 +157,10 @@ _**P.S:** La distribuzione Linux che ho installato a 'sto giro è [Pop!\_OS](htt

---

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

<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>

 [](#fnref1)

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)
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)
10 changes: 0 additions & 10 deletions content/it/blog/2023-04-03-Tutto-Per-Non-Cambiare-Due-Pile.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,13 +88,3 @@ Questo è quanto. Se **dovessi migliorare** la mia soluzione - che, si, è **gre

---

## Domande scomode

So già che la **domanda arriverà**, quindi rispondo ora:

> _Ma tutte quelle batterie sfuse che hai messo nella foto di copertina?_
Ehhh. Buona domanda.
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.

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**.
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,6 @@ Eppure, quel dubbio mi resta ancora: ma **cosa avrò fatto** di tanto male al mo

---

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)
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)

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)
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)
Original file line number Diff line number Diff line change
Expand Up @@ -118,4 +118,4 @@ C'è fin troppo di cui parlare a proposito, come al solito, quindi tutto ciò sa

---

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)
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)
Loading

0 comments on commit c1bac2d

Please sign in to comment.