Advertisement
Guest User

Last ned bok fra nasjonalbiblioteket

a guest
Sep 7th, 2016
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.10 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html lang="no-NO">
  3. <head>
  4. <meta charset="utf-8">
  5. </head>
  6.  
  7. <h1>Last ned bok fra nasjonalbiblioteket</h1>
  8. Dette scriptet laster ned ei bok fra <a href="http://nb.no">nasjonalbiblioteket</a> i form av et jpg-bilde per side inkl. omslag. Deretter kan du f.eks. lage en pdf-fil av bildene ved hjelp av et program.<p>
  9. For å fylle inn feltene her så går du til nasjonalbiblioteket og åpner boka, høyre-klikker på f.eks. side 10 og velger "Open image in new tag". Der i adresse-feltet står informasjonen du trenger.<p>
  10. Eksempel:<br>
  11. Hamsun's Sult side 10 har adressen: <code style="background-color:#ffff99">http://www.nb.no/services/image/resolver?url_ver=geneza&urn=URN:NBN:no-nb_digibok_<b>2009011604050</b>_0010&maxLevel=5&level=3&col=0&row=0&<b>resX=1760</b>&<b>resY=2872</b>&tileWidth=1024&tileHeight=1024&pg_id=10</code><br>
  12. Dermed kan du fylle inn:<br>
  13. BokID: 2009011604050<br>
  14. Fra side og Til side setter ihh. boka slik du ser den i nasjonalbiblioteket, hele boka blir Fra side 1 Til side 165<br>
  15. Level 3 gir små bilder (ei bok blir ca 5-10 MB), Level 4 gir større bilder (ei bok blir ca 20-50 MB)<br>
  16. ResX: 1760 og ResY: 2872<br>
  17. Deretter lastes boka ned i mappa 2009011604050/<br>
  18. <p>
  19. <div style="background-color:#efefef">
  20. <br><form action="" method=post>
  21. BokId: <input type=text name=bookid><p>
  22. Fra side <input type=text name=frompage size=3> Til side <input type=text name=topage size=3><p>
  23. Level 3 <input type="radio" name="level" value="3"> Level 4 <input type="radio" name="level" value="4"><p>
  24. ResX <input type=text name=resx size=3> ResY <input type=text name=resy size=3><p>
  25. <input type=submit value="Last ned">
  26. </form>
  27. <br>
  28. </div>
  29.  
  30. <?php
  31. ini_set('memory_limit','128M');
  32. set_time_limit (0);
  33.  
  34. if (!count($_POST)) exit;
  35. $bookid = $_POST["bookid"];
  36. $frompage = $_POST["frompage"];
  37. $topage = $_POST["topage"];
  38. $level = $_POST["level"];
  39. $resx = $_POST["resx"];
  40. $resy = $_POST["resy"];
  41. $maxlevel = 5;
  42. $x = 1024;
  43. $y = 1024;
  44.  
  45. function merge($filename_1, $filename_2, $filename_result) {
  46.     // Get dimensions for specified images
  47.     list($width_1, $height_1) = getimagesize($filename_1);
  48.     list($width_2, $height_2) = getimagesize($filename_2);
  49.    
  50.     // Create new image with desired dimensions
  51.     $image = imagecreatetruecolor($width_1, $height_1 + $height_2);
  52.    
  53.     // Load images and then copy to destination image
  54.     $image_1 = imagecreatefromjpeg($filename_1);
  55.     $image_2 = imagecreatefromjpeg($filename_2);
  56.     imagecopy($image, $image_1, 0, 0, 0, 0, $width_1, $height_1);
  57.     imagecopy($image, $image_2, 0, $height_1, 0, 0, $width_2, $height_2);
  58.    
  59.     // Save the resulting image to disk (as JPEG)
  60.     imagejpeg($image, $filename_result);
  61.    
  62.     // Clean up
  63.     imagedestroy($image);
  64.     imagedestroy($image_1);
  65.     imagedestroy($image_2);
  66. }
  67.  
  68. @mkdir($bookid);
  69.  
  70. // Get covers
  71. for ($c = 1; $c <=3; $c++) {
  72.     echo "henter cover $c...<br>";
  73.     ob_flush();
  74.     for ($row = 0; $row < 2; $row++) {
  75.         $url = "http://www.nb.no/services/image/resolver?url_ver=geneza&urn=URN:NBN:no-nb_digibok_".$bookid."_C".$c."&maxLevel=$maxlevel&level=$level&col=0&row=$row&resX=$resx&resY=$resy&tileWidth=$x&tileHeight=$y";
  76.         $img = "row$row.jpg";
  77.         file_put_contents($img, file_get_contents($url));
  78.         if ($level == 3) break;
  79.     }
  80.     if ($level == 3) {
  81.         rename('row0.jpg', "$bookid/cover$c.jpg");
  82.     } else {
  83.         merge('row0.jpg', 'row1.jpg', "$bookid/cover$c.jpg");
  84.     }
  85. }
  86.  
  87. // Get pages
  88. for ($page = $frompage; $page <= $topage; $page++) {
  89.     $curr_page = str_pad($page, 4, '0', STR_PAD_LEFT);
  90.     echo "henter side $curr_page...<br>";
  91.     ob_flush();
  92.     for ($row = 0; $row < 2; $row++) {
  93.         $url = "http://www.nb.no/services/image/resolver?url_ver=geneza&urn=URN:NBN:no-nb_digibok_".$bookid."_".$curr_page."&maxLevel=$maxlevel&level=$level&col=0&row=$row&resX=$resx&resY=$resy&tileWidth=$x&tileHeight=$y";
  94.         $img = "row$row.jpg";
  95.         file_put_contents($img, file_get_contents($url));
  96.         if ($level == 3) break;
  97.     }
  98.     if ($level == 3) {
  99.         rename('row0.jpg', "$bookid/p$curr_page.jpg");
  100.     } else {
  101.         merge('row0.jpg', 'row1.jpg', "$bookid/p$curr_page.jpg");
  102.     }
  103. }
  104.  
  105. if ($level == 4) {
  106.     unlink('row0.jpg');
  107.     unlink('row1.jpg');
  108. }
  109.  
  110. echo "OK";
  111. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement