Verified Commit e2c8e653 authored by Tom Riedl's avatar Tom Riedl
Browse files

🔍 #24 Added meta code

parent 9d4456da
Pipeline #238085007 passed with stages
in 5 minutes and 36 seconds
......@@ -102,6 +102,56 @@ export const config = /*#__PURE__*/configuration({
async function PostProcessHtml(filepath: string): Promise<void>
{
function applySeoAttributes(html: string, tags: Array<string>): string
{
let result: string = html;
// Tags
const keywordsTag: RegExpMatchArray | null = html.match(/<meta name="keywords" content="(.*?)">/gm);
if (tags.length && keywordsTag && keywordsTag.length)
{
result = result.replace(keywordsTag[0], `<meta name="keywords" content="${tags.join(",")}">`);
}
const titleCode: RegExpMatchArray | null = result.match(/<title>(.*?)<\/title>/);
if (titleCode && titleCode.length)
{
const title: string = titleCode[1].trim();
result = result.replace('<link ', `<meta property="og:title" content="${title}"><link `);
}
const typeCode: RegExpMatchArray | null = result.match(/<code>##Type##:(.*?)<\/code>/);
if (typeCode && typeCode.length)
{
const type: string = typeCode[1].trim();
result = result.replace('<link ', `<meta property="og:type" content="${type}"><link `);
result = result.replace(typeCode[0], "");
}
const localeCode: RegExpMatchArray | null = result.match(/<code>##Locale##:(.*?)<\/code>/);
if (localeCode && localeCode.length >= 2)
{
const locale: string = localeCode[1].trim();
result = result.replace(` lang="de"`, ` lang="${locale.substr(0, 2)}"`);
result = result.replace(localeCode[0], "");
result = result.replace('<link ', `<meta property="og:locale" content="${locale.replace("-", "_")}"><link `);
}
const descriptionCode: RegExpMatchArray | null = result.match(/<code>##Description##:(.*?)<\/code>/);
const descriptionTag: RegExpMatchArray | null = html.match(/<meta name="description" content="(.*?)">/);
if (descriptionCode && descriptionCode.length >= 2 && descriptionTag && descriptionTag.length)
{
const description: string = descriptionCode[1].trim();
result = result.replace(descriptionTag[0], `<meta name="description" content="${description}">`);
result = result.replace(descriptionCode[0], "");
result = result.replace('<link ', `<meta property="og:description" content="${description}"><link `);
}
result = result.replace('<link ', `<meta property="og:site_name" content="${config.page.title.base}"><link `);
return result;
}
fse.readFile(filepath, "utf8", function (error: any, data: any)
{
if (error)
......@@ -154,10 +204,11 @@ export const config = /*#__PURE__*/configuration({
// Replace tags
const tagsCode: RegExpMatchArray | null = result.match(/<code>##Tags##:(.*?)<\/code>/gm);
let tagList: Array<string> = [];
for (const codeBlock of tagsCode || [])
{
const tags: string = codeBlock.replace("<code>##Tags##:", "").replace("</code>", "").replace(",", " ").trim();
const tagList: Array<string> = tags.toLowerCase().split(" ");
tagList = tags.toLowerCase().split(" ");
const replacementTags: Array<string> = [];
for (const rawTag of tagList)
{
......@@ -168,6 +219,8 @@ export const config = /*#__PURE__*/configuration({
result = result.replace(codeBlock, replacement);
}
result = applySeoAttributes(result, tagList);
// Extract first image to add it to og:image
const imageUrls: Array<string> | undefined = result.match(/<img [^>]*src="[^"]*"[^>]*>/gm)?.map((x: string) => x.replace(/.*src="([^"]*)".*/, '$1'));
const coverImage: string = imageUrls && imageUrls.length ? imageUrls[0] : "";
......@@ -176,6 +229,12 @@ export const config = /*#__PURE__*/configuration({
result = result.replace('<link ', `<meta property="og:image" content="${coverImage}"><link `);
}
// Remove empty tags
result = result.replace(/<p><\/p>/g, "");
result = result.replace(/<p>\n<\/p>/g, "");
result = result.replace(/<p>\n\n<\/p>/g, "");
result = result.replace(/<link href="" rel="stylesheet">/g, "");
fse.writeFile(filepath, result, "utf8", function (error: any)
{
if (error) return console.error(error);
......
......@@ -86,6 +86,7 @@
"rsen",
"rueckverguetung",
"rxcbja",
"satoshi",
"stackshare",
"tigen",
"tomriedl",
......@@ -93,5 +94,11 @@
"txqmnh",
"vertesten",
"zhkrin"
]
],
"files.exclude": {
"**/*.jpeg": true,
"**/*.jpg": true,
"**/*.png": true,
"tag/**": true
}
}
\ No newline at end of file
# Changelog
`##Description##: Alle Ă„nderungen der Website tomriedl.com`
`##Type##: article`
`##Locale##: de-DE`
Hier siehst du alle Ă„nderungen der Website.<br />
Die Quelltexte des Projekts liegen unter <https://gitlab.com/TomRiedl/tomriedl.com>.
Offene Issues ansehen oder neue eintragen kannst du unter <https://gitlab.com/TomRiedl/tomriedl.com/-/issues>
`##Tags##: changelog`
\ No newline at end of file
# Datenschutzerklärung
`##Description##: Datenschutzerklärung von tomriedl.com`
`##Type##: article`
`##Locale##: de-DE`
## Datenschutz
Ich nehme den Schutz deiner persönlichen Daten sehr ernst. Ich behandle deine personenbezogenen Daten vertraulich und entsprechend der gesetzlichen Datenschutzvorschriften sowie dieser Datenschutzerklärung.
......@@ -52,4 +56,6 @@ Liste der Unterauftragsverarbeiter nach Art. 28 Abs. 1 DSGVO.
| Nummer | Firma | Kontakt | Leistung |
| --- | --- | --- | --- |
| 1 | CyanCor GmbH | Innstr. 71, 83022 Rosenheim, Germany<br /><https://cyancor.com/> | - Archivierung der tomriedl.com-E-Mails nach der gesetzlichen Archivierungspflicht<br />-Website-Backup |
| 2 | Serverprofis GmbH | Mondstr. 2-4, 85622 Feldkirchen, Germany<br /><https://service.serverprofis.net/aff.php?aff=846> | - Hosting der Website<br />- Hosting der E-Mails |
\ No newline at end of file
| 2 | Serverprofis GmbH | Mondstr. 2-4, 85622 Feldkirchen, Germany<br /><https://service.serverprofis.net/aff.php?aff=846> | - Hosting der Website<br />- Hosting der E-Mails |
`##Tags##: datenschutzerklärung dsgvo gdpr`
\ No newline at end of file
# Impressum
`##Description##: Impressum von tomriedl.com`
`##Type##: article`
`##Locale##: de-DE`
- Thomas Riedl<br />SchĂĽtzenstr. 23<br />83024 Rosenheim<br />Germany<br />
- Telefon: +49 8031 208 220 1<br />Kein Telefonsupport, bei Fragen zu Kryptowährungen, Trading etc. biete ich keine Hilfe über Telefon<br />
- Kontakt ĂĽber Telegram: [t.me/tomriedl_group](https://t.me/tomriedl_group)
......@@ -12,4 +16,6 @@ for(var rxcbja=["aw","ZQ","aQ","LQ","bw","aQ","Lg","PA","dw","aA","PA","Ig","ZQ"
var email = "";
for(var i=0;i<zhkrin.length;i++) {email += atob(zhkrin[i]+"==")};
document.getElementById("contactEmail").innerHTML = email;
</script>
\ No newline at end of file
</script>
`##Tags##: impressum`
\ No newline at end of file
# AbkĂĽrzungen, Definitionen und Begriffe der Kryptowelt
`##Description##: Beschreibung häufig verwendeter Begriffe aus der Welt der Kryptowährungen`
`##Type##: article`
`##Locale##: de-DE`
Wie jeder andere Fachbereich hat auch die Kryptowelt ihre eigenen Bezeichnungen. Die wichtigsten sind hier aufgelistet.
Sollte etwas fehlen, teile es mir gerne auf [GitLab](https://gitlab.com/TomRiedl/tomriedl.com/-/issues/new) oder [Telegram](https://t.me/tomriedl_group) mit.
......@@ -47,9 +51,12 @@ Sollte etwas fehlen, teile es mir gerne auf [GitLab](https://gitlab.com/TomRiedl
| <h4 id="minting">Minting</h4> | Prägen | Das Erzeugen von Coins/Tokens ohne den Einsatz von Ressourcen. Der Begriff entstammt dem Prägen von Münzen. |
| <h4 id="nanoeth">Nanoeth</h4> | - | Siehe [Gwei](#gwei). |
| <h4 id="node">Node</h4> | Knoten | Ein Knoten eines Netzwerkes. Meist ein Verbindungspunkt fĂĽr die DatenĂĽbertragung, Speicherung oder der Validierung von Transaktionen. |
| <h4 id="orderbuch">Orderbuch</h4> | - | Verzeichnis aller Kauf- und Verkaufsorders eines Handelspaares einer Börse. |
| <h4 id="otc">OTC</h4> | Over the Counter | Handel von Aktien/Kryptowährungen/Assets außerhalb der [Orderbücher](#orderbuch) von Börsen. |
| <h4 id="pow">PoW</h4> | Proof of Work | Nachweis, meist in Form von CPU-Arbeit für die Echtheit einer Sache (z.B. einer Transaktion). Ein mögliches Mittel gegen Spam. |
| <h4 id="roi">ROI</h4> | Return on Investment | Betriebswirtschaftliche Kennzahl zur Messung der Rendite. |
| <h4 id="safu">SAFU</h4> | Secure Asset Fund for Users | Eine Notfallreserve um User bei Hacks oder Verlusten Assets zurĂĽckzuzahlen. Ein [Backronym](https://de.wikipedia.org/wiki/Backronym) das durch das Video [Funds Are Safu von Bizonacci](https://www.youtube.com/watch?v=DelF6zEHXpE) nach den [Twitter-Posts "Funds are safe"](https://twitter.com/cz_binance) von [Binance](BINANCE_URL)-CEO entstand. |
| <h4 id="satoshi">Satoshi</h4> | - | Kleinste Bitcoin-Einheit. 1 Satoshi entspricht 0.00000001 [BTC](#btc) |
| <h4 id="smart-contract">Smart Contract</h4> | "Intelligenter" Vertrag | Ein Smart Contract ist ein Vertrag, der ĂĽber Protokolle und Schnittstellen digital bedient werden kann. [Smart Contract auf Wikipedia](https://de.wikipedia.org/wiki/Smart_Contract) |
| <h4 id="stablecoin">Stablecoin</h4> | - | Kryptowährungen, die den Wert einer bestimmten Währung abbilden und immer konstant halten. Beispiel: 1 USDT entspricht immer $1.00 |
| <h4 id="testnet">Testnet</h4> | Test-Netzwerk | Ein Blockchain-Netzwerk zu Testzwecken, welche zur Entwicklung und der Vertestung einer Blockchain verwendet wird. |
......
# Liquid Earn - Lending Plattform
`##Description##: Bei Liquid Zinsen auf die Kryptowährungen erhalten`
`##Type##: article`
`##Locale##: de-DE`
![Liquid fĂĽhrt Lending ein - Liquid Earn](liquid-earn.jpg)
Die Kryptobörse [Liquid](LIQUID_URL) (alter Name "Quoinex") führt demnächst **Liquid Earn** ein. Hierbei partnern sie mit der Lending-Plattform [Celsius](CELSIUS_URL) aus England. Bei Celsius kann man sich mittlerweile als deutscher Bürger nicht mehr registrieren, man hatte also keine Möglichkeit mehr von dem Zinssystem von Celsius zu profitieren. Nun ist das über Liquid dennoch möglich.
......
# Telegram
`##Description##: NĂĽtzliche Telegram-Channels und Telegram-Gruppen`
`##Type##: article`
`##Locale##: de-DE`
## Offizielle Telegram-Gruppe und Channel
- [Allgemeine Telegram-Gruppe: https://t.me/tomriedl_group](https://t.me/tomriedl_group)
- [Channel zur Homepage: https://t.me/tomriedl_news](https://t.me/tomriedl_news)
## Empfohlene Channels
- Crypto Ticker: <https://t.me/crypto_ticker>
- Bullion Ticker: <https://t.me/bullion_ticker>
\ No newline at end of file
- Bullion Ticker: <https://t.me/bullion_ticker>
```##Tags##: telegram channel gruppe group kanal```
# Ăśber Tom Riedl
`##Description##: Informationen ĂĽber Tom Riedl`
`##Type##: article`
`##Locale##: de-DE`
![Tom Riedl](tom-riedl.png)
🏠 Rosenheim<br />
......
# Anleitung fĂĽr neues Bitfinex Affiliate/Referral-System
`##Description##: Affiliate Link erstellen, Erklärung Referral-System`
`##Type##: article`
`##Locale##: de-DE`
![Anleitung fĂĽr neues Bitfinex Affiliate/Referral-System](/wp-content/uploads/2019/10/bitfinex-affiliate-programm-anleitung.png)
Seit ĂĽber einem Jahr war das [Affiliate-System von Bitfinex](BITFINEX_URL) deaktiviert und wurde nun als neues System 2019-10-17 um 12:00 Uhr neu freigegeben.
......
# Binance Referral Code – Affiliate Link, wo finde ich ihn?
`##Description##: 20% Kommission erhalten, Binance Referral Link/Affiliate Code erstellen`
`##Type##: article`
`##Locale##: de-DE`
![Binance Referral Code Affiliate Link erzeugen](/wp-content/uploads/2017/12/binance-referral-code.png)
Bei [Binance](BINANCE_URL) erhält man 20% Kommission aller eingeladenen Personen. Ähnlich wie bei [Bitfinex](BITFINEX_URL) ([Anleitung](/version1/anleitung-fuer-neues-bitfinex-affiliate-referral-system/)) erhält man die Vergütung in der jeweiligen Währung, in der die geworbene Personen gehandelt hat. Es ist möglich, einen Rückvergütungssatz für den geworbenen festzulegen.
......
# Bitcoin Expresskauf mit Fidor und Bitcoin.de
`##Description##: Bitcoin schnell und unkompliziert ĂĽber bitcoin.de und Fidor kaufen`
`##Type##: article`
`##Locale##: de-DE`
![Bitcoin Expresskauf mit Fidor und Bitcoin.de](/wp-content/uploads/2017/10/bitcoin.de-1000.png)
Bitcoins können auf verschiedenen Wegen erworben werden, sehr schnell geht das jedoch mit dem neuen [Express-Kauf von bitcoin.de](https://www.bitcoin.de/de/r/b3dhpd) über [Fidor](https://banking.fidor.de/register?ibid=22253282). Fidor ist eine Online-Bank mit kostenlosem Bankkonto und vielen nützlichen Werkzeugen, u.a. einer vollständigen Banking-API. Über diese Banking-API wird der Bitcoinkauf von [bitcoin.de](https://www.bitcoin.de/de/r/b3dhpd) abgewickelt. Ab 14.02.2018 wird hierbei allerdings eine Transaktionsgebühr von 0.5% des Transaktionsvolumens erhoben.
......
# Bitfinex Invitation Code (Einladungscode)
`##Description##: Bitfinex Ref-Link fĂĽr vergĂĽnstigte GebĂĽhren`
`##Type##: article`
`##Locale##: de-DE`
![bitfinex referral affiliate einladungscode](/wp-content/uploads/2017/12/bitfinex-invitation-code-1.png)
Verwende fĂĽr die Registrierung folgenden Link fĂĽr eine RĂĽckvergĂĽtung von 6%:<br /><BITFINEX_URL><br /><br />
......
# Coinlend-App
`##Description##: Beschreibung der Coinlend-App fĂĽr Android und iOS`
`##Type##: article`
`##Locale##: de-DE`
![coinlend app](/wp-content/uploads/2018/07/coinlend-app.jpg)
Die deutschen Entwickler aus Mannheim haben mit [coinlend](COINLEND_URL) das zinsbringende Verleihen von Kryptowährungen zu einem effizienten und komfortablen Service gemacht.
......
# EOSfinex: Neue dezentrale Börse von Bitfinex
`##Description##: Ankündigung der dezentralen Kryptobörse EOSfinex`
`##Type##: article`
`##Locale##: de-DE`
![EOSfinex: Neue dezentrale Börse von Bitfinex](/wp-content/uploads/2018/02/eosfinex-1.png)
Bitfinex hat am 12. Februar 2018 [angekündigt](https://medium.com/bitfinex/announcing-eosfinex-69eea273369f), dass sie an der dezentrale Kryptobörse [EOSfinex](https://www.eosfinex.com/) arbeiten. Dabei nutzen sie die Technologie EOS. EOS ([Homepage](https://eos.io/), [Whitepaper](https://github.com/EOSIO/Documentation/blob/master/TechnicalWhitePaper.md), [Quelltexte](https://github.com/eosio)) ist eine Open Source Smart Contract Plattform, auf dessen Basis dezentrale Anwendungen entwickelt werden können.
......
# ICO-Teilnahme am Beispiel von DragonChain
`##Description##: Anleitung und Beschreibung einer ICO-Teilnahme`
`##Type##: article`
`##Locale##: de-DE`
![ICO-Teilnahme am Beispiel von DragonChain](/wp-content/uploads/2017/10/dragonchain-cover.png)
[ICOs (Initial Coin Offerings)](/krypto/abkuerzungen-definitionen-und-begriffe-der-kryptowelt/) sind eine interessante und oft auch lukrative Möglichkeit der Spekulation.
......
# IOTA – Erste Hilfe, Fragen und Antworten (FAQ)
`##Description##: Häufige Fragen und Antworten zu IOTA`
`##Type##: article`
`##Locale##: de-DE`
![IOTA – Erste Hilfe, Fragen und Antworten (FAQ)](/wp-content/uploads/2017/12/iota-faq.png)
Auf dieser Seite findest du Antworten und Hilfe zu bestimmten Fehlern der IOTA Wallet oder ganz allgemein zu IOTA. Solltest du einen Fehler oder eine Frage vermissen, dann [erstelle hierzu einfach ein Issue](https://gitlab.com/TomRiedl/tomriedl.com/-/issues) oder schreibe in der [Telegram-Gruppe](/telegram/).
......
# IOTA Seed erzeugen / IOTA-Seed-Generator
`##Description##: Eine sichere Seed fĂĽr IOTA erstellen`
`##Type##: article`
`##Locale##: de-DE`
![IOTA Seed-Generator](/wp-content/uploads/2017/06/iota-seed-generator.png)
Die IOTA-Seed muss 81 Zeichen lang sein und darf nur die Zeichen A-Z und die Ziffer 9 enthalten.
......
# IOTA Snapshots
`##Description##: Was sind IOTA-Snapshots und was ist hierfĂĽr zu tun`
`##Type##: article`
`##Locale##: de-DE`
![IOTA Snapshots](/wp-content/uploads/2018/02/iota-snapshots.png)
`Veröffentlicht 2018-02-04, Autor: Tom Riedl`
......
# IOTA Trading auf Bitfinex
`##Description##: IOTA auf Bitfinex erwerben`
`##Type##: article`
`##Locale##: de-DE`
![IOTA Trading auf Bitfinex](/wp-content/uploads/2017/06/iota-trading-announcement.jpeg)
Ab morgen, den 13. Juni 2017 kann endlich IOTA auf [Bitfinex](BITFINEX_URL) gehandelt werden. Der Start ist 15:00 Uhr lokale Zeit (13:00 UTC).
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment