Skip to content

Commit

Permalink
Refactored reader, implemented local reading #8
Browse files Browse the repository at this point in the history
  • Loading branch information
mrusme committed Aug 3, 2022
1 parent f81170d commit c44c988
Showing 1 changed file with 35 additions and 16 deletions.
51 changes: 35 additions & 16 deletions cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"os"
"regexp"
"strconv"
"io"

"github.com/charmbracelet/glamour"
"github.com/eliukblau/pixterm/pkg/ansimage"
Expand Down Expand Up @@ -36,27 +37,46 @@ var mdImgRegex =
var mdImgPlaceholderRegex =
regexp.MustCompile(`(?m)\$\$\$([0-9]*)\$`)


func MakeReadable(rawUrl *string) (string, string, error) {
jar, err := cookiejar.New(&cookiejar.Options{PublicSuffixList: publicsuffix.List})

urlUrl, err := url.Parse(*rawUrl)
if err != nil {
return "", "", err
}

scraper, err := scraper.NewTransport(http.DefaultTransport)
client := &http.Client{
Jar: jar,
Transport: scraper,
var reader io.ReadCloser
switch(urlUrl.Scheme) {
case "http", "https":
reader, err = getReaderFromHTTP(rawUrl)
default:
reader, err = getReaderFromFile(rawUrl)
}
defer reader.Close()

urlUrl, err := url.Parse(*rawUrl)

article, err := readability.FromReader(reader, urlUrl)
if err != nil {
return "", "", err
}

return article.Title, article.Content, nil
}

func getReaderFromHTTP(rawUrl *string) (io.ReadCloser, error) {
jar, err := cookiejar.New(&cookiejar.Options{PublicSuffixList: publicsuffix.List})
if err != nil {
return nil, err
}

scraper, err := scraper.NewTransport(http.DefaultTransport)
client := &http.Client{
Jar: jar,
Transport: scraper,
}

req, err := http.NewRequest("GET", *rawUrl, nil)
if err != nil {
return "", "", err
return nil, err
}

req.Header.Set("User-Agent",
Expand All @@ -71,16 +91,15 @@ func MakeReadable(rawUrl *string) (string, string, error) {

resp, err := client.Do(req)
if err != nil {
return "", "", err
return nil, err
}
defer resp.Body.Close()
// defer resp.Body.Close()

article, err := readability.FromReader(resp.Body, urlUrl)
if err != nil {
return "", "", err
}
return resp.Body, nil
}

return article.Title, article.Content, nil
func getReaderFromFile(rawUrl *string) (io.ReadCloser, error) {
return os.Open(*rawUrl)
}

func HTMLtoMarkdown(html *string) (string, error) {
Expand Down Expand Up @@ -171,7 +190,7 @@ func RenderImg(title, md *string) (string, error) {
}

var rootCmd = &cobra.Command{
Use: "reader <url>",
Use: "reader <url/file>",
Short: "Reader is a command line web reader",
Long: "A minimal command line reader offering better readability of web " +
"pages on the CLI.",
Expand Down

0 comments on commit c44c988

Please sign in to comment.