diff --git a/app/Console/Commands/ParseCachedWebMentions.php b/app/Console/Commands/ParseCachedWebMentions.php new file mode 100644 index 00000000..262e26eb --- /dev/null +++ b/app/Console/Commands/ParseCachedWebMentions.php @@ -0,0 +1,70 @@ +allFiles(storage_path() . '/HTML'); + foreach($HTMLfiles as $file) { + $filepath = $file->getPathname(); + $html = $filesystem->get($filepath); + $url = $this->URLFromFilename($filepath); + $microformats = \Mf2\parse($html, $url); + $webmention = WebMention::where('source' $url)->firstOrFail(); + $webmention->mf2 = json_encode($microformats); + $webmention->save(); + } + } + + /** + * Determine the source URL from a filename. + * + * @param string + * @return string + */ + private function URLFromFilename($filepath) + { + $dir = mb_substr($filepath, mb_strlen(storage_path() . '/HTML/')); + $url = str_replace(['http/', 'https/'], ['http://', 'https://'], $dir); + if (mb_substr($url, -1) == 'index.html') { + $url = mb_substr($url, 0, mb_strlen($url) - 10); + } + + return $url; + } +}