• # Pour ceux qui tiennent à leur anonymat

    Posté par  . Évalué à 5.

    Les fichiers sont tous à disponibles sans s'inscrire : http://www.oreilly.com/webops-perf/free/files/nomdulivre.pdf . Sinon y'a les fake mails …

  • # Ma méthode

    Posté par  . Évalué à 4. Dernière modification le 11 février 2018 à 17:36.

    Je n'ai pas la version one-liner, mais j'ai fait comme ça:

    1. Extraction des urls de chaque catégorie sur https://hackertarget.com/extract-links/ et copie du contenu dans un fichier dédié.

    2. cat categories/*.list |grep .csp$ > liste_complete.list
      NB: Attention il y a des doublons, donc à trier et dédoublonner

    3. Script de téléchargement
      ``shell
      for url in
      cat liste_complete.list|sort|uniq`; do

      file_url=$(echo "${url%.csp}" |sed 's/free/free\/files/g');
      echo ${file_url};

      wget --directory-prefix=downloads ${file_url}.pdf;
      wget --directory-prefix=downloads ${file_url}.epub;
      wget --directory-prefix=downloads ${file_url}.mobi;

    done;
    ```
    4. Conclusion
    J'ai 112 urls, 108 uniques.

    Par contre c'est une mauvaise idée de télécharger les 3 extensions d'un coup, chez moi c'est encore en cours. Il vaudrait mieux tout télécharger en pdf, puis en epub, puis en mobi pour ceux qui le souhaitent.

    Eidt: J'ai la prévisualisation de mon commentaire qui ne fonctionne pas…

    • [^] # Re: Ma méthode

      Posté par  (site web personnel) . Évalué à 5. Dernière modification le 11 février 2018 à 18:26.

      Pour obtenir le contenu de toutes les pages qui contiennent des liens .csp sans tout aspirer (ni utiliser un service tiers pour ce faire) je fais ça:

      curl -s 'http://www.oreilly.com/free/reports.html' \
      | grep 'class="btn see-more"' \
      | sed -e 's/^.*href="\([^"]*\)".*$/\1/' \
      | curl -s $(cat) \
      | [process]

      Remplacer curl -s par wget -q -O- pour n’utiliser que wget, et à la place de [process] ajouter un savant mélange de grep et de sed pour nettoyer/reconstruire les url (il est certainement possible de n’utiliser que sed mais j’ai pas cherché), l’astuce du :

      | curl -s $(cat)

      fait qu’on peut se passer de boucle for, de même à la fin on peut faire [process] | wget -xc $(cat). ;-)

      Certains l’auront noté, il faut faire attention parce que certaines url sont en .csp?quelquechose, et que d’autres commencent par // au lieu de http://.

      Note : le sort | uniq peut être remplacé par un sort -u. Perso je n’ai pas essayé de savoir s’il y avait des url en doublon avec ma méthode, mais l’option -c de wget me garantie de ne pas retélécharger ce qui est déjà complètement téléchargé (mais ça n’économise pas la requête) et de reprendre en cours de route s’il y a eu une quelconque interruption quelque part dans le réseau. [Edit: il y a des doublons, oui]

      ce commentaire est sous licence cc by 4 et précédentes

      • [^] # Re: Ma méthode

        Posté par  (site web personnel) . Évalué à 5. Dernière modification le 11 février 2018 à 18:33.

        L’avantage d’utiliser wget -q -O- au lieu de curl -s c’est que ça suit les redirections tout seul (curl a certainement une option pour cela cependant). Et ils ont introduit une redirection sur au moins une des pages. ;-)

        ce commentaire est sous licence cc by 4 et précédentes

        • [^] # Re: Ma méthode

          Posté par  . Évalué à 6.

          En effet, il faut utiliser curl -L.

    • [^] # Re: Ma méthode

      Posté par  (site web personnel, Mastodon) . Évalué à 2.

      Plutôt 229 liens uniques, car la catégorie "data" a deux liens :

    • [^] # Re: Ma méthode

      Posté par  . Évalué à 6.

      "wget", c'est fait pour les brutasses ;-)

      Avec autant de cas tordus, il faut faire dans la dentelle.
      Ranger ses ebooks dans un repertoire et récupérer un petit descriptif en json,
      c'est plus fun:

                  {
                    "topic": "business",
                    "title": "Build to Lead: How Lego Bricks Can Make You a Better Leader",
                    "description":
                      "How can the power of play inspire your teams and help you achieve creative and powerful business solutions in a rapidly changing world? In this ebook, you\u2019ll explore Lego Serious Play, a proven tool for boosting both individual and team productivity. It may sound frivolous, but playing with Lego bricks is an incredibly fun, creative, and valuable way to develop a collective plan of action\u2014whether it\u2019s for problem solving, strategy development, ideation, relationship building, or goal-setting.",
                    "source":
                      "http://www.oreilly.com/business/free/build-to-lead.csp?topic=business",
                    "cover": "http://covers.oreillystatic.com/images/0636920051404/cat.gif",
                    "author": "Donna Denio",
                    "author_bio":
                      "Donna Denio was helping architects with marketing and business development, and one area targeted for firm growth and expansion was the workplace of the future. The book Excellence by Design, Transforming Workplace and Work Practice, based on work from a research group at MIT, contains many interesting ideas on the future of work, workspaces, and work tools. The book introduces the idea of using design games to reduce or eliminate inherent conflict when people of unequal power have conflicting interests. The design game is \"draped over the existing organization with its ongoing game of interests and powers.\"",
                    "pdf": "http://www.oreilly.com/business/free/files/build-to-lead.pdf",
                    "epub": "http://www.oreilly.com/business/free/files/build-to-lead.epub",
                    "mobi": "http://www.oreilly.com/business/free/files/build-to-lead.mobi"
                  }
      

      Enjoy:
      https://gist.github.com/Krazybug/1ae50814d25b0a1d862dfdf7161ee503

      • [^] # Kudos

        Posté par  . Évalué à 4.

        Merci aux auteurs d'ailleurs:

        find . -name "*.json" -exec cat {} \; | jq -s '.[] | select(.author != null)| "kudos "+.author'

        "kudos Caleb Hattingh"
        "kudos John King"
        "kudos John King"
        "kudos John King"
        "kudos John King"
        "kudos John King"
        "kudos John King"
        "kudos Jake VanderPlas"
        "kudos Federico Castanedo"
        "kudos Mike Barlow"
        "kudos Mike Barlow"
        "kudos Alice LaPlante"
        "kudos Harlan Harris"
        "kudos Preetam Jinka"
        "kudos Dave Zwieback"
        "kudos Alice LaPlante"
        "kudos Rich Morrow"
        "kudos Mike Barlow"
        "kudos O'Reilly Media, Inc."
        "kudos Cathy O'Neil"
        "kudos Kevin Hoffman"
        "kudos Dinesh Dutt"
        "kudos Mike Barlow"
        "kudos O'Reilly Media, Inc."
        "kudos Jens Oliver Meiert"
        "kudos Andrew Hessel"
        "kudos Donna Denio"
        "kudos O'Reilly Media, Inc."
        "kudos O'Reilly Media, Inc."
        "kudos DJ Patil"
        "kudos Adam Scott"
        "kudos Adam Scott"
        "kudos Adam Scott"
        "kudos Q Ethan McCallum"
        "kudos Gašper Ažman"
        "kudos Mike Barlow"
        "kudos Jason Hand"
        "kudos Anna Gerber"
        "kudos Chris O'Dell"
        "kudos Andrew Peterson"
        "kudos Eric McNulty"
        "kudos Mike Barlow"
        "kudos Janine Barlow"
        "kudos Andrew Therriault"
        "kudos Sean Murphy"
        "kudos Cornelia Lévy-Bencheton"
        "kudos Alistair Croll"
        "kudos Mike Barlow"
        "kudos Hilary Mason"
        "kudos Alistair Croll"
        "kudos Pamela Pavliscak"
        "kudos Jane Roberts"
        "kudos DJ Patil"
        "kudos Federico Castanedo"
        "kudos Cornelia Lévy-Bencheton"
        "kudos Li Ping Chu"
        "kudos Stephen Elston"
        "kudos Stephen Elston"
        "kudos Meghan Athavale"
        "kudos Mike Barlow"
        "kudos Laura Klein"
        "kudos Irene Au"
        "kudos Scott Millett"
        "kudos Paul McConnell"
        "kudos Kharis O'Connell"
        "kudos David Hindman"
        "kudos Gretchen Anderson"
        "kudos James Higginbotham "
        "kudos Jim Bird"
        "kudos Dave Zwieback"
        "kudos J. Paul Reed"
        "kudos Jim Bird"
        "kudos Jeffrey Needham"
        "kudos Andrew Odewahn"
        "kudos Sebastien Goasguen"
        "kudos Michael Hausenblas"
        "kudos Adrian Mouat"
        "kudos Chad Carson"
        "kudos Todd DeCapua"
        "kudos Courtney Webster"
        "kudos Bill Ott"
        "kudos Alice Zheng"
        "kudos Mike Barlow"
        "kudos Mike Barlow"
        "kudos Liza Kindred"
        "kudos Dean Wampler"
        "kudos Cornelia Lévy-Bencheton"
        "kudos David Mertz"
        "kudos David Mertz"
        "kudos David Beyer"
        "kudos Matthew Holzapfel"
        "kudos Andy Oram"
        "kudos Shelley Powers"
        "kudos Jerry Overton"
        "kudos Mike Barlow"
        "kudos Andy Oram"
        "kudos Courtney Webster"
        "kudos Donald Miner"
        "kudos Donald Miner"
        "kudos Tim O'Reilly"
        "kudos Mike Pirnat"
        "kudos Ilya Grigorik"
        "kudos Rohit Jain"
        "kudos Jon Bruner"
        "kudos Andy Oram"
        "kudos Mike Barlow"
        "kudos Ayah Bdeir"
        "kudos Christina Wodtke"
        "kudos Cory Doctorow"
        "kudos Ben Evans"
        "kudos Aaron Frost"
        "kudos David Rensin"
        "kudos Mike Barlow"
        "kudos Dylan Richard"
        "kudos Sam Newman"
        "kudos Jens Oliver Meiert"
        "kudos Patrick Hebron"
        "kudos Russell Jurney"
        "kudos Mark Richards"
        "kudos Christian Posta"
        "kudos Susan Fowler"
        "kudos Mike Barlow"
        "kudos Matt Stine"
        "kudos Kevin Webber"
        "kudos Wolfgang Beer"
        "kudos O'Reilly Media, Inc."
        "kudos O'Reilly Media, Inc."
        "kudos Mike Barlow"
        "kudos Richard Warburton"
        "kudos Daniel Cowles"
        "kudos Ohad Samet"
        "kudos Andy Oram"
        "kudos Andy Still"
        "kudos Gretchen Anderson"
        "kudos Mike Barlow"
        "kudos Andy Oram"
        "kudos Edd Wilder-James"
        "kudos Mike Barlow"
        "kudos Edouard Alligand"
        "kudos Mike Barlow"
        "kudos Gilad Rosner"
        "kudos Kathryn McElroy"
        "kudos Nicholas Tollervey"
        "kudos Carlos De La Guardia"
        "kudos Jim Kalbach"
        "kudos Ted Cuzzillo"
        "kudos Abraham Marin-Perez"
        "kudos Naveen Viswanath"
        "kudos Dinah McNutt"
        "kudos K. Matt Dupree"
        "kudos Raffael Marty"
        "kudos Michael Hausenblas"
        "kudos Nick Grossman"
        "kudos Mike Barlow"
        "kudos Tim O'Reilly"
        "kudos Mark Richards"
        "kudos Kipp Bradford"
        "kudos Brian Rinaldi"
        "kudos Martin Kleppmann"
        "kudos Anthony Gray"
        "kudos Peter Guerra"
        "kudos Jim Lehmer"
        "kudos Aman Naimat"
        "kudos Alice LaPlante"
        "kudos Courtney Webster"
        "kudos Dave Zwieback"
        "kudos Aman Naimat"
        "kudos Conor Doherty"
        "kudos Esther Schindler"
        "kudos Eric A. Meyer"
        "kudos Andy Oram"
        "kudos Julie Steele"
        "kudos Russell Pavlicek"
        "kudos Jonathan Thurman"
        "kudos Davey Shafik"
        "kudos Claire Rowland"
        "kudos Jay McGavren"
        "kudos Terrence Dorsey"
        "kudos Mike Barlow"
        "kudos Mike Loukides"
        "kudos John Chapin"
        "kudos Paris Buttfield-Addison"
        "kudos Tim O'Reilly"
        "kudos Mike Barlow"
        "kudos Gregory Fell"
        "kudos Konrad Malawski"
        "kudos Jim Blandy"
        "kudos Cornelia Lévy-Bencheton"

      • [^] # Re: Ma méthode

        Posté par  (site web personnel, Mastodon) . Évalué à 3.

        Salut,

        merci pour ton script Python, il fait très bien le travail !

        J'ai d'ailleurs pu remarquer que dans certains cas, j'avais des doublons (un même livre dans plusieurs catégories). Par contre, j'ai remarqué un cas assez particulier : The New Artificial Intelligence Market. Sa page de téléchargement n'indique que la version PDF, donc ton script ne télécharge que celle-ci. Pourtant, en remplaçant l'extension du fichier par .mobi ou .epub, on récupère bien les versions MOBI et EPUB.

        C'est le seul cas de figure, d'après ce que j'ai vu.

        • [^] # Re: Ma méthode

          Posté par  . Évalué à 3.

          Salut Nils !

          Merci pour ton feedback.
          Ceci provient du fait que je parse la page de download pour chaque ebook (?download=true) pour connaître les formats disponibles et éviter des 404 en récupérant tous les formats.
          Visiblement, ce n'est pas fiable, car la page que tu m'indiques ne montre que le format pdf alors que les 3 sont disponibles.
          J'ai republié le code pour ne plus parser cette page et tenter tous les formats.
          Du coup l'execution est à peine plus longue car on va se prendre les 404 de tous les formats absents.

          Pour les categories je l'avais remarqué. C'est pour ça que j'ai mis en #todo que j'aimerais récupéré toutes les catégories dans la balise "topic" :-)

          PS: Ton blog est très sympa

        • [^] # Re: Ma méthode

          Posté par  . Évalué à 3.

          A la réflexion, j'ai simplement rajouté une ligne et modifié le code pour tenir compte de cette exception :-)

        • [^] # Re: Ma méthode

          Posté par  . Évalué à 3.

          La version finale tient compte des fichiers qu'on ne peut pas récupérer en free et de toutes les exceptions.
          Elle produit un petit rapport :

          --------------> Total books count: 233
          --------------> Total files count: 655
          --------------> Total epub files count: 211
          --------------> Total pdf files count: 233
          --------------> Total mobi files count: 211
          

          655 fichiers répartis dans 233 ebooks.
          Tadaaa :)

          • [^] # Re: Ma méthode

            Posté par  (site web personnel) . Évalué à 6.

            Retour d'utilisation :

            File "omercy.py", line 244
            print("-->", count_books, "Book description(s) considered")`

            Un ` en trop à supprimer.

            Traceback (most recent call last):
            File "omercy.py", line 43, in
            from urllib.parse import urlparse
            ImportError: No module named parse

            Un pip install parse, mais insuffisant. Puis un remplacement par

            try:
                from urllib.parse import urlparse
            except ImportError:
                 from urlparse import urlparse
            

            pour la compatibilité Python2/3 d'après une recherche rapide. Puis en fait l'idée de lancer avec python3 au lieu de python. Et là ça marche. Merci.

            • [^] # Re: Ma méthode

              Posté par  . Évalué à 7.

              Corrigé Merci !

              PS: Ca me fait tout bizarre de t'écrire ça ;-)

        • [^] # Re: Ma méthode

          Posté par  . Évalué à 3.

          En fait le mobi et l'epub sont des doublons du pdf et ne s'ouvrent donc pas.
          Il ne faut pas en tenir compte et la page de download s'avère finalement complètement fiable.
          Ultime correction appliquée ;-)

  • # Dropbox

    Posté par  . Évalué à -1.

  • # Vos goûts ?

    Posté par  (site web personnel) . Évalué à 3.

    Merci pour cette information sur ces livres gratuits !

    Cela me rend curieux de savoir ce que les lecteurs de linuxFr ont téléchargé et lu.

    Pour ma part:
    - software-architecture-patterns
    - ten-steps-to-linux-survival
    - microservices-antipatterns-and-pitfalls
    - microservices-in-production

    Et vous ?

  • # Fini les .pdf chez O'Reilly

    Posté par  . Évalué à 4.

    Je voulais acheter un livre en .pdf… et j'ai pas trouvé. Sur la page du bouquin, on a le choix entre "Lire sur Safari" et "Acheter sur Amazon (ou votre vendeur préféré)".

    Chez le vendeur, c'est du papier ou un fichier pour Kindle (je connais pas mais je pense que c'est pas du .pdf mais un truc proprio).

    Et j'ai découvert à l'occasion que Safari, c'est pas le navigateur, c'est la plateforme O'Reilly de lecture en ligne : https://www.safaribooksonline.com/.

    On dirait bien que c'est fini, le .pdf. J'arrive un peu après la bataille, ça date d'il y a 8 mois. Et ça fait d'autres mécontents :

    http://support.oreilly.com/oreilly/topics/bring-back-pdf-ebooks

    Je sais pas si c'est pour éviter que les .pdf ne fuitent trop vite ou bien pour exploiter les données personnelles des clients.

    Et vous ? Ça vous embête ? Vous avez une alternative ? Vous utilisez Safari ? Des livres en papier ?

    J'aime bien le papier, mais pour ce genre de choses, je préfère le .pdf. Parce que ça va pas servir beaucoup, parce que les technos évoluent et c'est vite obsolète, parce que Ctrl+F, etc.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.