From 44017ffd35bda38b75e5f633e812de81407f2394 Mon Sep 17 00:00:00 2001 From: quenousimporte Date: Sun, 7 Jul 2024 15:12:56 +0200 Subject: [PATCH] start to add socialter --- epub.php | 121 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 119 insertions(+), 2 deletions(-) diff --git a/epub.php b/epub.php index d16984f..4b3a8d0 100644 --- a/epub.php +++ b/epub.php @@ -97,6 +97,118 @@ date_default_timezone_set('Europe/Paris'); $date = (new DateTime('today'))->format('Ymd'); + // Socialter + if (isset($_POST['socialter']) && $_POST['socialter']) + { + // parameters hardcoded for now + $includeimages = false; + $includepages = true; + $imagesonly = false; + $imagesize = $imagesonly ? "XLARGE" : "MEDIUM"; + + $url = $_POST['socurl']; + + // extract url from curl command + if (str_starts_with($url, 'curl ')) + { + $url = explode("'", $url)[1]; + echo '

extracted url from curl command:

' . $url . '

'; + } + + $epub = new TPEpubCreator(); + $epub->temp_folder = 'temp/'; + $epub->epub_file = 'epub/socialter.epub'; + $epub->title = 'Socialter ' . $date ; + + // cache json in case url expires + $tempjsonpath = 'temp/' . hash('md5', $url) . '.json'; + $json = ''; + if (file_exists($tempjsonpath)) + { + $json = file_get_contents($tempjsonpath); + } + else + { + $json = file_get_contents($url); + file_put_contents($tempjsonpath, $json); + } + + $publication = json_decode($json); + $content = array_filter($publication->Content, function($item) { return $item->Category == 'Le Monde'; }); + usort($content, function ($a, $b) { return $a->PageNumber - $b->PageNumber; }); + + if ($includepages) + { + $pageindex = json_decode(file_get_contents(str_replace('GetPublicationContentItems', 'GetPublicationPages', $url))); + } + + $page = 0; + foreach ($content as $article) + { + if ($includepages && $article->PageNumber > $page) + { + $page = $article->PageNumber; + $pageobj = array_values(array_filter($pageindex->Page, function($p) + { + global $page; + return $page == $p->PageNumber; + }))[0]; + $pageid = $pageobj->PublicationPageID; + + $path = lm_download_image($url, 'Preview-' . $imagesize . '-', $pageid); + + if ($page == 1) + { + // cover + $epub->AddImage($path, 'image/jpeg', true); + } + else + { + $epub->AddPage('', false, 'Page ' . $page, true); + } + } + + $articlebody = array_filter($article->ContentItem, function($item) { return $item->ContentType == 'text/xml'; }); + $articlebody = array_values($articlebody)[0]; + + if ($articlebody->Title && $articlebody->HtmlText) + { + $pagecontent = '

'. strip_tags($articlebody->Title) . '

'; + $pagecontent .= '

Page ' . $article->PageNumber . '

'; + + $author = array_filter($article->ContentItem, function($item) { return $item->ContentType == 'author/xml'; }); + $author = array_values($author)[0]; + if ($author->Author) + { + $pagecontent .= $author->Author; + } + + if ($articlebody->Introduction) + { + $pagecontent .= '' . $articlebody->Introduction . ''; + } + + if ($includeimages) + { + $images = array_values(array_filter($article->ContentItem, function($item) { return $item->ContentType == 'graphic/jpeg' || $item->ContentType == 'image/jpeg'; })); + foreach ($images as $image) + { + $path = lm_download_image($url, 'Image-MEDIUM-', $image->ContentItemId); + $pagecontent .= '

'; + } + } + $pagecontent .= $articlebody->HtmlText; + + if (!$imagesonly) + { + $epub->AddPage($pagecontent, false, strip_tags($articlebody->Title), true); + } + } + } + write_epub($epub); + } + + // Le Monde if (isset($_POST['lemonde']) && $_POST['lemonde']) { @@ -464,8 +576,13 @@
- +
+ + Socialter +
+ + +

Mediapart