Code Monkey home page Code Monkey logo

repocketable's Introduction

rePocketable

GitHub go.mod Go version of a Go module Linux macOS Windows Build

This tool and its webpage are under construction.

Best possible option if you want to see what it will eventually do is to run a cli tool such as to epub:

go run cmd/toEpub/*.go https://whateverpageyouwanttoread/

This utility takes optional -H arguments to pass headers to the http downloader. This option can be used several times to be compatible with the curl command.

ex:

 toEpub -H 'sec-ch-ua: "Chromium";v="94", "Google Chrome";v="94", ";Not A Brand";v="99"' \
  -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36' \
  -H 'sec-ch-ua-platform: "macOS"'  https://thewebsite/thepage.html

I wrote some explanation of the concept in a blog post

Hacktoberfest

This is a toy project, but I am more and more relying on it. I think that hacktoberfest is a good opportunity to turn this project into a product. I will write a contributing guide soon; meanwhile if you want to participate the urgent matters are:

  • Writing a proper vision: discussing it into an issue and submitting a PR to mention in in the README
  • Writing autonomous end-to-end tests: grabbing a sample page, running an httptest server, running a toEpub code and analysing the result
  • Writing a proper documentation
  • Adding a contribution guide
  • sky is the limit, discuss in issues and submit PR once issues are discussed :D

Features

The internal libraries (used by the CLI) are implemeting those features:

  • Webpage fetching and pre-processing
    • preprocessing and sanitization of figures to fetch the correct image from responsive and/or javascript tags (Medium and Toward datascience)
    • experimental feature to turn LaTeX figures into pictures (github.com/go-latex/latex)
    • extraction of the content based on the ARC90 readility project (github.com/cixtor/readability)
  • Opengraph processing to extract meta informations (github.com/dyatlov/go-opengraph)
    • Generation of a cover picture with the front image of the website, the title and the author of the artible
    • Generation of a first chapter with meta data such as the publication date
  • epub generation (github.com/bmaupin/go-epub)
  • experimental getpocket integration
    • reading the article lists and generating epubs from the list
    • a daemon mode that will eventually runs on a ereader device to sync the list (heavy WIP)

Configurations

Those configuration may influence various internal libraries.

KEY TYPE DEFAULT REQUIRED DESCRIPTION
DOWNLOADER_LIVENESS_CHECK Duration 5m true
DOWNLOADER_PROBE_TIMEOUT Duration 60m true
DOWNLOADER_HTTP_TIMEOUT Duration 10s true
DOWNLOADER_TRANSPORT_TIMEOUT Duration 5s true

Those configuration are used for cli using the pocket integration

KEY TYPE DEFAULT REQUIRED DESCRIPTION
POCKET_UPDATE_FREQUENCY Duration 1h true How often to query getPocket
POCKET_HEALTH_CHECK Duration 30s true
POCKET_POCKET_URL String https://getpocket.com/v3/get true
POCKET_CONSUMER_KEY String true See https://getpocket.com/developer/apps/ to get a consumer key
POCKET_USERNAME String The pocket username (will try to fetch it if not found)
POCKET_TOKEN String The access token, will try to fetch it if not found or invalid

repocketable's People

Contributors

owulveryck avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

repocketable's Issues

problem with substack articles

Hi,

as per subject.
I have just installed the current version of repocketable on Ubuntu 22.04LTS.

the toEpub binary works with other website, but if I try to run e.g.:

#> ./toEpub https://danafblankenhorn.substack.com/p/the-hinge-point

all I get is this error message, and no ePUB file is created:
2024/04/18 11:08:00 Cannot fill document: bad sethttps://substackcdn.com/image/fetch/w_424

what does this exactly mean, and can it be fixed on repocketable's side?

Thanks,
M.

Create an option to pass custom headers to the downloader

Tying to grab the Feynman lectures (eg https://www.feynmanlectures.caltech.edu/I_01.html) leads to a 403.

The webserver requires custom headers; for example this request is ok:

curl -I https://www.feynmanlectures.caltech.edu/I_01.html \
>   -H 'sec-ch-ua: "Chromium";v="94", "Google Chrome";v="94", ";Not A Brand";v="99"' \
  -H 'Referer: https://www.feynmanlectures.caltech.edu/I_01.html' \
  -H 'sec-ch-ua-mobile: ?0' \
  -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36' \
  -H 'Range: bytes=294912-' \
  -H 'sec-ch-ua-platform: "macOS"' \
  --compressed

I think about changing the NewDownloader function to take ... string as argument.

We may create a custon roundtripper that sets the header automatically:

type customTransport struct {
	*http.Transport
}

func (c *customTransport) RoundTrip(req *http.Request) (*http.Response, error) {
	req.Header.Set("blabla", "blabla")
	return c.Transport.RoundTrip(req)
}

Kindle support

Hello,
I found your post and this project on Hacker news and I love it!

While I've unfortunately not the bandwidth to contribute myself, I wanted to suggest an idea that may increase adoption: Kindle support.

It would means 2 distinct features:

  • convert the epub to .mobi
  • optionally, send the generated .mobi to the email address associated to the kindle

PS: Your link Archive in the navbar of your site does not work: https://blog.owulveryck.info/post/

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.