Skip to main content

A Python wrapper for (most) New York Times APIs

Project description

pynytimes

Build Status License: MIT

Use all (actually most) New York Times APIs, get all the data you need from the Times!

This project is not made by anyone from the New York Times, nor is it affiliated with the New York Times.

Installation

There are multiple options to install pynytimes, but the easiest is by just installing it using pip (or pip3).

pip install pynytimes

Advanced (not better, just different)

You can also install pynytimes manually from GitHub itself. This can be done by cloning this repository first, and then installing it using Python.

git clone https://github.com/michadenheijer/pynytimes.git
cd pynytimes
python setup.py install

Usage

You can easily import this library using:

from pynytimes import NYTAPI

Then you can simply add your API key (get your API key from The New York Times Dev Portal):

nyt = NYTAPI("Your API key")

When you have imported this library you can use the following features from the New York Times API.

Top stories

You can request the top stories from the New York Times. You can also get the top stories from a specific section.

top_stories = nyt.top_stories()

# Get all the top stories from a specific category
top_science_stories = nyt.top_stories(section = "science")

The possible sections are: arts, automobiles, books, business, fashion, food, health, home, insider, magazine, movies, national, nyregion, obituaries, opinion, politics, realestate, science, sports, sundayreview, technology, theater, tmagazine, travel, upshot, and world.

Most viewed articles

The New York Times API can provide the most popular articles from the last day, week or month.

most_viewed = nyt.most_viewed()

# Get most viewed articles of last 7 or 30 days
most_viewed = nyt.most_viewed(days = 7)
most_viewed = nyt.most_viewed(days = 30)

Most shared articles

Not only can you request the most viewed articles from the New York Times API, you can also request the most shared articles. You can even request the articles that are most shared by email, Facebook and Twitter. You can get the most shared articles per day, week or month.

most_shared = nyt.most_shared()

# Get most emaild articles of the last day
most_shared = myt.most_shared(
    days = 1,
    method = "email"
)

# Get most shared articles to Facebook of the last 7 days
most_shared = nyt.most_shared(
    days = 7,
    method = "facebook"    
)

# Get most shared articles to Twitter of the last 30 days
most_shared = nyt.most_shared(
    days = 30,
    method = "twitter"
)

Article search (beta)

You can also search all New York Times articles. You can also define which sources you want to include. (Not all functions are implemented)

import datetime

articles = nyt.article_search(
    query = "Obama",
    results = 30,
    dates = {
        "begin_date": datetime.datetime(2019, 1, 31)
        "end_date": datetime.datetime(2019, 2, 28)
    }
    options = {
        sources = [
            "New York Times",
            "AP",
            "Reuters",
            "International Herald Tribune"
        ]
    }
)

Book reviews

You can easily find book reviews for every book you've read. You can find those reviews by searching for the author, ISBN or title of the book.

# Get reviews by author (first and last name)
reviews = nyt.book_reviews(author = "George Orwell")

# Get reviews by ISBN
reviews = nyt.book_reviews(isbn = 9780062963673)

# Get book reviews by title
reviews = nyt.book_reviews(title = "Becoming")

Movie reviews

You can not only get the book reviews, but the movie reviews too.

import datetime

reviews = nyt.movie_reviews(
    keyword = "Green Book",
    options = {
        "order": "by-opening-date",
        "reviewer": "A.O. Scott",
        "critics_pick": False
    },
    dates = {
        "opening_date_start": datetime.datetime(2017, 1, 1),
        "opening_date_end": datetime.datetime(2019, 1, 1),
        "publication_date_start": datetime.datetime(2017, 1, 1),
        "publication_date_end": datetime.datetime(2019, 1, 1)
})

Best sellers lists

The New York Times has multiple best sellers lists. You can easily request those lists using this library.

# Get all the available New York Times best sellers lists
lists = nyt.best_sellers_lists()

# Get fiction best sellers list
books = nyt.best_sellers_list()

# Get non-fiction best sellers list
books = nyt.best_sellers_list(
    name = "combined-print-and-e-book-nonfiction"
)

# Get best sellers lists from other date
import datetime

books = nyt.best_sellers_list(
    name = "combined-print-and-e-book-nonfiction",
    date = datetime.datetime(2019, 1, 1)
)

Article metadata

With an URL from a New York Times article you can easily get all the metadata you need from it.

metadata = nyt.article_metadata(
    url = "https://www.nytimes.com/2019/10/20/world/middleeast/erdogan-turkey-nuclear-weapons-trump.html"
)

Tag query

The New York Times has their own tags library. You can query this library with this API.

tags = nyt.tag_query(
    "pentagon",
    max_results = 20
)

Archive metadata

If you want to load all the metadata from a specific month, then this API makes that possible. Be aware you'll download a big JSON file (about 20 Mb), so it can take a while.

import datetime

data = nyt.archive_metadata(
    date = datetime.datetime(2019, 1, 1)
)

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for pynytimes, version 0.2
Filename, size File type Python version Upload date Hashes
Filename, size pynytimes-0.2-py3-none-any.whl (7.7 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size pynytimes-0.2.tar.gz (9.0 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page