mirror of
https://github.com/Einundzwanzig-Podcast/einundzwanzig-portal.git
synced 2025-12-11 06:46:47 +00:00
Shift automatically applies the Laravel coding style - which uses the PSR-12 coding style as a base with some minor additions. You may customize the code style applied by configuring [Pint](https://laravel.com/docs/pint), [PHP CS Fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer), or [PHP CodeSniffer](https://github.com/squizlabs/PHP_CodeSniffer) for your project root. For more information on customizing the code style applied by Shift, [watch this short video](https://laravelshift.com/videos/shift-code-style).
145 lines
11 KiB
PHP
145 lines
11 KiB
PHP
<?php
|
|
|
|
namespace App\Console\Commands\Parse;
|
|
|
|
use App\Models\Lecturer;
|
|
use App\Models\Library;
|
|
use App\Models\LibraryItem;
|
|
use Illuminate\Console\Command;
|
|
|
|
class ImportLibraryItems extends Command
|
|
{
|
|
/**
|
|
* The name and signature of the console command.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $signature = 'import:l';
|
|
|
|
/**
|
|
* The console command description.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $description = 'Command description';
|
|
|
|
/**
|
|
* Execute the console command.
|
|
*
|
|
* @return int
|
|
*/
|
|
public function handle()
|
|
{
|
|
$items = [
|
|
'https://aprycot.media/blog/weg-zum-bitcoin-standard/' => 'Auf dem Weg zu einem Bitcoin-Standard || Gigi',
|
|
'https://europeanbitcoiners.com/warum-wir-eine-konstante-geldmenge-benoetigen/' => 'B ~ C: Warum wir eine konstante Geldmenge benötigen || Aleksander Svetski',
|
|
'https://aprycot.media/blog/bitcoin-bringt-das-in-ordnung/' => 'Bitcoin bringt das in Ordnung || Parker Lewis',
|
|
'https://europeanbitcoiners.com/orange-new-deal/' => 'Bitcoin: der Orange New Deal || Andrew M. Baily & Bradley Rettler',
|
|
'https://aprycot.media/blog/bitcoin-die-welt-wacht-auf/' => 'Bitcoin - die Welt wacht auf || Gigi',
|
|
'https://aprycot.media/blog/bitcoin-ist-einer-fuer-alle/' => 'Bitcoin ist \'Einer für Alle\' || Parker Lewis',
|
|
'https://europeanbitcoiners.com/bitcoin-ist-energie-die-durch-die-zeit-reisen-kann/' => 'Bitcoin ist Energie, die durch die Zeit reisen kann || Michael Dunworth',
|
|
'https://aprycot.media/blog/bitcoin-ist-hoffnung/' => 'Bitcoin ist Hoffnung || Robert Breedlove',
|
|
'https://aprycot.media/blog/bitcoin-ist-schlechter-ist-besser/' => 'Bitcoin ist “Schlechter ist Besser” || Gwern Branwen',
|
|
'https://blog.karlklawatsch.com/bitcoin/bitcoin-ist-zeit/' => 'Bitcoin ist Zeit || Gigi',
|
|
'https://aprycot.media/blog/bitcoin-ist-antifragil/' => 'Bitcoin ist antifragil || Parker Lewis',
|
|
'https://aprycot.media/blog/bitcoin-ist-die-grosse-entfinanzialisierung/' => 'Bitcoin ist die große Entfinanzialisierung || Parker Lewis',
|
|
'https://aprycot.media/blog/bitcoin-ist-nicht-durch-nichts-gedeckt/' => 'Bitcoin ist durch nichts gedeckt || Parker Lewis',
|
|
'https://aprycot.media/blog/bitcoin-ist-ein-aufschrei/' => 'Bitcoin ist ein Aufschrei || Parker Lewis',
|
|
'https://aprycot.media/blog/bitcoin-ist-ein-trojanisches-pferd-der-freiheit/' => 'Bitcoin ist ein trojanisches Pferd der Freiheit || Alex Gladstein',
|
|
'https://aprycot.media/blog/bitcoin-ist-gesunder-menschenverstand/' => 'Bitcoin ist gesunder Menschenverstand || Parker Lewis',
|
|
'https://aprycot.media/blog/bitcoin-ist-kein-schneeballsystem/' => 'Bitcoin ist kein Schneeballsystem || Parker Lewis',
|
|
'https://aprycot.media/blog/bitcoin-ist-keine-energieverschwendung/' => 'Bitcoin ist keine Energieverschwendung || Parker Lewis',
|
|
'https://aprycot.media/blog/bitcoin-ist-nicht-zu-langsam/' => 'Bitcoin ist nicht zu langsam || Parker Lewis',
|
|
'https://aprycot.media/blog/bitcoin-ist-nicht-zu-volatil/' => 'Bitcoin ist nicht zu volatil || Parker Lewis',
|
|
'https://aprycot.media/blog/bitcoin-kann-nicht-kopiert-werden/' => 'Bitcoin kann nicht kopiert werden || Parker Lewis',
|
|
'https://aprycot.media/blog/bitcoin-kann-nicht-verboten-werden/' => 'Bitcoin kann nicht verboten werden || Parker Lewis',
|
|
'https://aprycot.media/blog/bitcoin-macht-anderes-geld-ueberfluessig/' => 'Bitcoin macht anderes Geld überflüssig || Parker Lewis',
|
|
'https://aprycot.media/blog/bitcoin-nicht-blockchain/' => 'Bitcoin, nicht Blockchain || Parker Lewis',
|
|
'https://medium.com/aprycotmedia/bitcoins-anpflanzung-71ea533b89c5' => 'Bitcoins Anpflanzung || Dan Held',
|
|
'https://aprycot.media/blog/bitcoins-lebensraeume/' => 'Bitcoins Lebensräume || Gigi',
|
|
'https://aprycot.media/blog/bitcoins-einsatz-vor-ort-venezuela/' => 'Bitcoins\'s Einsatz vor Ort - Venezuela || Gigi',
|
|
'https://europeanbitcoiners.com/bitcoin-und-psychdelika/' => 'Bitcoin und Psychedelika || Fractalencrypt',
|
|
'https://europeanbitcoiners.com/bitcoin-und-die-kardinaltugenden-wie-das-kaninchenloch-tugendhaftes-verhalten-fordert/' => 'Bitcoin und die Kardinaltugenden: wie der Kaninchenbau tugendhaftes Verhalten fördert || Mitchell Askew',
|
|
'https://aprycot.media/blog/bitcoin-und-die-amerikanische-idee/' => 'Bitcoin und die amerikanische Idee || Parker Lewis',
|
|
'https://europeanbitcoiners.com/bitcoin-verkorpert-nikola-teslas-vision-fur-frieden-und-energieuberfluss/' => 'Bitcoin verkörpert Nikola Teslas Vision für Frieden und Energieüberfluss || Level39',
|
|
'https://aprycot.media/blog/check-deine-finanziellen-privilegien/' => 'Check deine finanziellen Privilegien! || Alex Gladstein',
|
|
'https://www.bitcoin.de/de/bitcoin-whitepaper-deutsch-html' => 'Das Bitcoin Whitepaper || Satoshi Nakamoto',
|
|
'https://aprycot.media/blog/das-ei-des-phoenix/' => 'Das Ei des Phönix || Gigi',
|
|
'https://europeanbitcoiners.com/das-manifest-der-bitcoin-hodler-friedfertige-und-monetar-selbstsourverane-individuen/' => 'Das Manifest der Bitcoin Hodler: friedfertige und monetär selbstsouveräne Individuen || The Sovereign Hodler 21',
|
|
'https://medium.com/aprycotmedia/das-bullische-argument-f%C3%BCr-bitcoin-9665e9375727' => 'Das bullische Argument für Bitcoin || Vijay Boyapati',
|
|
'https://medium.com/aprycotmedia/das-monetaere-argument-fuer-bitcoin-62559a4c7b7d' => 'Das monetäre Argument für Bitcoin || Ben Kaufman',
|
|
'https://aprycot.media/blog/der-aufstieg-des-souveraenen-individuums/' => 'Der Aufstieg des souveränen Individuums || Gigi',
|
|
'https://aprycot.media/blog/ewiger-kampf-||-bitcoin/' => 'Der ewige Kampf von Bitcoin || Gigi',
|
|
'https://medium.com/aprycotmedia/die-bitcoin-reise-dab572e5ff72' => 'Die Bitcoin-Reise || Gigi',
|
|
'https://aprycot.media/blog/konsequenzen-bitcoin-verbot/' => 'Die Konsequenzen eines Bitcoin-Verbots || Gigi',
|
|
'https://aprycot.media/blog/die-suche-nach-digitalem-bargeld/' => 'Die Suche nach digitalem Bargeld || Alex Gladstein',
|
|
'https://aprycot.media/blog/die-verantwortung-bitcoin-anzunehmen/' => 'Die Verantwortung, Bitcoin anzunehmen || Gigi',
|
|
'https://europeanbitcoiners.com/die-woerter-die-wir-in-bitcoin-verwenden/' => 'Die Wörter, die wir in Bitcoin verwenden || Gigi',
|
|
'https://aprycot.media/blog/die-wurzel-allen-uebels/' => 'Die Wurzel allen Übels || Fab The Fox',
|
|
'https://aprycot.media/blog/die-zahl-null-und-bitcoin/' => 'Die Zahl Null und Bitcoin || Robert Breedlove',
|
|
'https://europeanbitcoiners.com/die-makellose-schoepfung-||-bitcoin/' => 'Die makellose Schöpfung von Bitcoin || Pascal Huegli',
|
|
'https://aprycot.media/blog/die-versteckten-kosten-des-petrodollars/' => 'Die versteckten Kosten des Petrodollars || Alex Gladstein',
|
|
'https://aprycot.media/blog/freiheit-und-privatsphaere-zwei-seiter-der-gleichen-muenze/' => 'Freiheit und Privatsphäre - Zwei Seiten der gleichen Medaille || Gigi',
|
|
'https://aprycot.media/blog/herren-und-sklaven-des-geldes/' => 'Herren und Sklaven des Geldes || Robert Breedlove',
|
|
'https://europeanbitcoiners.com/hyperbitcoinisierung-der-gewinner-bekommt-alles/' => 'Hyperbitcoinsierung: Der Gewinner bekommt alles || ObiWan Kenobit',
|
|
'https://europeanbitcoiners.com/ist-der-preis-||-bitcoin-volatil-es-ist-alles-relativ/' => 'Ist der Preis von Bitcoin volatil? Es ist alles relativ || Tim Niemeyer',
|
|
'https://aprycot.media/blog/lebenszeichen/' => 'Lebenszeichen || Gigi',
|
|
'https://aprycot.media/blog/liebe-familie-liebe-freunde/' => 'Liebe Familie, liebe Freunde || Gigi',
|
|
'https://aprycot.media/?p=92629' => 'Magisches Internet-Geld || Gigi',
|
|
'https://europeanbitcoiners.com/mises-der-urspruengliche-toxische-maximalist/' => 'Mises: der ursrpüngliche toxische Maximalist || Michael Goldstein',
|
|
'https://aprycot.media/blog/kolonialismus-und-bitcoin/' => 'Monetären Kolonialismus mit Open-Source-Code bekämpfen || Alex Gladstein',
|
|
'https://aprycot.media/blog/privatsphaere-in-bitcoin-bewaehrte-praktiken/' => 'Privatspähre in Bitcoin: Bewährte Praktiken || Gigi',
|
|
'https://aprycot.media/blog/shelling-out-die-urspruenge-des-geldes/' => 'Shelling Out — Die Ursprünge des Geldes || Nick Szabo',
|
|
'https://aprycot.media/blog/spekulative-attacken/' => 'Spekulative Attacken || Pierre Rochard',
|
|
'https://aprycot.media/blog/unveraeusserliche-eigentumsrechte-recht-sprache-geld-und-moral-||-bitcoin/' => 'Unveränderliche Eigentumsrechte - Recht, Sprache, Geld und Moral von Bitcoin || Gigi',
|
|
'https://europeanbitcoiners.com/warum-bitcoin-gut-fur-die-umwelt-ist/' => 'Warum Bitcoin gut für die Umwelt ist || Leon A. Wankum',
|
|
'https://europeanbitcoiners.com/die-padagogik-von-bitcoin/' => 'Die Pädagogik von Bitcoin || Erik Cason',
|
|
'https://europeanbitcoiners.com/bitcoin-first-warum-anleger-bitcoin-getrennt-von-anderen-digitalen-vermogenswerten-betrachten-mussen/' => 'Bitcoin First: Warum Anleger Bitcoin getrennt von anderen digitalen Vermögenswerten betrachten müssen || Fidelity Digital Assets',
|
|
'https://blockinfo.ch/bitcoin-brechen-das-prinzip-von-hartem-geld/' => 'Bitcoin brechen — Das Prinzip von hartem Geld || Ben Kaufman',
|
|
];
|
|
|
|
$library = Library::firstOrCreate(['name' => 'Bitcoin Lesestoff by Gigi'], ['created_by' => 1]);
|
|
|
|
foreach ($items as $link => $item) {
|
|
$name = str($item)->before(' || ');
|
|
$author = str($item)->after(' || ');
|
|
|
|
$contentCreator = Lecturer::firstOrCreate(['name' => $author], [
|
|
'name' => $author,
|
|
'created_by' => 1,
|
|
'team_id' => 1,
|
|
]);
|
|
|
|
$libraryItem = LibraryItem::firstOrCreate(['name' => $name], [
|
|
'lecturer_id' => $contentCreator->id,
|
|
'type' => 'blog_article',
|
|
'language_code' => 'de',
|
|
'value' => $link,
|
|
'created_by' => 1,
|
|
]);
|
|
|
|
try {
|
|
$contents = file_get_contents($link);
|
|
// regex for for og:image
|
|
preg_match('/<meta property="og:image" content="([^"]+)"/', $contents, $matches);
|
|
if (isset($matches[1])) {
|
|
$image = $matches[1];
|
|
$libraryItem->addMediaFromUrl($image)
|
|
->toMediaCollection('main');
|
|
} else {
|
|
$image = null;
|
|
}
|
|
} catch (\Exception $e) {
|
|
// ignore
|
|
}
|
|
|
|
$libraryItem->libraries()
|
|
->sync([$library->id]);
|
|
|
|
$this->info('Name: '.$name.' Author: '.$author.' Link: '.$link);
|
|
}
|
|
|
|
return Command::SUCCESS;
|
|
}
|
|
}
|