Beispiel #1
0
def main():
    multiparser = MultiParser()
    config = multiparser.config

    story_providers = construct_story_providers_from_config_dict(config)

    title = config["title"] if "title" in config else None
    subtitle = config["subtitle"] if "subtitle" in config else None
    filename = multiparser.argumentOrConfig(
        "output",
        default=
        f"Goosepaper-{datetime.datetime.now().strftime('%Y-%B-%d-%H-%M')}.pdf")
    replace = multiparser.argumentOrConfig("replace", False)

    paper = Goosepaper(story_providers=story_providers,
                       title=title,
                       subtitle=subtitle)

    if filename.endswith(".html"):
        with open(filename, "w") as fh:
            fh.write(paper.to_html())
    elif filename.endswith(".pdf"):
        paper.to_pdf(filename)
    elif filename.endswith(".epub"):
        paper.to_epub(filename)
    else:
        raise ValueError(
            f"Unknown file extension '{filename.split('.')[-1]}'.")

    if multiparser.argumentOrConfig("upload"):
        upload(filename, replace)

    return 0
Beispiel #2
0
def main():
    parser = argparse.ArgumentParser(
        "Goosepaper generates and delivers a daily newspaper in PDF format.")
    parser.add_argument(
        "-c",
        "--config",
        required=False,
        default=None,
        help="The json file to use to generate this paper.",
    )
    parser.add_argument(
        "-o",
        "--output",
        required=False,
        default=
        f"Goosepaper-{datetime.datetime.now().strftime('%Y-%B-%d-%H-%M')}.pdf",
        help="The output file path at which to save the paper",
    )
    parser.add_argument(
        "-u",
        "--upload",
        action="store_true",
        required=False,
        help="Whether to upload the file to your remarkable using rmapy.",
    )

    args = parser.parse_args()

    try:
        config = load_config_file(args.config)
    except FileNotFoundError as e:
        raise FileNotFoundError(
            f"Could not find the configuration file at {args.config}") from e

    story_providers = construct_story_providers_from_config_dict(config)

    paper = Goosepaper(story_providers=story_providers)

    if args.output.endswith(".html"):
        with open(args.output, "w") as fh:
            fh.write(paper.to_html())
    elif args.output.endswith(".pdf"):
        paper.to_pdf(args.output)
    elif args.output.endswith(".epub"):
        paper.to_epub(args.output)
    else:
        raise ValueError(
            f"Unknown file extension '{args.output.split('.')[-1]}'.")

    if args.upload:
        upload(args.output)

    return 0
Beispiel #3
0
def main():
    multiparser = MultiParser()
    config = multiparser.config

    nostory = multiparser.argumentOrConfig("nostory")

    filename = multiparser.argumentOrConfig(
        "output",
        default=f"Goosepaper-{datetime.datetime.now().strftime('%Y-%B-%d-%H-%M')}.pdf",
    )

    if not nostory:  # global nostory flag
        story_providers = construct_story_providers_from_config_dict(config)
        font_size = multiparser.argumentOrConfig("font_size", 14)

        title = config["title"] if "title" in config else None
        subtitle = config["subtitle"] if "subtitle" in config else None

        paper = Goosepaper(
            story_providers=story_providers, title=title, subtitle=subtitle
        )

        if filename.endswith(".html"):
            with open(filename, "w") as fh:
                fh.write(paper.to_html())
        elif filename.endswith(".pdf"):
            paper.to_pdf(filename, font_size=font_size)
        elif filename.endswith(".epub"):
            paper.to_epub(filename, font_size=font_size)
        else:
            print(f"Unknown file extension '{filename.split('.')[-1]}'.")
            exit(1)

    if multiparser.argumentOrConfig("upload"):
        if multiparser.argumentOrConfig("noupload"):
            print(
                "Honk! The 'upload' directive was found, but '--noupload' was also specified on the command line. Your goosepaper {0} was generated but I'm not uploading it.".format(
                    filename
                )
            )
        else:
            do_upload(filepath=filename, multiparser=multiparser)

    return 0
Beispiel #4
0
from goosepaper.twitter import TwitterStoryProvider
from goosepaper.weather import WeatherStoryProvider
from goosepaper.wikipedia import WikipediaCurrentEventsStoryProvider
from goosepaper.upload import upload


FNAME = datetime.now().strftime("%Y-%m-%d") + ".pdf"
logging.info(f"Honk! I will save your temporary PDF to {FNAME}.")


logging.info(f"Generating paper...")
Goosepaper(
    [
        WikipediaCurrentEventsStoryProvider(),
        WeatherStoryProvider(woe="2358820", F=False),
        RSSFeedStoryProvider("https://www.npr.org/feed/", limit=5),
        RSSFeedStoryProvider("https://www.statnews.com/feed/", limit=2),
        # MultiTwitterStoryProvider(
        # Pending this issue: https://github.com/j6k4m8/goosepaper/issues/5
        #    ["reuters", "bbcWorld", "axios", "BethanyAllenEbr", "NPR"], limit_per=5
        # ),
        RedditHeadlineStoryProvider("news"),
        RedditHeadlineStoryProvider("todayilearned"),
    ]
).to_pdf(FNAME)
logging.info(f"Saved to PDF, now transferring...")


upload(FNAME)
logging.info(f"HONK! I'm done :)")
Beispiel #5
0
import logging
from datetime import datetime

from goosepaper.goosepaper import Goosepaper
from goosepaper.reddit import RedditHeadlineStoryProvider
from goosepaper.rss import RSSFeedStoryProvider
from goosepaper.twitter import MultiTwitterStoryProvider
from goosepaper.weather import WeatherStoryProvider
from goosepaper.wikipedia import WikipediaCurrentEventsStoryProvider
from goosepaper.upload import upload

FNAME = datetime.now().strftime("%Y-%m-%d") + ".pdf"
logging.info(f"Honk! I will save your temporary PDF to {FNAME}.")

logging.info(f"Generating paper...")
Goosepaper([
    WikipediaCurrentEventsStoryProvider(),
    WeatherStoryProvider(woe="2358820", F=False),
    RSSFeedStoryProvider("https://www.npr.org/feed/", limit=5),
    RSSFeedStoryProvider("https://www.statnews.com/feed/", limit=2),
    MultiTwitterStoryProvider(["reuters", "bbcWorld", "axios", "NPR"],
                              limit_per=5),
    RedditHeadlineStoryProvider("news"),
    RedditHeadlineStoryProvider("todayilearned"),
]).to_pdf(FNAME)
logging.info(f"Saved to PDF, now transferring...")

# upload(FNAME)
logging.info(f"HONK! I'm done :)")
Beispiel #6
0
from goosepaper.storyprovider.twitter import MultiTwitterStoryProvider
from goosepaper.storyprovider.weather import WeatherStoryProvider
from goosepaper.storyprovider.wikipedia import WikipediaCurrentEventsStoryProvider
from goosepaper.upload import upload

FNAME = datetime.now().strftime("%Y-%m-%d") + ".pdf"
logging.info("Honk! I will save your temporary PDF to {FNAME}.")

logging.info("Generating paper...")
Goosepaper([
    WikipediaCurrentEventsStoryProvider(),
    WeatherStoryProvider(woe="906057", F=false),
    RSSFeedStoryProvider("https://www.npr.org/feed/", limit=5),
    RSSFeedStoryProvider("https://www.theatlantic.com/feed/all/", limit=5),
    #        RSSFeedStoryProvider("https://medium.com/feed/@eLife"),
    #	RSSFeedStoryProvider("http://www.nature.com/subjects/microbiology",limit=5),
    #	RSSFeedStoryProvider("https://www.microbiologyresearch.org/rss/content/journal/jmmcr/latestissue?fmt=rss",limit=5),
    #RSSFeedStoryProvider("https://www.statnews.com/feed/", limit=2),
    # MultiTwitterStoryProvider(
    # Pending this issue: https://github.com/j6k4m8/goosepaper/issues/5
    #    ["reuters", "bbcWorld", "axios", "BethanyAllenEbr", "NPR"], limit_per=5
    # ),
    #RSSFeedStoryProvider("http://xkcd.com/atom.xml"),
    RedditHeadlineStoryProvider("news"),
    RedditHeadlineStoryProvider("todayilearned")
]).to_pdf(FNAME)
logging.info("Saved to PDF, now transferring...")

upload(FNAME)
logging.info("HONK! I'm done :)")