├── neo4j ├── apoc.conf └── guides │ ├── render.sh │ ├── index.adoc │ └── index.html ├── graphql ├── nextjs │ ├── .eslintrc.json │ ├── next.config.js │ ├── public │ │ ├── favicon.ico │ │ └── vercel.svg │ ├── pages │ │ ├── _app.js │ │ ├── api │ │ │ ├── hello.js │ │ │ └── graphql.js │ │ └── index.js │ ├── styles │ │ ├── globals.css │ │ └── Home.module.css │ ├── .gitignore │ ├── package.json │ └── README.md ├── apollo-server │ ├── .env │ ├── package.json │ ├── README.md │ ├── index.js │ └── schema.graphql └── README.md ├── workers ├── .gitignore ├── .prettierrc ├── wrangler.toml ├── README.md ├── package.json ├── dist │ └── worker.js └── index.js ├── img └── datamodel.png ├── .gitmodules ├── README.md ├── viewed.json ├── emailed.json └── shared.json /neo4j/apoc.conf: -------------------------------------------------------------------------------- 1 | apoc.static.gcpkey= -------------------------------------------------------------------------------- /graphql/nextjs/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /graphql/nextjs/next.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | reactStrictMode: true, 3 | } 4 | -------------------------------------------------------------------------------- /workers/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | worker/ 3 | .cargo-ok 4 | package-lock.json 5 | -------------------------------------------------------------------------------- /img/datamodel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnymontana/news-graph/HEAD/img/datamodel.png -------------------------------------------------------------------------------- /graphql/apollo-server/.env: -------------------------------------------------------------------------------- 1 | NEO4J_URI=neo4j://news.graph.fyi:7687 2 | NEO4J_USER=newsgraph 3 | NEO4J_PASSWORD=newsgraph 4 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "neo4j-guides"] 2 | path = neo4j-guides 3 | url = https://github.com/neo4j-contrib/neo4j-guides.git 4 | -------------------------------------------------------------------------------- /graphql/nextjs/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnymontana/news-graph/HEAD/graphql/nextjs/public/favicon.ico -------------------------------------------------------------------------------- /workers/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "es5", 3 | "tabWidth": 4, 4 | "semi": false, 5 | "singleQuote": true 6 | } 7 | -------------------------------------------------------------------------------- /workers/wrangler.toml: -------------------------------------------------------------------------------- 1 | name = "news" 2 | type = "webpack" 3 | 4 | account_id = "" 5 | workers_dev = true 6 | route = "" 7 | zone_id = "" 8 | compatibility_date = "2021-11-15" 9 | -------------------------------------------------------------------------------- /graphql/nextjs/pages/_app.js: -------------------------------------------------------------------------------- 1 | import '../styles/globals.css' 2 | 3 | function MyApp({ Component, pageProps }) { 4 | return 5 | } 6 | 7 | export default MyApp 8 | -------------------------------------------------------------------------------- /graphql/nextjs/pages/api/hello.js: -------------------------------------------------------------------------------- 1 | // Next.js API route support: https://nextjs.org/docs/api-routes/introduction 2 | 3 | export default function handler(req, res) { 4 | res.status(200).json({ name: 'John Doe' }) 5 | } 6 | -------------------------------------------------------------------------------- /neo4j/guides/render.sh: -------------------------------------------------------------------------------- 1 | echo "Usage: sh render.sh [publish]" 2 | GUIDES=../../neo4j-guides 3 | 4 | function render { 5 | $GUIDES/run.sh index.adoc index.html +1 "$@" 6 | } 7 | 8 | render http://guides.neo4j.com/newsgraph 9 | -------------------------------------------------------------------------------- /graphql/README.md: -------------------------------------------------------------------------------- 1 | # News Graph GraphQL API 2 | 3 | This directory contains code for a GraphQL API using the [Neo4j GraphQL library.](https://neo4j.com/product/graphql-library/) using various frameworks and packages. 4 | 5 | * [Next.js](nextjs/) 6 | * [Apollo Server](apollo-server/) -------------------------------------------------------------------------------- /workers/README.md: -------------------------------------------------------------------------------- 1 | ## Location Aware News Recommendation With Cloudflare Workers 2 | 3 | [Live Demo - news.graphstuff.workers.dev](https://news.graphstuff.workers.dev/) 4 | 5 | ### Resources 6 | 7 | * *Improving News Recommendations With Cloudflare Workers & Knowledge Graphs* ([Video](https://cloudflare.tv/event/4QAeaycw0oRp0x9IDb55Je), [Slides](https://dev.neo4j.com/news-graph)) -------------------------------------------------------------------------------- /graphql/nextjs/styles/globals.css: -------------------------------------------------------------------------------- 1 | html, 2 | body { 3 | padding: 0; 4 | margin: 0; 5 | font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, 6 | Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; 7 | } 8 | 9 | a { 10 | color: inherit; 11 | text-decoration: none; 12 | } 13 | 14 | * { 15 | box-sizing: border-box; 16 | } 17 | -------------------------------------------------------------------------------- /graphql/nextjs/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | *.pem 21 | 22 | # debug 23 | npm-debug.log* 24 | yarn-debug.log* 25 | yarn-error.log* 26 | 27 | # local env files 28 | .env.local 29 | .env.development.local 30 | .env.test.local 31 | .env.production.local 32 | 33 | # vercel 34 | .vercel 35 | -------------------------------------------------------------------------------- /graphql/apollo-server/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "news-graph-graphql", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "start": "DEBUG=@neo4j/graphql:* node index.js" 9 | }, 10 | "keywords": [], 11 | "author": "", 12 | "license": "ISC", 13 | "dependencies": { 14 | "@neo4j/graphql": "^3.2.3", 15 | "apollo-server": "^3.7.0", 16 | "dotenv": "^10.0.0", 17 | "graphql": "^16.5.0", 18 | "neo4j-driver": "^4.4.5" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /graphql/apollo-server/README.md: -------------------------------------------------------------------------------- 1 | # News Graph GraphQL API Using Apollo Server 2 | 3 | Launch in [Codesandbox](https://codesandbox.io/s/github/johnymontana/news-graph/tree/main/graphql/apollo-server?file=/schema.graphql) 4 | 5 | This directory contains code for a GraphQL API using the [Neo4j GraphQL library.](https://neo4j.com/product/graphql-library/) 6 | 7 | ## Quickstart 8 | 9 | 1. Update `.env` with your Neo4j credentials 10 | 2. `npm i` 11 | 3. `npm start` 12 | 4. Open `http://localhost:4000` in your web browser to open GraphQL Playground 13 | 14 | ## GraphQL Schema 15 | 16 | See [schema.graphql](schema.graphql) for the GraphQL type definitions. -------------------------------------------------------------------------------- /graphql/nextjs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nextjs", 3 | "private": true, 4 | "scripts": { 5 | "dev": "next dev", 6 | "build": "next build", 7 | "start": "next start", 8 | "lint": "next lint" 9 | }, 10 | "dependencies": { 11 | "@neo4j/graphql": "^2.4.0", 12 | "apollo-server-core": "^3.5.0", 13 | "apollo-server-micro": "3.0.2", 14 | "graphql": "^15.7.2", 15 | "micro": "^9.3.4", 16 | "neo4j-driver": "^4.4.0", 17 | "next": "12.0.4", 18 | "react": "17.0.2", 19 | "react-dom": "17.0.2" 20 | }, 21 | "devDependencies": { 22 | "eslint": "7.32.0", 23 | "eslint-config-next": "12.0.4" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /workers/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "news", 3 | "private": true, 4 | "version": "1.0.0", 5 | "description": "news recommendations with cloudflare workers and neo4j", 6 | "main": "index.js", 7 | "scripts": { 8 | "test": "echo \"Error: no test specified\" && exit 1", 9 | "format": "prettier --write '**/*.{js,css,json,md}'" 10 | }, 11 | "author": "johnymontana ", 12 | "license": "ISC", 13 | "devDependencies": { 14 | "prettier": "^1.17.0" 15 | }, 16 | "dependencies": { 17 | "itty-router": "^2.1.9", 18 | "serverless-cloudflare-workers": "^1.2.0" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /graphql/nextjs/public/vercel.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | -------------------------------------------------------------------------------- /graphql/apollo-server/index.js: -------------------------------------------------------------------------------- 1 | const { Neo4jGraphQL } = require("@neo4j/graphql"); 2 | const { ApolloServer } = require("apollo-server"); 3 | const { 4 | ApolloServerPluginLandingPageGraphQLPlayground, 5 | } = require("apollo-server-core"); 6 | const neo4j = require("neo4j-driver"); 7 | const fs = require("fs"); 8 | const dotenv = require("dotenv"); 9 | const path = require("path"); 10 | 11 | // Load contents of .env as environment variables 12 | dotenv.config(); 13 | 14 | // Create Neo4j driver instance 15 | const driver = neo4j.driver( 16 | process.env.NEO4J_URI, 17 | neo4j.auth.basic(process.env.NEO4J_USER, process.env.NEO4J_PASSWORD) 18 | ); 19 | 20 | // Load GraphQL type definitions from schema.graphql file 21 | const typeDefs = fs 22 | .readFileSync(path.join(__dirname, "schema.graphql")) 23 | .toString("utf-8"); 24 | 25 | // Create executable GraphQL schema from GraphQL type definitions, 26 | // using @neo4j/graphql to autogenerate resolvers 27 | const neoSchema = new Neo4jGraphQL({ 28 | typeDefs, 29 | driver, 30 | }); 31 | 32 | // Create a new Apollo Server instance using our Neo4j GraphQL schema 33 | neoSchema.getSchema().then((schema) => { 34 | const server = new ApolloServer({ 35 | schema, 36 | playground: true, 37 | introspection: true, 38 | plugins: [ApolloServerPluginLandingPageGraphQLPlayground], 39 | }); 40 | server.listen().then(({ url }) => { 41 | console.log(`GraphQL server ready at ${url}`); 42 | }); 43 | }); 44 | -------------------------------------------------------------------------------- /graphql/nextjs/styles/Home.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | padding: 0 2rem; 3 | } 4 | 5 | .main { 6 | min-height: 100vh; 7 | padding: 4rem 0; 8 | flex: 1; 9 | display: flex; 10 | flex-direction: column; 11 | justify-content: center; 12 | align-items: center; 13 | } 14 | 15 | .footer { 16 | display: flex; 17 | flex: 1; 18 | padding: 2rem 0; 19 | border-top: 1px solid #eaeaea; 20 | justify-content: center; 21 | align-items: center; 22 | } 23 | 24 | .footer a { 25 | display: flex; 26 | justify-content: center; 27 | align-items: center; 28 | flex-grow: 1; 29 | } 30 | 31 | .title a { 32 | color: #0070f3; 33 | text-decoration: none; 34 | } 35 | 36 | .title a:hover, 37 | .title a:focus, 38 | .title a:active { 39 | text-decoration: underline; 40 | } 41 | 42 | .title { 43 | margin: 0; 44 | line-height: 1.15; 45 | font-size: 4rem; 46 | } 47 | 48 | .title, 49 | .description { 50 | text-align: center; 51 | } 52 | 53 | .description { 54 | margin: 4rem 0; 55 | line-height: 1.5; 56 | font-size: 1.5rem; 57 | } 58 | 59 | .code { 60 | background: #fafafa; 61 | border-radius: 5px; 62 | padding: 0.75rem; 63 | font-size: 1.1rem; 64 | font-family: Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, 65 | Bitstream Vera Sans Mono, Courier New, monospace; 66 | } 67 | 68 | .grid { 69 | display: flex; 70 | align-items: center; 71 | justify-content: center; 72 | flex-wrap: wrap; 73 | max-width: 800px; 74 | } 75 | 76 | .card { 77 | margin: 1rem; 78 | padding: 1.5rem; 79 | text-align: left; 80 | color: inherit; 81 | text-decoration: none; 82 | border: 1px solid #eaeaea; 83 | border-radius: 10px; 84 | transition: color 0.15s ease, border-color 0.15s ease; 85 | max-width: 300px; 86 | } 87 | 88 | .card:hover, 89 | .card:focus, 90 | .card:active { 91 | color: #0070f3; 92 | border-color: #0070f3; 93 | } 94 | 95 | .card h2 { 96 | margin: 0 0 1rem 0; 97 | font-size: 1.5rem; 98 | } 99 | 100 | .card p { 101 | margin: 0; 102 | font-size: 1.25rem; 103 | line-height: 1.5; 104 | } 105 | 106 | .logo { 107 | height: 1em; 108 | margin-left: 0.5rem; 109 | } 110 | 111 | @media (max-width: 600px) { 112 | .grid { 113 | width: 100%; 114 | flex-direction: column; 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /graphql/nextjs/pages/index.js: -------------------------------------------------------------------------------- 1 | import Head from 'next/head' 2 | import Image from 'next/image' 3 | import styles from '../styles/Home.module.css' 4 | 5 | export default function Home() { 6 | return ( 7 |
8 | 9 | Create Next App 10 | 11 | 12 | 13 | 14 |
15 |

16 | Welcome to Next.js! 17 |

18 | 19 |

20 | Get started by editing{' '} 21 | pages/index.js 22 |

23 | 24 | 53 |
54 | 55 | 67 |
68 | ) 69 | } 70 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # news-graph 2 | 3 | Working with New York Times article data in Neo4j and GraphQL. 4 | 5 | ![](img/datamodel.png) 6 | 7 | ## The Data 8 | 9 | Data comes from the [New York Times API](https://developer.nytimes.com/). You'll need to [register for an API key](https://developer.nytimes.com/get-started), then, for example, to import the most popular articles of the last 7 days into Neo4j run this Cypher query: 10 | 11 | ```cypher 12 | WITH "" AS key 13 | CALL apoc.load.json("https://api.nytimes.com/svc/mostpopular/v2/viewed/7.json?api-key=" + key) YIELD value 14 | UNWIND value.results AS article 15 | MERGE (a:Article {url: article.url}) 16 | SET a.title = article.title, 17 | a.abstract = article.abstract, 18 | a.published = datetime(article.published_date), 19 | a.byline = article.byline 20 | 21 | FOREACH (desc IN article.des_facet | 22 | MERGE (d:Topic {name: desc}) 23 | MERGE (a)-[:HAS_TOPIC]->(d) 24 | ) 25 | 26 | FOREACH (per IN article.per_facet | 27 | MERGE (p:Person {name: per}) 28 | MERGE (a)-[:ABOUT_PERSON]->(p) 29 | ) 30 | 31 | FOREACH (org IN article.org_facet | 32 | MERGE (o:Organization {name: org}) 33 | MERGE (a)-[:ABOUT_ORGANIZATION]->(o) 34 | ) 35 | 36 | FOREACH (geo IN article.geo_facet | 37 | MERGE (g:Geo {name: geo}) 38 | MERGE (a)-[:ABOUT_GEO]->(g) 39 | ) 40 | 41 | MERGE (p:Photo {url: coalesce(article.media[0]["media-metadata"][2].url, "NA")}) 42 | SET p.caption = article.media[0].caption 43 | MERGE (a)-[:HAS_PHOTO]->(p) 44 | 45 | WITH a, split(replace(substring(article.byline, 3), " and ", ","), ",") AS authors 46 | UNWIND authors AS author 47 | MERGE (auth:Author {name: trim(author)}) 48 | MERGE (a)-[:BYLINE]->(auth) 49 | ``` 50 | 51 | Then, to add latitude, longitude for each geographic area using the `apoc.spatial.geocodeOnce` procedure: 52 | 53 | ```cypher 54 | MATCH (g:Geo) 55 | CALL apoc.spatial.geocodeOnce(g.name) YIELD location 56 | SET g.location = point({latitude: location.latitude, longitude: location.longitude}) 57 | ``` 58 | 59 | ## GraphQL 60 | 61 | See the [/graphql](/graphql) directory for the GraphQL API code. 62 | 63 | ## Cloudflare Workers 64 | 65 | See the [/workers](/workers) directory for location-aware news recommendations using Cloudflare Workers and Neo4j, deployed at `https://workers.graphstuff.workers.dev/`. 66 | 67 | * **[Improving News Recommendations With Knowledge Graphs & Cloudflare Workers](https://dev.neo4j.com/news-graph)** - presented at Cloudflare's Full Stack Week, Nov 2021 ([Video](https://dev.neo4j.com/3osz6TW), [Slides](https://dev.neo4j.com/news-graph)) 68 | -------------------------------------------------------------------------------- /graphql/apollo-server/schema.graphql: -------------------------------------------------------------------------------- 1 | type Article @exclude(operations: [CREATE, UPDATE, DELETE]) { 2 | abstract: String 3 | published: Date 4 | title: String 5 | url: String! 6 | photo: Photo! @relationship(type: "HAS_PHOTO", direction: OUT) 7 | authors: [Author!]! @relationship(type: "BYLINE", direction: OUT) 8 | topics: [Topic!]! @relationship(type: "HAS_TOPIC", direction: OUT) 9 | people: [Person!]! @relationship(type: "ABOUT_PERSON", direction: OUT) 10 | organizations: [Organization!]! 11 | @relationship(type: "ABOUT_ORGANIZATION", direction: OUT) 12 | geos: [Geo!]! @relationship(type: "ABOUT_GEO", direction: OUT) 13 | } 14 | 15 | type Author @exclude(operations: [CREATE, UPDATE, DELETE]) { 16 | name: String! 17 | articles: [Article!]! @relationship(type: "BYLINE", direction: IN) 18 | } 19 | 20 | type Topic @exclude(operations: [CREATE, UPDATE, DELETE]) { 21 | name: String! 22 | articles: [Article!]! @relationship(type: "HAS_TOPIC", direction: IN) 23 | } 24 | 25 | type Person @exclude(operations: [CREATE, UPDATE, DELETE]) { 26 | name: String! 27 | articles: [Article!]! 28 | @relationship(type: "ABOUT_PERSON", direction: IN) 29 | } 30 | 31 | type Organization @exclude(operations: [CREATE, UPDATE, DELETE]) { 32 | name: String! 33 | articles: [Article!]! 34 | @relationship(type: "ABOUT_ORGANIZATION", direction: IN) 35 | } 36 | 37 | type Geo @exclude(operations: [CREATE, UPDATE, DELETE]) { 38 | name: String! 39 | location: Point 40 | articles: [Article!]! @relationship(type: "ABOUT_GEO", direction: IN) 41 | } 42 | 43 | type Photo @exclude(operations: [CREATE, UPDATE, DELETE]) { 44 | caption: String 45 | url: String! 46 | article: Article! @relationship(type: "HAS_PHOTO", direction: IN) 47 | } 48 | 49 | # @cypher schema directive fields 50 | 51 | extend type Topic { 52 | articleCount: Int 53 | @cypher(statement: "RETURN SIZE( (this)<-[:HAS_TOPIC]-(:Article) )") 54 | } 55 | 56 | extend type Article { 57 | similar(first: Int = 3): [Article] 58 | @cypher( 59 | statement: """ 60 | MATCH (this)-[:HAS_TOPIC|:ABOUT_GEO|:ABOUT_PERSON]->(t) 61 | MATCH (t)<-[:HAS_TOPIC|:ABOUT_GEO|:ABOUT_PERSON]-(rec:Article) 62 | WITH rec, COUNT(*) AS score ORDER BY score DESC LIMIT $first 63 | RETURN rec 64 | """ 65 | ) 66 | } 67 | 68 | extend type Person { 69 | description: String 70 | @cypher( 71 | statement: """ 72 | WITH this, apoc.static.get('gcpkey') AS gcpkey, 73 | 'https://kgsearch.googleapis.com/v1/entities:search?query=' AS baseURL 74 | CALL apoc.load.json(baseURL + apoc.text.urlencode(this.name) + '&limit=1&key=' + gcpkey) 75 | YIELD value 76 | RETURN value.itemListElement[0].result.detailedDescription.articleBody 77 | """ 78 | ) 79 | } 80 | -------------------------------------------------------------------------------- /graphql/nextjs/README.md: -------------------------------------------------------------------------------- 1 | ## News Graph GraphQL With Next.js 2 | 3 | This is a Next.js application that uses the "API Routes" feature of Next.js to create a GraphQL API of news articles using the [Neo4j GraphQL Library.](http://dev.neo4j.com/graphql) 4 | 5 | [Live Demo: news-graph.vercel.app/api/graphql](https://news-graph.vercel.app/api/graphql) 6 | 7 | ## Setup 8 | 9 | You'll need to set environment variables to connect to Neo4j. By default Next.js will read from `.env` files. For example: 10 | 11 | `.env.local` 12 | ``` 13 | NEO4J_USER=neo4j 14 | NEO4J_URI=neo4j+s:// 15 | NEO4J_PASSWORD= 16 | DEBUG=@neo4j/graphql:* 17 | ``` 18 | 19 | ## Queries 20 | 21 | Show the most recent articles and the geos, organizations, people, and topics those articles are about. 22 | 23 | ```GraphQL 24 | { 25 | articles(options: { sort: { published: DESC }, limit: 100 }) { 26 | title 27 | url 28 | published 29 | abstract 30 | authors { 31 | name 32 | } 33 | photo { 34 | caption 35 | url 36 | } 37 | geos { 38 | name 39 | } 40 | organizations { 41 | name 42 | } 43 | people { 44 | name 45 | } 46 | topics { 47 | name 48 | } 49 | } 50 | } 51 | ``` 52 | 53 | 54 | Find the most recent news related to geographic areas near San Mateo, CA, USA. 55 | 56 | ```GraphQL 57 | { 58 | geos( 59 | where: { 60 | location_LTE: { 61 | distance: 100000 62 | point: { latitude: 37.5630, longitude: -122.3255 } 63 | } 64 | } 65 | options: { limit: 10 } 66 | ) { 67 | name 68 | articles(options: { limit: 2, sort: { published: DESC } }) { 69 | title 70 | url 71 | published 72 | abstract 73 | topics { 74 | name 75 | } 76 | } 77 | } 78 | } 79 | 80 | ``` 81 | 82 | This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). 83 | 84 | ## Getting Started 85 | 86 | First, run the development server: 87 | 88 | ```bash 89 | npm run dev 90 | # or 91 | yarn dev 92 | ``` 93 | 94 | Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. 95 | 96 | You can start editing the page by modifying `pages/index.js`. The page auto-updates as you edit the file. 97 | 98 | [API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.js`. 99 | 100 | The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages. 101 | 102 | ## Learn More 103 | 104 | To learn more about Next.js, take a look at the following resources: 105 | 106 | - [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. 107 | - [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. 108 | 109 | You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! 110 | 111 | ## Deploy on Vercel 112 | 113 | The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. 114 | 115 | Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. 116 | -------------------------------------------------------------------------------- /workers/dist/worker.js: -------------------------------------------------------------------------------- 1 | !function(t){var e={};function n(a){if(e[a])return e[a].exports;var o=e[a]={i:a,l:!1,exports:{}};return t[a].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,a){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:a})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var a=Object.create(null);if(n.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(a,o,function(e){return t[e]}.bind(null,o));return a},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=1)}([function(t,e){t.exports={Router:({base:t="",routes:e=[]}={})=>({__proto__:new Proxy({},{get:(n,a,o)=>(n,...r)=>e.push([a.toUpperCase(),RegExp(`^${(t+n).replace(/(\/?)\*/g,"($1.*)?").replace(/\/$/,"").replace(/:(\w+)(\?)?(\.)?/g,"$2(?<$1>[^/]+)$2$3").replace(/\.(?=[\w(])/,"\\.")}/*$`),r])&&o}),routes:e,async handle(t,...n){let a,o,r=new URL(t.url);for(var[i,s,p]of(t.query=Object.fromEntries(r.searchParams),e))if((i===t.method||"ALL"===i)&&(o=r.pathname.match(s)))for(var c of(t.params=o.groups,p))if(void 0!==(a=await c(t.proxy||t,...n)))return a}})}},function(t,e,n){"use strict";n.r(e);var a=n(0);const o=Object(a.Router)(),r=({statement:t,parameters:e})=>{var n=new Headers;return n.append("Accept","application/json"),n.append("Content-Type","application/json"),n.append("Authorization",NEO4J_AUTH),{method:"POST",headers:n,body:JSON.stringify({statements:[{statement:t,parameters:e}]}),redirect:"follow"}};o.get("/",async(t,e)=>{var n={location:{latitude:t.cf.latitude||0,longitude:t.cf.longitude||0}};const a=await fetch(NEO4J_HTTP_URI,r({statement:"\n MATCH (g:Geo) \n WITH \n distance(\n g.location, \n point({latitude: toFloat($location.latitude), longitude: toFloat($location.longitude)})\n ) AS dist, g\n ORDER BY dist ASC LIMIT 10\n MATCH (a:Article)-[:ABOUT_GEO]->(g) WITH DISTINCT a ORDER BY a.published DESC\n WITH COLLECT(\n a {.*, articleId: id(a),\n geos: [(a)-[:ABOUT_GEO]->(g:Geo) | g.name], \n topics: [(a)-[:HAS_TOPIC]->(t:Topic) | t.name], \n orgs: [(a)-[:ABOUT_ORGANIZATION]->(o:Organization) | o.name], \n people: [(a)-[:ABOUT_PERSON]->(p:Person) | p.name], \n photos: [(a)-[:HAS_PHOTO]->(p:Photo) | {caption: p.caption, url: p.url}]\n }) AS data\n RETURN data",parameters:n})),o=await a.json();return new Response(JSON.stringify(o.results[0].data[0].row[0]),{status:200,headers:{"content-type":"application/json;charset=UTF-8"}})}),o.get("/recommended/:id",async({params:t})=>{var e={article:{id:decodeURIComponent(t.id)}};const n=await fetch(NEO4J_HTTP_URI,r({statement:"\n MATCH (this:Article) WHERE id(this) = toInteger($article.id)\n MATCH (this)-[:HAS_TOPIC|:ABOUT_GEO|:ABOUT_ORGANIZATION|:ABOUT_PERSON]->(t)\n WITH * ORDER BY id(t)\n WITH this, COLLECT(id(t)) AS t1\n MATCH (a:Article)-[:HAS_TOPIC|:ABOUT_GEO|:ABOUT_ORGANIZATION|:ABOUT_PERSON]->(t) WHERE a <> this\n WITH * ORDER BY id(t)\n WITH this, a, t1, COLLECT(id(t)) AS t2\n WITH a, gds.alpha.similarity.jaccard(t1, t2) AS jaccard\n ORDER BY jaccard DESC LIMIT 10\n RETURN COLLECT(a{.*, articleId: id(a),\n geos: [(a)-[:ABOUT_GEO]->(g:Geo) | g.name], \n topics: [(a)-[:HAS_TOPIC]->(t:Topic) | t.name], \n orgs: [(a)-[:ABOUT_ORGANIZATION]->(o:Organization) | o.name], \n people: [(a)-[:ABOUT_PERSON]->(p:Person) | p.name], \n photos: [(a)-[:HAS_PHOTO]->(p:Photo) | {caption: p.caption, url: p.url}] \n }) AS data",parameters:e})),a=await n.json();return new Response(JSON.stringify(a.results[0].data[0].row[0]),{status:200,headers:{"content-type":"application/json;charset=UTF-8"}})}),o.all("*",()=>new Response("404, not found!",{status:404})),addEventListener("fetch",t=>{t.respondWith(o.handle(t.request))})}]); -------------------------------------------------------------------------------- /neo4j/guides/index.adoc: -------------------------------------------------------------------------------- 1 | = News Graph 2 | 3 | == News Graph 4 | 5 | This guide explores importing and querying data about popular New York Times Articles. 6 | 7 | * Importing data with `apoc.load.json` 8 | * Querying with Cypher 9 | * Exercise: Writing an article recommendation query 10 | 11 | Data from https://developer.nytimes.com/apis[NYTimes API] 12 | 13 | == LOAD JSON 14 | 15 | `LOAD JSON` is a Cypher feature that allows us to load data into Neo4j from JSON files. 16 | 17 | It will parse a JSON file and yield an object that we can then manipulate using Cypher, typically describing the patterns we want to create in the graph. Let's take a look at our news data: 18 | 19 | [source,cypher] 20 | ---- 21 | CALL apoc.load.json("https://raw.githubusercontent.com/johnymontana/fullstack-graphql-neo4j-auradb-nextjs-vercel-workshop/main/data/news.json") YIELD value 22 | RETURN value 23 | ---- 24 | 25 | == Data Import 26 | 27 | Let's run this import script to load our news data, then we'll see how to query it using Cypher. 28 | 29 | [source,cypher] 30 | ---- 31 | CALL apoc.load.json("https://raw.githubusercontent.com/johnymontana/fullstack-graphql-neo4j-auradb-nextjs-vercel-workshop/main/data/news.json") YIELD value 32 | UNWIND value.results AS article 33 | MERGE (a:Article {url: article.url}) 34 | SET a.title = article.title, 35 | a.abstract = article.abstract, 36 | a.published = datetime(article.published_date), 37 | a.byline = article.byline 38 | 39 | FOREACH (desc IN article.des_facet | 40 | MERGE (d:Topic {name: desc}) 41 | MERGE (a)-[:HAS_TOPIC]->(d) 42 | ) 43 | 44 | FOREACH (per IN article.per_facet | 45 | MERGE (p:Person {name: per}) 46 | MERGE (a)-[:ABOUT_PERSON]->(p) 47 | ) 48 | 49 | FOREACH (org IN article.org_facet | 50 | MERGE (o:Organization {name: org}) 51 | MERGE (a)-[:ABOUT_ORGANIZATION]->(o) 52 | ) 53 | 54 | FOREACH (geo IN article.geo_facet | 55 | MERGE (g:Geo {name: geo}) 56 | MERGE (a)-[:ABOUT_GEO]->(g) 57 | ) 58 | 59 | MERGE (p:Photo {url: coalesce(article.media[0]["media-metadata"][2].url, "NA")}) 60 | SET p.caption = article.media[0].caption 61 | MERGE (a)-[:HAS_PHOTO]->(p) 62 | 63 | WITH a, split(replace(substring(article.byline, 3), " and ", ","), ",") AS authors 64 | UNWIND authors AS author 65 | MERGE (auth:Author {name: trim(author)}) 66 | MERGE (a)-[:BYLINE]->(auth) 67 | RETURN * 68 | ---- 69 | 70 | == Querying With Cypher: MATCH 71 | 72 | The `MATCH` command allows us to search for graph patterns in the database using "ASCI-art" syntax. Here we define a simple graph pattern to search for all article nodes: 73 | 74 | [source,cypher] 75 | ---- 76 | MATCH (a:Article) RETURN a 77 | ---- 78 | 79 | We can use ordering, sorting, and limiting in Cypher (pagination): 80 | 81 | [source,cypher] 82 | ---- 83 | MATCH (a:Article) 84 | RETURN a 85 | ORDER BY a.published DESC 86 | LIMIT 10 87 | ---- 88 | 89 | == Querying With Cypher: Graph Patterns 90 | 91 | We can define more complex graph patterns. Let's also include topics of articles: 92 | 93 | [source,cypher] 94 | ---- 95 | MATCH (a:Article)-[:HAS_TOPIC]->(t:Topic) 96 | RETURN * 97 | ORDER BY a.published DESC 98 | LIMIT 25 99 | ---- 100 | 101 | == Querying With Cypher: More Graph Patterns 102 | 103 | Cypher pattern matching allows us to define complex graph patterns to search for in the graph: 104 | 105 | [source,cypher] 106 | ---- 107 | MATCH (a:Article)-[:HAS_TOPIC]->(t:Topic) 108 | RETURN * 109 | ORDER BY a.published DESC 110 | LIMIT 25 111 | ---- 112 | 113 | == Shortest Path & Variable Length Paths 114 | 115 | Cypher has a number of features built for working with graph data. Here we look at _variable length paths_ and finding the shortest path between two nodes in the graph. 116 | 117 | What's the shortest path from "Cheese" to "Social Media"? 118 | 119 | [source,cypher] 120 | ---- 121 | MATCH 122 | p=shortestPath( 123 | (:Topic {name: "Cheese"})-[*]-(:Organization {name: "TikTok (ByteDance)"}) 124 | ) 125 | RETURN p 126 | ---- 127 | 128 | == Exercise 129 | 130 | For this exercise, we're going to write an article recommendation query. Imagine a user is reading an article and wants to read other "similar" articles. Write a Cypher query to show similar articles to the user. 131 | 132 | [source,cypher] 133 | ---- 134 | MATCH (a:Article) WITH a LIMIT 1 135 | MATCH **TRAVERSE THE GRAPH TO FIND SIMILAR ARTICLES HERE** 136 | RETURN * 137 | ---- -------------------------------------------------------------------------------- /workers/index.js: -------------------------------------------------------------------------------- 1 | import { Router } from 'itty-router' 2 | 3 | const router = Router() 4 | 5 | const neo4jRequestOptions = ({ statement, parameters }) => { 6 | var headers = new Headers() 7 | headers.append('Accept', 'application/json') 8 | headers.append('Content-Type', 'application/json') 9 | headers.append('Authorization', NEO4J_AUTH) 10 | 11 | // Use this header for Jolt (JSON + Bolt) 12 | //headers.append("Accept", "application/vnd.neo4j.jolt+json-seq"); 13 | 14 | var requestOptions = { 15 | method: 'POST', 16 | headers, 17 | body: JSON.stringify({ statements: [{ statement, parameters }] }), 18 | redirect: 'follow', 19 | } 20 | 21 | return requestOptions 22 | } 23 | 24 | /* 25 | Our index route, find the Geo closest to the user and associated news articles. 26 | */ 27 | router.get('/', async (req, res) => { 28 | //console.log(JSON.stringify(req, undefined, 2)) 29 | 30 | const location = { 31 | latitude: req.cf.latitude || 0.0, 32 | longitude: req.cf.longitude || 0.0, 33 | } 34 | 35 | const statement = ` 36 | MATCH (g:Geo) 37 | WITH 38 | distance( 39 | g.location, 40 | point({latitude: toFloat($location.latitude), longitude: toFloat($location.longitude)}) 41 | ) AS dist, g 42 | ORDER BY dist ASC LIMIT 10 43 | MATCH (a:Article)-[:ABOUT_GEO]->(g) WITH DISTINCT a ORDER BY a.published DESC 44 | WITH COLLECT( 45 | a {.*, articleId: id(a), 46 | geos: [(a)-[:ABOUT_GEO]->(g:Geo) | g.name], 47 | topics: [(a)-[:HAS_TOPIC]->(t:Topic) | t.name], 48 | orgs: [(a)-[:ABOUT_ORGANIZATION]->(o:Organization) | o.name], 49 | people: [(a)-[:ABOUT_PERSON]->(p:Person) | p.name], 50 | photos: [(a)-[:HAS_PHOTO]->(p:Photo) | {caption: p.caption, url: p.url}] 51 | }) AS data 52 | RETURN data` 53 | 54 | var parameters = { location } 55 | 56 | const response = await fetch( 57 | NEO4J_HTTP_URI, 58 | neo4jRequestOptions({ statement, parameters }) 59 | ) 60 | const result = await response.json() 61 | 62 | return new Response(JSON.stringify(result.results[0].data[0].row[0]), { 63 | status: 200, 64 | headers: { 'content-type': 'application/json;charset=UTF-8' }, 65 | }) 66 | }) 67 | 68 | /* 69 | Given an articleId, find similar articles. 70 | */ 71 | router.get('/recommended/:id', async ({ params }) => { 72 | const articleId = decodeURIComponent(params.id) 73 | 74 | const statement = ` 75 | MATCH (this:Article) WHERE id(this) = toInteger($article.id) 76 | MATCH (this)-[:HAS_TOPIC|:ABOUT_GEO|:ABOUT_ORGANIZATION|:ABOUT_PERSON]->(t) 77 | WITH * ORDER BY id(t) 78 | WITH this, COLLECT(id(t)) AS t1 79 | MATCH (a:Article)-[:HAS_TOPIC|:ABOUT_GEO|:ABOUT_ORGANIZATION|:ABOUT_PERSON]->(t) WHERE a <> this 80 | WITH * ORDER BY id(t) 81 | WITH this, a, t1, COLLECT(id(t)) AS t2 82 | WITH a, gds.alpha.similarity.jaccard(t1, t2) AS jaccard 83 | ORDER BY jaccard DESC LIMIT 10 84 | RETURN COLLECT(a{.*, articleId: id(a), 85 | geos: [(a)-[:ABOUT_GEO]->(g:Geo) | g.name], 86 | topics: [(a)-[:HAS_TOPIC]->(t:Topic) | t.name], 87 | orgs: [(a)-[:ABOUT_ORGANIZATION]->(o:Organization) | o.name], 88 | people: [(a)-[:ABOUT_PERSON]->(p:Person) | p.name], 89 | photos: [(a)-[:HAS_PHOTO]->(p:Photo) | {caption: p.caption, url: p.url}] 90 | }) AS data` 91 | 92 | var parameters = { article: { id: articleId } } 93 | 94 | const response = await fetch( 95 | NEO4J_HTTP_URI, 96 | neo4jRequestOptions({ statement, parameters }) 97 | ) 98 | const result = await response.json() 99 | 100 | return new Response(JSON.stringify(result.results[0].data[0].row[0]), { 101 | status: 200, 102 | headers: { 'content-type': 'application/json;charset=UTF-8' }, 103 | }) 104 | }) 105 | 106 | /* 107 | This is the last route we define, it will match anything that hasn't hit a route we've defined 108 | above, therefore it's useful as a 404 (and avoids us hitting worker exceptions, so make sure to include it!). 109 | 110 | Visit any page that doesn't exist (e.g. /foobar) to see it in action. 111 | */ 112 | router.all('*', () => new Response('404, not found!', { status: 404 })) 113 | 114 | /* 115 | This snippet ties our worker to the router we defined above, all incoming requests 116 | are passed to the router where your routes are called and the response is sent. 117 | */ 118 | addEventListener('fetch', e => { 119 | e.respondWith(router.handle(e.request)) 120 | }) 121 | -------------------------------------------------------------------------------- /graphql/nextjs/pages/api/graphql.js: -------------------------------------------------------------------------------- 1 | import { gql, ApolloServer } from "apollo-server-micro"; 2 | import { ApolloServerPluginLandingPageGraphQLPlayground } from "apollo-server-core"; 3 | import neo4j from "neo4j-driver"; 4 | import { Neo4jGraphQL } from "@neo4j/graphql"; 5 | 6 | const typeDefs = gql` 7 | type Article @exclude(operations: [CREATE, UPDATE, DELETE]) { 8 | abstract: String 9 | published: Date 10 | title: String 11 | url: String! 12 | photo: Photo @relationship(type: "HAS_PHOTO", direction: OUT) 13 | authors: [Author] @relationship(type: "BYLINE", direction: OUT) 14 | topics: [Topic] @relationship(type: "HAS_TOPIC", direction: OUT) 15 | people: [Person] @relationship(type: "ABOUT_PERSON", direction: OUT) 16 | organizations: [Organization] 17 | @relationship(type: "ABOUT_ORGANIZATION", direction: OUT) 18 | geos: [Geo] @relationship(type: "ABOUT_GEO", direction: OUT) 19 | } 20 | 21 | type Author @exclude(operations: [CREATE, UPDATE, DELETE]) { 22 | name: String! 23 | articles: [Article] @relationship(type: "BYLINE", direction: IN) 24 | } 25 | 26 | type Topic @exclude(operations: [CREATE, UPDATE, DELETE]) { 27 | name: String! 28 | articles: [Article] @relationship(type: "HAS_TOPIC", direction: IN) 29 | } 30 | 31 | type Person @exclude(operations: [CREATE, UPDATE, DELETE]) { 32 | name: String! 33 | articles: [Article] @relationship(type: "ABOUT_PERSON", direction: IN) 34 | } 35 | 36 | type Organization @exclude(operations: [CREATE, UPDATE, DELETE]) { 37 | name: String! 38 | articles: [Article] @relationship(type: "ABOUT_ORGANIZATION", direction: IN) 39 | } 40 | 41 | type Geo @exclude(operations: [CREATE, UPDATE, DELETE]) { 42 | name: String! 43 | location: Point 44 | articles: [Article] @relationship(type: "ABOUT_GEO", direction: IN) 45 | } 46 | 47 | type Photo @exclude(operations: [CREATE, UPDATE, DELETE]) { 48 | caption: String 49 | url: String! 50 | article: Article @relationship(type: "HAS_PHOTO", direction: IN) 51 | } 52 | 53 | # @cypher schema directive fields 54 | 55 | extend type Topic { 56 | articleCount: Int 57 | @cypher(statement: "RETURN SIZE( (this)<-[:HAS_TOPIC]-(:Article) )") 58 | } 59 | 60 | #extend type Article { 61 | # similar(first: Int = 3): [Article] 62 | # @cypher( 63 | # statement: """ 64 | # MATCH (this)-[:HAS_TOPIC]->(t:Topic) 65 | # WITH this, COLLECT(id(t)) AS t1 66 | # MATCH (a:Article)-[:HAS_TOPIC]->(t:Topic) WHERE a <> this 67 | # WITH this, a, t1, COLLECT(id(t)) AS t2 68 | # WITH a, gds.alpha.similarity.jaccard(t1, t2) AS jaccard 69 | # ORDER BY jaccard DESC 70 | # RETURN a LIMIT toInteger($first) 71 | # """ 72 | # ) 73 | #} 74 | 75 | # type Mutation { 76 | # createComment(userId: ID!, text: String!, articleId: ID!): Comment 77 | # @cypher( 78 | # statement: """ 79 | # MATCH (u:User {userId: $userId}) 80 | # MATCH (a:Article {articleId: $articleId}) 81 | # CREATE (c:Comment)<-[:WROTE_COMMENT]-(u) 82 | # SET c.text = $text, 83 | # c.created = timestamp(), 84 | # c.commentId = randomUUD() 85 | # RETURN c 86 | # """ 87 | # ) 88 | # } 89 | 90 | type User @exclude(operations: [CREATE, UPDATE, DELETE]) { 91 | userId: ID! 92 | userName: String! 93 | } 94 | 95 | type Comment @exclude(operations: [CREATE, UPDATE, DELETE]) { 96 | commentId: ID! @id 97 | created: DateTime @timestamp 98 | text: String! 99 | article: Article @relationship(type: "HAS_COMMENT", direction: IN) 100 | author: User @relationship(type: "WROTE_COMMENT", direction: IN) 101 | } 102 | 103 | type Query { 104 | myComments: [Comment] 105 | @cypher( 106 | statement: """ 107 | MATCH (c:Comment)<-[:WROTE_COMMENT]-(u:User {userId: $auth.jwt.sub}) 108 | RETURN c 109 | """ 110 | ) 111 | geoSearch(latitude: Float!, longitude: Float!): [Article] 112 | @cypher( 113 | statement: """ 114 | MATCH (g:Geo)<-[:ABOUT_GEO]-(a:Article) 115 | WHERE distance(g, Point({latitude: $latitude, longitude: $longitude})) < 1000 116 | RETURN a 117 | """ 118 | ) 119 | 120 | articleSearch(searchString: String!): [Article] 121 | @cypher( 122 | statement: """ 123 | CALL db.index.fulltext.queryNodes('articleIndex', $searchString + '~') 124 | YIELD node RETURN node 125 | """ 126 | ) 127 | } 128 | 129 | # extend type Comment @auth(rules: [{ where: { username: "$jwt.sub" } }]) 130 | 131 | # extend type Person { 132 | # description: String 133 | # @cypher( 134 | # statement: """ 135 | # WITH this, apoc.static.get('gcpkey') AS gcpkey, 136 | # 'https://kgsearch.googleapis.com/v1/entities:search?query=' AS baseURL 137 | # CALL apoc.load.json(baseURL + apoc.text.urlencode(this.name) + '&limit=1&key=' + gcpkey) 138 | # YIELD value 139 | # RETURN value.itemListElement[0].result.detailedDescription.articleBody 140 | # """ 141 | # ) 142 | # } 143 | `; 144 | 145 | const driver = neo4j.driver( 146 | process.env.NEO4J_URI, 147 | neo4j.auth.basic(process.env.NEO4J_USER, process.env.NEO4J_PASSWORD) 148 | ); 149 | 150 | const neoSchema = new Neo4jGraphQL({ typeDefs, driver }); 151 | 152 | const apolloServer = new ApolloServer({ 153 | schema: neoSchema.schema, 154 | playground: true, 155 | introspection: true, 156 | plugins: [ApolloServerPluginLandingPageGraphQLPlayground], 157 | }); 158 | 159 | const startServer = apolloServer.start(); 160 | 161 | export default async function handler(req, res) { 162 | await startServer; 163 | await apolloServer.createHandler({ 164 | path: "/api/graphql", 165 | })(req, res); 166 | } 167 | 168 | export const config = { 169 | api: { 170 | bodyParser: false, 171 | }, 172 | }; 173 | -------------------------------------------------------------------------------- /neo4j/guides/index.html: -------------------------------------------------------------------------------- 1 | 21 | 24 |
25 | 26 | 44 | 45 | 46 | 47 |

News Graph

48 | 49 | 50 | 51 | 52 |
53 |

News Graph

54 |
55 |
56 |
57 |

This guide explores importing and querying data about popular New York Times Articles.

58 |
59 |
60 |
    61 |
  • 62 |

    Importing data with apoc.load.json

    63 |
  • 64 |
  • 65 |

    Querying with Cypher

    66 |
  • 67 |
  • 68 |

    Exercise: Writing an article recommendation query

    69 |
  • 70 |
71 |
72 |
73 |

Data from NYTimes API

74 |
75 |
76 |
77 |
78 | 79 | 80 | 81 | 82 |
83 |

LOAD JSON

84 |
85 |
86 |
87 |

LOAD JSON is a Cypher feature that allows us to load data into Neo4j from JSON files.

88 |
89 |
90 |

It will parse a JSON file and yield an object that we can then manipulate using Cypher, typically describing the patterns we want to create in the graph. Let’s take a look at our news data:

91 |
92 |
93 |
94 |
CALL apoc.load.json("https://raw.githubusercontent.com/johnymontana/fullstack-graphql-neo4j-auradb-nextjs-vercel-workshop/main/data/news.json") YIELD value
 95 | RETURN value
96 |
97 |
98 |
99 |
100 |
101 | 102 | 103 | 104 | 105 |
106 |

Data Import

107 |
108 |
109 |
110 |

Let’s run this import script to load our news data, then we’ll see how to query it using Cypher.

111 |
112 |
113 |
114 |
CALL apoc.load.json("https://raw.githubusercontent.com/johnymontana/fullstack-graphql-neo4j-auradb-nextjs-vercel-workshop/main/data/news.json") YIELD value
115 | UNWIND value.results AS article
116 |   MERGE (a:Article {url: article.url})
117 |     SET a.title     = article.title,
118 |         a.abstract  = article.abstract,
119 |         a.published = datetime(article.published_date),
120 |         a.byline    = article.byline
121 | 
122 |   FOREACH (desc IN article.des_facet |
123 |     MERGE (d:Topic {name: desc})
124 |     MERGE (a)-[:HAS_TOPIC]->(d)
125 |   )
126 | 
127 |   FOREACH (per IN article.per_facet |
128 |     MERGE (p:Person {name: per})
129 |     MERGE (a)-[:ABOUT_PERSON]->(p)
130 |   )
131 | 
132 |   FOREACH (org IN article.org_facet |
133 |     MERGE (o:Organization {name: org})
134 |     MERGE (a)-[:ABOUT_ORGANIZATION]->(o)
135 |   )
136 | 
137 |   FOREACH (geo IN article.geo_facet |
138 |     MERGE (g:Geo {name: geo})
139 |     MERGE (a)-[:ABOUT_GEO]->(g)
140 |   )
141 | 
142 |   MERGE (p:Photo {url: coalesce(article.media[0]["media-metadata"][2].url, "NA")})
143 |     SET p.caption = article.media[0].caption
144 |   MERGE (a)-[:HAS_PHOTO]->(p)
145 | 
146 |   WITH a, split(replace(substring(article.byline, 3), " and ", ","), ",") AS authors
147 |   UNWIND authors AS author
148 |     MERGE (auth:Author {name: trim(author)})
149 |     MERGE (a)-[:BYLINE]->(auth)
150 | RETURN *
151 |
152 |
153 |
154 |
155 |
156 | 157 | 158 | 159 | 160 |
161 |

Querying With Cypher: MATCH

162 |
163 |
164 |
165 |

The MATCH command allows us to search for graph patterns in the database using "ASCI-art" syntax. Here we define a simple graph pattern to search for all article nodes:

166 |
167 |
168 |
169 |
MATCH (a:Article) RETURN a
170 |
171 |
172 |
173 |

We can use ordering, sorting, and limiting in Cypher (pagination):

174 |
175 |
176 |
177 |
MATCH (a:Article)
178 | RETURN a
179 | ORDER BY a.published DESC
180 | LIMIT 10
181 |
182 |
183 |
184 |
185 |
186 | 187 | 188 | 189 | 190 |
191 |

Querying With Cypher: Graph Patterns

192 |
193 |
194 |
195 |

We can define more complex graph patterns. Let’s also include topics of articles:

196 |
197 |
198 |
199 |
MATCH (a:Article)-[:HAS_TOPIC]->(t:Topic)
200 | RETURN *
201 | ORDER BY a.published DESC
202 | LIMIT 25
203 |
204 |
205 |
206 |
207 |
208 | 209 | 210 | 211 | 212 |
213 |

Querying With Cypher: More Graph Patterns

214 |
215 |
216 |
217 |

Cypher pattern matching allows us to define complex graph patterns to search for in the graph:

218 |
219 |
220 |
221 |
MATCH (a:Article)-[:HAS_TOPIC]->(t:Topic)
222 | RETURN *
223 | ORDER BY a.published DESC
224 | LIMIT 25
225 |
226 |
227 |
228 |
229 |
230 | 231 | 232 | 233 | 234 |
235 |

Shortest Path & Variable Length Paths

236 |
237 |
238 |
239 |

Cypher has a number of features built for working with graph data. Here we look at variable length paths and finding the shortest path between two nodes in the graph.

240 |
241 |
242 |

What’s the shortest path from "Cheese" to "Social Media"?

243 |
244 |
245 |
246 |
MATCH
247 | p=shortestPath(
248 |     (:Topic {name: "Cheese"})-[*]-(:Organization {name: "TikTok (ByteDance)"})
249 | )
250 | RETURN p
251 |
252 |
253 |
254 |
255 |
256 | 257 | 258 | 259 | 260 |
261 |

Exercise

262 |
263 |
264 |
265 |

For this exercise, we’re going to write an article recommendation query. Imagine a user is reading an article and wants to read other "similar" articles. Write a Cypher query to show similar articles to the user.

266 |
267 |
268 |
269 |
MATCH (a:Article) WITH a LIMIT 1
270 | MATCH **TRAVERSE THE GRAPH TO FIND SIMILAR ARTICLES HERE**
271 | RETURN *
272 |
273 |
274 |
275 |
276 |
277 |
278 |
-------------------------------------------------------------------------------- /viewed.json: -------------------------------------------------------------------------------- 1 | {"status":"OK","copyright":"Copyright (c) 2023 The New York Times Company. All Rights Reserved.","num_results":20,"results":[{"uri":"nyt://article/455d96f0-8d15-51d5-8488-7bea0e71a814","url":"https://www.nytimes.com/2023/11/05/us/golden-gate-bridge-suicide-nets.html","id":100000009156398,"asset_id":100000009156398,"source":"New York Times","published_date":"2023-11-05","updated":"2023-11-05 05:02:05","section":"U.S.","subsection":"","nytdsection":"u.s.","adx_keywords":"internal-sub-only;Suicides and Suicide Attempts;Depression (Mental);internal-great-read;Golden Gate Bridge;San Francisco Bay Area (Calif)","column":null,"byline":"By John Branch and Jim Wilson","type":"Article","title":"What the Golden Gate Is (Finally) Doing About Suicides","abstract":"After years of pressure from victims’ families, the installation of $217 million in steel netting is almost complete.","des_facet":["internal-sub-only","Suicides and Suicide Attempts","Depression (Mental)","internal-great-read"],"org_facet":[],"per_facet":[],"geo_facet":["Golden Gate Bridge","San Francisco Bay Area (Calif)"],"media":[{"type":"image","subtype":"photo","caption":"","copyright":"Jim Wilson/The New York Times","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05goldengate-18-mhtl-promo/05goldengate-18-mhtl-promo-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05goldengate-18-mhtl-promo/05goldengate-18-mhtl-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05goldengate-18-mhtl-promo/05goldengate-18-mhtl-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/3d960d33-c53e-50fd-8b24-dba742519e85","url":"https://www.nytimes.com/2023/11/05/world/middleeast/israel-egypt-gaza.html","id":100000009164172,"asset_id":100000009164172,"source":"New York Times","published_date":"2023-11-05","updated":"2023-11-05 23:16:35","section":"World","subsection":"Middle East","nytdsection":"world","adx_keywords":"Israel-Gaza War (2023- );International Relations;Politics and Government;Palestinians;Netanyahu, Benjamin;Danon, Danny (1971- );Sisi, Abdel Fattah el-;Hamas;Palestinian Authority;Egypt;Gaza Strip;Israel;Sinai Peninsula (Egypt)","column":null,"byline":"By Patrick Kingsley","type":"Article","title":"Israel Quietly Pushed for Egypt to Admit Large Numbers of Gazans","abstract":"The Israeli government has not publicly called for large numbers of Gazans to move to Egypt. But in private, diplomats say, it has pushed for just that — augmenting Palestinian fears of a permanent expulsion.","des_facet":["Israel-Gaza War (2023- )","International Relations","Politics and Government","Palestinians"],"org_facet":["Hamas","Palestinian Authority"],"per_facet":["Netanyahu, Benjamin","Danon, Danny (1971- )","Sisi, Abdel Fattah el-"],"geo_facet":["Egypt","Gaza Strip","Israel","Sinai Peninsula (Egypt)"],"media":[{"type":"image","subtype":"photo","caption":"Many people have headed to the Rafah border crossing, which connects Gaza with Egypt, in hopes of fleeing the strip.","copyright":"Samar Abu Elouf for The New York Times","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05Israel-Gaza-Migration-01-lpzg/05Israel-Gaza-Migration-01-lpzg-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05Israel-Gaza-Migration-01-lpzg/05Israel-Gaza-Migration-01-lpzg-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05Israel-Gaza-Migration-01-lpzg/05Israel-Gaza-Migration-01-lpzg-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://interactive/5af4c389-d98e-59c0-925f-7443c6a00783","url":"https://www.nytimes.com/interactive/2023/11/03/briefing/news-quiz-israel-matthew-perry-world-series.html","id":100000009163018,"asset_id":100000009163018,"source":"New York Times","published_date":"2023-11-03","updated":"2023-11-04 17:37:35","section":"Briefing","subsection":"","nytdsection":"briefing","adx_keywords":"Content Type: Quiz","column":null,"byline":"","type":"Interactive","title":"The New York Times News Quiz, Nov. 3, 2023","abstract":"Did you follow the news this week? Take our quiz to see how well you stack up with other Times readers.","des_facet":["Content Type: Quiz"],"org_facet":[],"per_facet":[],"geo_facet":[],"media":[{"type":"image","subtype":"","caption":"","copyright":"Tamir Kalifa for The New York Times","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/03/multimedia/03-quiz-israel-tqwc/03-quiz-israel-tqwc-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/03/multimedia/03-quiz-israel-tqwc/03-quiz-israel-tqwc-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/03/multimedia/03-quiz-israel-tqwc/03-quiz-israel-tqwc-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/7aac2010-0ad0-5fd1-8f89-2a3ec96863b7","url":"https://www.nytimes.com/2023/11/05/us/politics/democrats-biden-polls-trump.html","id":100000009166445,"asset_id":100000009166445,"source":"New York Times","published_date":"2023-11-05","updated":"2023-11-05 23:21:22","section":"U.S.","subsection":"Politics","nytdsection":"u.s.","adx_keywords":"Polls and Public Opinion;Presidential Election of 2024;United States Politics and Government;Axelrod, David;Biden, Joseph R Jr;Trump, Donald J;Chavez Rodriguez, Julie;Democratic Party","column":null,"byline":"By Michael D. Shear","type":"Article","title":"Democrats Express Deep Anxiety as Polls Show Biden Trailing Trump","abstract":"President Biden’s team emphasized that polls have failed to predict the results of elections when taken a year ahead of time.","des_facet":["Polls and Public Opinion","Presidential Election of 2024","United States Politics and Government"],"org_facet":["Democratic Party"],"per_facet":["Axelrod, David","Biden, Joseph R Jr","Trump, Donald J","Chavez Rodriguez, Julie"],"geo_facet":[],"media":[{"type":"image","subtype":"photo","caption":"A New York Times/Siena College poll released this weekend found that President Biden trailed Donald J. Trump in five critical swing states.","copyright":"Kevin Lamarque/Reuters","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05dc-biden-jwzp/05dc-biden-jwzp-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05dc-biden-jwzp/05dc-biden-jwzp-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05dc-biden-jwzp/05dc-biden-jwzp-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/ad9cf964-1f73-5bec-8696-923cdd1dc8b0","url":"https://www.nytimes.com/2023/11/05/opinion/maga-mike-johnson-christianity.html","id":100000009164271,"asset_id":100000009164271,"source":"New York Times","published_date":"2023-11-05","updated":"2023-11-05 22:55:20","section":"Opinion","subsection":"","nytdsection":"opinion","adx_keywords":"United States Politics and Government;Bible;Christians and Christianity;Evangelical Movement;Conservatism (US Politics);Rumors and Misinformation;Johnson, Mike (1972- );Republican Party;House of Representatives","column":null,"byline":"By David French","type":"Article","title":"‘MAGA Mike Johnson’ and Our Broken Christian Politics","abstract":"The speaker needs to consult his Bible more carefully.","des_facet":["United States Politics and Government","Bible","Christians and Christianity","Evangelical Movement","Conservatism (US Politics)","Rumors and Misinformation"],"org_facet":["Republican Party","House of Representatives"],"per_facet":["Johnson, Mike (1972- )"],"geo_facet":[],"media":[{"type":"image","subtype":"photo","caption":"","copyright":"Jim Lo Scalzo/EPA, via Shutterstock","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05French-wtql/05French-wtql-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05French-wtql/05French-wtql-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05French-wtql/05French-wtql-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/97ed8f84-5d3c-5fc1-8ffa-9f0727099085","url":"https://www.nytimes.com/2023/11/04/opinion/sunday/conservative-intellectuals-republicans.html","id":100000009156469,"asset_id":100000009156469,"source":"New York Times","published_date":"2023-11-04","updated":"2023-11-05 09:39:23","section":"Opinion","subsection":"Sunday Opinion","nytdsection":"opinion","adx_keywords":"United States Politics and Government;Presidential Election of 2024;Religion-State Relations;Right-Wing Extremism and Alt-Right;Fringe Groups and Movements;Democracy (Theory and Philosophy);Conservatism (US Politics);Liberalism (US Politics);Christians and Christianity;Anton, Michael (1970- );Alamariu, Costin;Trump, Donald J;Claremont Institute;Republican Party","column":null,"byline":"By Damon Linker","type":"Article","title":"Get to Know the Influential Conservative Intellectuals Who Help Explain G.O.P. Extremism","abstract":"A coalition of catastrophists is trying to make the next generation of Republicans believe that the country is on the verge of collapse.","des_facet":["United States Politics and Government","Presidential Election of 2024","Religion-State Relations","Right-Wing Extremism and Alt-Right","Fringe Groups and Movements","Democracy (Theory and Philosophy)","Conservatism (US Politics)","Liberalism (US Politics)","Christians and Christianity"],"org_facet":["Claremont Institute","Republican Party"],"per_facet":["Anton, Michael (1970- )","Alamariu, Costin","Trump, Donald J"],"geo_facet":[],"media":[{"type":"image","subtype":"photo","caption":"","copyright":"Illustration by Pablo Delcan; photographs by Getty Images","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/05/opinion/sunday/05LinkerCover/05LinkerCover-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/05/opinion/sunday/05LinkerCover/05LinkerCover-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/05/opinion/sunday/05LinkerCover/05LinkerCover-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/ad386325-1397-51c8-9bc5-83097100601d","url":"https://www.nytimes.com/2023/11/05/opinion/israel-palestinians-hostage-silence.html","id":100000009158851,"asset_id":100000009158851,"source":"New York Times","published_date":"2023-11-05","updated":"2023-11-05 12:51:24","section":"Opinion","subsection":"","nytdsection":"opinion","adx_keywords":"Israel-Gaza War (2023- );Kidnapping and Hostages;Hamas;Israel;Gaza Strip","column":null,"byline":"By Alana Zeitchik","type":"Article","title":"Six Members of My Family Are Hostages in Gaza. Does Anyone Care?","abstract":"It seems the left has a hard time holding space for both Jewish and Palestinian civilians.","des_facet":["Israel-Gaza War (2023- )","Kidnapping and Hostages"],"org_facet":["Hamas"],"per_facet":[],"geo_facet":["Israel","Gaza Strip"],"media":[{"type":"image","subtype":"photo","caption":"","copyright":"Illustration by Sam Whitney/The New York Times","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/05/opinion/05zeitchik-image/05zeitchik-image-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/05/opinion/05zeitchik-image/05zeitchik-image-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/05/opinion/05zeitchik-image/05zeitchik-image-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://interactive/4bcfd28e-8f32-5d1d-aa07-607a56db4aad","url":"https://www.nytimes.com/interactive/2023/10/07/world/middleeast/israel-gaza-maps.html","id":100000009122658,"asset_id":100000009122658,"source":"New York Times","published_date":"2023-10-07","updated":"2023-11-05 14:32:33","section":"World","subsection":"Middle East","nytdsection":"world","adx_keywords":"Maps;Israel-Gaza War (2023- );Israel;Gaza Strip","column":null,"byline":"By Lauren Leatherby, Karen Yourish, Elena Shao, Eli Murray, Scott Reinhard, Josh Holder, Agnes Chang, Eleanor Lutz, Weiyi Cai, Pablo Robles, Leanne Abraham, Zach Levitt, Tim Wallace, Yousur Al-Hlou, Aric Toler, Ishaan Jhaveri, Robin Stein, Ashley Wu, Riley Mellen, John Ismay, Hiba Yazbek, Christoph Koettl, Molly Cook Escobar, Charlie Smart, Patrick Kingsley, Ronen Bergman, Amy Schoenfeld Walker, Bora Erden and Jon Huang","type":"Interactive","title":"Maps: Tracking the Attacks in Israel and Gaza","abstract":"Israel and Hezbollah have clashed repeatedly along the Israel-Lebanon border in recent weeks.","des_facet":["Maps","Israel-Gaza War (2023- )"],"org_facet":[],"per_facet":[],"geo_facet":["Israel","Gaza Strip"],"media":[{"type":"image","subtype":"","caption":"","copyright":"The New York Times","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/e74dd56e303bd96f9f37/e74dd56e303bd96f9f37-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/e74dd56e303bd96f9f37/e74dd56e303bd96f9f37-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/e74dd56e303bd96f9f37/e74dd56e303bd96f9f37-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/425bb20f-9ca8-54c5-aba3-a7bee81e13e7","url":"https://www.nytimes.com/2023/11/03/style/morgan-hartman-phillip-de-amezola-wedding.html","id":100000009110913,"asset_id":100000009110913,"source":"New York Times","published_date":"2023-11-03","updated":"2023-11-03 22:40:14","section":"Style","subsection":"","nytdsection":"style","adx_keywords":"Weddings and Engagements","column":null,"byline":"By Alix Strauss","type":"Article","title":"Trudging Through Sobriety and Other Challenges, One Step at a Time","abstract":"As Morgan Hartman and Phillip de Amezola supported each through personal health crises, their relationship and a “love plant” flourished.","des_facet":["Weddings and Engagements"],"org_facet":[],"per_facet":[],"geo_facet":[],"media":[{"type":"image","subtype":"photo","caption":"Phillip de Amezola and Morgan Hartman were married Oct. 19 at the Ritz-Carlton Key Biscayne, Miami.","copyright":"Gesi Schilling for The New York Times","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/03VOWS-Miami-01-lcmv/03VOWS-Miami-01-lcmv-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/03VOWS-Miami-01-lcmv/03VOWS-Miami-01-lcmv-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/03VOWS-Miami-01-lcmv/03VOWS-Miami-01-lcmv-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/9489dec0-fae8-5587-b3a7-d7161ff3b4fd","url":"https://www.nytimes.com/2023/11/05/magazine/commercial-satellites-space-junk.html","id":100000009160985,"asset_id":100000009160985,"source":"New York Times","published_date":"2023-11-05","updated":"2023-11-05 05:01:10","section":"Magazine","subsection":"","nytdsection":"magazine","adx_keywords":"Private Spaceflight;Space and Astronomy;International Space Station;Starlink Satellite Constellation (SpaceX);Deloitte Touche Tohmatsu Ltd;National Aeronautics and Space Administration","column":null,"byline":"By Jaime Green","type":"Article","title":"Befouling the Final Frontier","abstract":"As humanity rushes back to space, we seem to be repeating some of the mistakes we’ve made on Earth.","des_facet":["Private Spaceflight","Space and Astronomy","International Space Station"],"org_facet":["Starlink Satellite Constellation (SpaceX)","Deloitte Touche Tohmatsu Ltd","National Aeronautics and Space Administration"],"per_facet":[],"geo_facet":[],"media":[{"type":"image","subtype":"photo","caption":"","copyright":"Illustration by Pablo Delcan","approved_for_syndication":0,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/12/magazine/12Mag-Hot-1/12Mag-Hot-1-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/12/magazine/12Mag-Hot-1/12Mag-Hot-1-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/12/magazine/12Mag-Hot-1/12Mag-Hot-1-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/dee2339e-7274-5b60-b04d-dde415e0b644","url":"https://www.nytimes.com/2023/11/05/us/politics/biden-trump-2024-poll.html","id":100000009164414,"asset_id":100000009164414,"source":"New York Times","published_date":"2023-11-05","updated":"2023-11-05 23:06:57","section":"U.S.","subsection":"Politics","nytdsection":"u.s.","adx_keywords":"Presidential Election of 2024;Polls and Public Opinion;United States Economy;Biden, Joseph R Jr;Trump, Donald J;New York Times/Siena College Poll","column":null,"byline":"By Shane Goldmacher","type":"Article","title":"Trump Leads in 5 Critical States as Voters Blast Biden, Times/Siena Poll Finds","abstract":"Voters in battleground states said they trusted Donald J. Trump over President Biden on the economy, foreign policy and immigration, as Mr. Biden’s multiracial base shows signs of fraying.","des_facet":["Presidential Election of 2024","Polls and Public Opinion","United States Economy"],"org_facet":["New York Times/Siena College Poll"],"per_facet":["Biden, Joseph R Jr","Trump, Donald J"],"geo_facet":[],"media":[{"type":"image","subtype":"photo","caption":"","copyright":"The New York Times","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/03/multimedia/2023-10-30-november-polls-index/2023-10-30-november-polls-index-thumbStandard-v5.png","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/03/multimedia/2023-10-30-november-polls-index/2023-10-30-november-polls-index-mediumThreeByTwo210-v5.png","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/03/multimedia/2023-10-30-november-polls-index/2023-10-30-november-polls-index-mediumThreeByTwo440-v5.png","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/7810df63-0426-54e0-9f82-67ff8ed4892f","url":"https://www.nytimes.com/2023/11/03/nyregion/the-weekender.html","id":100000009163485,"asset_id":100000009163485,"source":"New York Times","published_date":"2023-11-03","updated":"2023-11-04 03:03:06","section":"New York","subsection":"","nytdsection":"new york","adx_keywords":"","column":null,"byline":"By The New York Times","type":"Article","title":"The Weekender","abstract":"A doctor who tracks Nazi loot. Also: a trip to a Hindu goddess festival, and Kim Kardashian on the future of Skims.","des_facet":[],"org_facet":[],"per_facet":[],"geo_facet":[],"media":[{"type":"image","subtype":"photo","caption":"","copyright":"Atul Loke for The New York Times, Alana Paterson for The New York Times, Shaniqwa Jarvis for The New York Times","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/04/multimedia/04weekender-top/04weekender-top-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/04/multimedia/04weekender-top/04weekender-top-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/04/multimedia/04weekender-top/04weekender-top-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/26de378f-0552-58f4-9507-c22c1ba2dc67","url":"https://www.nytimes.com/2023/11/05/briefing/trump-biden-poll.html","id":100000009166175,"asset_id":100000009166175,"source":"New York Times","published_date":"2023-11-05","updated":"2023-11-05 07:51:00","section":"Briefing","subsection":"","nytdsection":"briefing","adx_keywords":"internal-storyline-no;Presidential Election of 2024;Biden, Joseph R Jr;Trump, Donald J","column":null,"byline":"By Nate Cohn","type":"Article","title":"Trump Now Leads Biden","abstract":"An analysis of a new set of New York Times / Siena College polls.","des_facet":["internal-storyline-no","Presidential Election of 2024"],"org_facet":[],"per_facet":["Biden, Joseph R Jr","Trump, Donald J"],"geo_facet":[],"media":[{"type":"image","subtype":"photo","caption":"President Biden","copyright":"Haiyun Jiang for The New York Times","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05-themorning-promo/05themorning-nl-tpgb-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05-themorning-promo/05themorning-nl-tpgb-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05-themorning-promo/05themorning-nl-tpgb-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/20ae3ceb-ea96-54fd-9708-7322e473b5b5","url":"https://www.nytimes.com/2023/11/04/realestate/indian-immigrants-community-living.html","id":100000009152570,"asset_id":100000009152570,"source":"New York Times","published_date":"2023-11-04","updated":"2023-11-05 12:44:55","section":"Real Estate","subsection":"","nytdsection":"real estate","adx_keywords":"Indian-Americans;Retirement Communities and Assisted Living;Real Estate and Housing (Residential);Loneliness;Age, Chronological;Immigration and Emigration;Priya Living LLC;California;United States;India","column":null,"byline":"By Anna Kodé","type":"Article","title":"Seeking a Home for His Parents, a Son Built a Community","abstract":"Priya Living, a senior living company that is steeped in Indian culture, began with a small footprint in California and now has expansion plans in the U.S. and India.","des_facet":["Indian-Americans","Retirement Communities and Assisted Living","Real Estate and Housing (Residential)","Loneliness","Age, Chronological","Immigration and Emigration"],"org_facet":["Priya Living LLC"],"per_facet":[],"geo_facet":["California","United States","India"],"media":[{"type":"image","subtype":"photo","caption":"Priya Living is a senior living company steeped in Indian culture.","copyright":"Jason Henry for The New York Times","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/04priyaliving-01-zftb/04priyaliving-01-zftb-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/04priyaliving-01-zftb/04priyaliving-01-zftb-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/04priyaliving-01-zftb/04priyaliving-01-zftb-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/a78989ae-2d1f-5198-8915-be715b3e62dd","url":"https://www.nytimes.com/2023/11/04/opinion/sunday/israel-palestine-speech-debate.html","id":100000009162810,"asset_id":100000009162810,"source":"New York Times","published_date":"2023-11-04","updated":"2023-11-05 08:59:32","section":"Opinion","subsection":"Sunday Opinion","nytdsection":"opinion","adx_keywords":"Israel-Gaza War (2023- );Colleges and Universities;Demonstrations, Protests and Riots;Freedom of Speech and Expression;Hate Speech;Anti-Semitism;Zionism;Jews and Judaism;Palestinians;Terrorism;Books and Literature;Stern, Kenneth S;Israel;Gaza Strip","column":null,"byline":"By Michelle Goldberg","type":"Article","title":"When It Comes to Israel, Who Decides What You Can and Can’t Say?","abstract":"Why both sides feel victimized by the campus debate over the war in Gaza.","des_facet":["Israel-Gaza War (2023- )","Colleges and Universities","Demonstrations, Protests and Riots","Freedom of Speech and Expression","Hate Speech","Anti-Semitism","Zionism","Jews and Judaism","Palestinians","Terrorism","Books and Literature"],"org_facet":[],"per_facet":["Stern, Kenneth S"],"geo_facet":["Israel","Gaza Strip"],"media":[{"type":"image","subtype":"photo","caption":"","copyright":"Bing Guan for The New York Times","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/03goldberg1-kbhg/03goldberg1-kbhg-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/03goldberg1-kbhg/03goldberg1-kbhg-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/03goldberg1-kbhg/03goldberg1-kbhg-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/69728a1b-0f4d-5f3f-b804-311af956135f","url":"https://www.nytimes.com/2023/11/04/us/protests-israels-gaza.html","id":100000009164230,"asset_id":100000009164230,"source":"New York Times","published_date":"2023-11-04","updated":"2023-11-05 18:22:54","section":"U.S.","subsection":"","nytdsection":"u.s.","adx_keywords":"Israel-Gaza War (2023- );Demonstrations, Protests and Riots;Civilian Casualties;Palestinians;Arab-Americans;Palestinian-Americans;Polls and Public Opinion;Cincinnati (Ohio);San Francisco (Calif);Provo (Utah);Washington (DC);United States","column":null,"byline":"By The New York Times","type":"Article","title":"A Snapshot of Support for Palestinians Across America","abstract":"Marches in Washington, D.C., Ohio, Utah and California, with tens of thousands of protesters, reflect the many different groups calling for a cease-fire and lifting of the siege in Gaza.","des_facet":["Israel-Gaza War (2023- )","Demonstrations, Protests and Riots","Civilian Casualties","Palestinians","Arab-Americans","Palestinian-Americans","Polls and Public Opinion"],"org_facet":[],"per_facet":[],"geo_facet":["Cincinnati (Ohio)","San Francisco (Calif)","Provo (Utah)","Washington (DC)","United States"],"media":[{"type":"image","subtype":"photo","caption":"At a pro-Palestinian march in Washington on Saturday, the streets swelled with demonstrators, and the crowd was dense. ","copyright":"Amir Hamja for The New York Times","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/04/multimedia/04nat-marches-cgkt/04nat-marches-cgkt-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/04/multimedia/04nat-marches-cgkt/04nat-marches-cgkt-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/04/multimedia/04nat-marches-cgkt/04nat-marches-cgkt-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/b284de85-b4c4-5efe-86d6-605aa26517ed","url":"https://www.nytimes.com/article/best-netflix-movies.html","id":100000008984516,"asset_id":100000008984516,"source":"New York Times","published_date":"2023-07-07","updated":"2023-11-02 22:03:39","section":"Movies","subsection":"","nytdsection":"movies","adx_keywords":"Movies;Netflix Inc","column":null,"byline":"By Jason Bailey","type":"Article","title":"The 50 Best Movies on Netflix Right Now","abstract":"Movies upon movies await, and you don’t even have to drill down to find them.","des_facet":["Movies"],"org_facet":["Netflix Inc"],"per_facet":[],"geo_facet":[],"media":[{"type":"image","subtype":"photo","caption":"Tom Cruise, left, and Jamie Foxx in “Collateral.”","copyright":"DreamWorks Pictures","approved_for_syndication":0,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/08/04/multimedia/netflix-streaming-cpwq/netflix-streaming-cpwq-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/08/04/multimedia/netflix-streaming-cpwq/netflix-streaming-cpwq-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/08/04/multimedia/netflix-streaming-cpwq/netflix-streaming-cpwq-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/eb01f452-d4fe-5c85-bf84-b74bafad6730","url":"https://www.nytimes.com/2023/11/05/us/us-army-marines-artillery-isis-pentagon.html","id":100000008902997,"asset_id":100000008902997,"source":"New York Times","published_date":"2023-11-05","updated":"2023-11-05 22:16:05","section":"U.S.","subsection":"","nytdsection":"u.s.","adx_keywords":"vis-design;United States Defense and Military Forces;War and Armed Conflicts;Veterans;Firearms;Brain;Post-Traumatic Stress Disorder;Mental Health and Disorders;Workplace Hazards and Violations;United States Marine Corps;United States Army;Islamic State in Iraq and Syria (ISIS);Syria;Iraq","column":null,"byline":"By Dave Philipps and Matthew Callahan","type":"Article","title":"A Secret War, Strange New Wounds and Silence From the Pentagon","abstract":"Many U.S. troops who fired vast numbers of artillery rounds against the Islamic State developed mysterious, life-shattering mental and physical problems. But the military struggled to understand what was wrong.","des_facet":["vis-design","United States Defense and Military Forces","War and Armed Conflicts","Veterans","Firearms","Brain","Post-Traumatic Stress Disorder","Mental Health and Disorders","Workplace Hazards and Violations"],"org_facet":["United States Marine Corps","United States Army","Islamic State in Iraq and Syria (ISIS)"],"per_facet":[],"geo_facet":["Syria","Iraq"],"media":[{"type":"image","subtype":"photo","caption":"Tommy McDaniel was part of a Marine Corps gun crew that fired 7,188 rounds in a few months. In 2021, after years of suffering from headaches and depression, he died by suicide.","copyright":"Matthew Callahan/U.S. Marine Corps","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/10/22/us/XXshockwaves-archival-02/XXshockwaves-archival-02-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/10/22/us/XXshockwaves-archival-02/XXshockwaves-archival-02-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/10/22/us/XXshockwaves-archival-02/XXshockwaves-archival-02-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/366c9df5-c453-511c-8067-c4815657d555","url":"https://www.nytimes.com/2023/11/03/business/jeff-bezos-amazon-miami-seattle.html","id":100000009163682,"asset_id":100000009163682,"source":"New York Times","published_date":"2023-11-03","updated":"2023-11-03 23:49:32","section":"Business","subsection":"","nytdsection":"business","adx_keywords":"Bezos, Jeffrey P;Amazon.com Inc;Blue Origin;Seattle (Wash);Miami (Fla)","column":null,"byline":"By Mike Ives","type":"Article","title":"Jeff Bezos Says He Is Leaving Seattle for Miami","abstract":"The Amazon founder has lived in Seattle since 1994. He said he was returning to Miami, where he attended high school, in part to be closer to his parents.","des_facet":[],"org_facet":["Amazon.com Inc","Blue Origin"],"per_facet":["Bezos, Jeffrey P"],"geo_facet":["Seattle (Wash)","Miami (Fla)"],"media":[{"type":"image","subtype":"photo","caption":"Jeff Bezos and Lauren Sánchez at Miami International Autodrome in May.","copyright":"Clive Mason/Formula 1, via Getty Images","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/03/multimedia/03xp-bezos-miami/03xp-bezos-miami-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/03/multimedia/03xp-bezos-miami/03xp-bezos-miami-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/03/multimedia/03xp-bezos-miami/03xp-bezos-miami-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://interactive/33bb42c4-ad82-5177-8813-6f38c53b9e70","url":"https://www.nytimes.com/interactive/2023/us/2023-gift-guide.html","id":100000009150132,"asset_id":100000009150132,"source":"New York Times","published_date":"2023-11-01","updated":"2023-11-04 14:13:24","section":"U.S.","subsection":"","nytdsection":"u.s.","adx_keywords":"Gifts;Holidays and Special Occasions;Christmas;Hanukkah;Content Type: Service","column":null,"byline":"","type":"Interactive","title":"2023 Holiday Gift Guide","abstract":"Wondering what to get for all the beloved but quirky, picky, fancy, practical or eccentric people in your life? Our experts have curated the best gifts to help you check everyone off your list.","des_facet":["Gifts","Holidays and Special Occasions","Christmas","Hanukkah","Content Type: Service"],"org_facet":[],"per_facet":[],"geo_facet":[],"media":[{"type":"image","subtype":"","caption":"","copyright":"","approved_for_syndication":0,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/01/us/2023-gift-guide-1698864421949/2023-gift-guide-1698864421949-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/01/us/2023-gift-guide-1698864421949/2023-gift-guide-1698864421949-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/01/us/2023-gift-guide-1698864421949/2023-gift-guide-1698864421949-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0}]} -------------------------------------------------------------------------------- /emailed.json: -------------------------------------------------------------------------------- 1 | {"status":"OK","copyright":"Copyright (c) 2023 The New York Times Company. All Rights Reserved.","num_results":20,"results":[{"uri":"nyt://article/ad9cf964-1f73-5bec-8696-923cdd1dc8b0","url":"https://www.nytimes.com/2023/11/05/opinion/maga-mike-johnson-christianity.html","id":100000009164271,"asset_id":100000009164271,"source":"New York Times","published_date":"2023-11-05","updated":"2023-11-05 22:55:20","section":"Opinion","subsection":"","nytdsection":"opinion","adx_keywords":"United States Politics and Government;Bible;Christians and Christianity;Evangelical Movement;Conservatism (US Politics);Rumors and Misinformation;Johnson, Mike (1972- );Republican Party;House of Representatives","column":null,"byline":"By David French","type":"Article","title":"‘MAGA Mike Johnson’ and Our Broken Christian Politics","abstract":"The speaker needs to consult his Bible more carefully.","des_facet":["United States Politics and Government","Bible","Christians and Christianity","Evangelical Movement","Conservatism (US Politics)","Rumors and Misinformation"],"org_facet":["Republican Party","House of Representatives"],"per_facet":["Johnson, Mike (1972- )"],"geo_facet":[],"media":[{"type":"image","subtype":"photo","caption":"","copyright":"Jim Lo Scalzo/EPA, via Shutterstock","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05French-wtql/05French-wtql-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05French-wtql/05French-wtql-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05French-wtql/05French-wtql-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/a1be9166-816c-53bd-81d8-1e6626f49638","url":"https://www.nytimes.com/2023/11/02/opinion/sunday/resilience-bad-news-coping.html","id":100000009160308,"asset_id":100000009160308,"source":"New York Times","published_date":"2023-11-02","updated":"2023-11-04 17:01:14","section":"Opinion","subsection":"Sunday Opinion","nytdsection":"opinion","adx_keywords":"Anxiety and Stress;Ethics (Personal);Greek Civilization;Religion and Belief;Philosophy;Israel-Gaza War (2023- );Hillesum, Etty","column":null,"byline":"By David Brooks","type":"Article","title":"How to Stay Sane in Brutalizing Times","abstract":"Ancient wisdom can help keep us from becoming calloused over.","des_facet":["Anxiety and Stress","Ethics (Personal)","Greek Civilization","Religion and Belief","Philosophy","Israel-Gaza War (2023- )"],"org_facet":[],"per_facet":["Hillesum, Etty"],"geo_facet":[],"media":[{"type":"image","subtype":"photo","caption":"","copyright":"Photo illustration by The New York Times","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/04/opinion/sunday/02Brooks/02Brooks-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/04/opinion/sunday/02Brooks/02Brooks-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/04/opinion/sunday/02Brooks/02Brooks-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/7defb073-fe78-5dbe-838c-dd2d16c106c2","url":"https://www.nytimes.com/2023/11/04/opinion/sunday/liberal-universities-republicans.html","id":100000009164239,"asset_id":100000009164239,"source":"New York Times","published_date":"2023-11-04","updated":"2023-11-05 15:19:29","section":"Opinion","subsection":"Sunday Opinion","nytdsection":"opinion","adx_keywords":"Colleges and Universities;Freedom of Speech and Expression;Humanities;Law Schools;Education (K-12);Conservatism (US Politics);DeSantis, Ron;Trump, Donald J;Rufo, Christopher F;Harvard University;Hillsdale College;Ivy League;University of Chicago;University of North Carolina","column":null,"byline":"By Ross Douthat","type":"Article","title":"Why Liberal Academia Needs Republican Friends","abstract":"Universities should use the levers of politics and money to rescue the humanities, not destroy them.","des_facet":["Colleges and Universities","Freedom of Speech and Expression","Humanities","Law Schools","Education (K-12)","Conservatism (US Politics)"],"org_facet":["Harvard University","Hillsdale College","Ivy League","University of Chicago","University of North Carolina"],"per_facet":["DeSantis, Ron","Trump, Donald J","Rufo, Christopher F"],"geo_facet":[],"media":[{"type":"image","subtype":"photo","caption":"","copyright":"Bea Oyster for The New York Times","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/04/multimedia/04douthat1-fjqc/04douthat1-fjqc-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/04/multimedia/04douthat1-fjqc/04douthat1-fjqc-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/04/multimedia/04douthat1-fjqc/04douthat1-fjqc-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/cf53e68f-cbef-5def-91b0-4e682c77bb62","url":"https://www.nytimes.com/2023/11/03/style/modern-love-a-marriage-problem-that-cant-be-solved.html","id":100000009147465,"asset_id":100000009147465,"source":"New York Times","published_date":"2023-11-03","updated":"2023-11-05 12:23:20","section":"Style","subsection":"","nytdsection":"style","adx_keywords":"Love (Emotion);Death and Dying;Marriages","column":null,"byline":"By Emily Suon","type":"Article","title":"A Marriage Problem That Can’t Be Solved","abstract":"My husband and I haven’t spoken in more than a year. It can’t go on like this, but it will.","des_facet":["Love (Emotion)","Death and Dying","Marriages"],"org_facet":[],"per_facet":[],"geo_facet":[],"media":[{"type":"image","subtype":"photo","caption":"","copyright":"Brian Rea","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/05/fashion/05MODERN-SUON/05MODERN-SUON-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/05/fashion/05MODERN-SUON/05MODERN-SUON-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/05/fashion/05MODERN-SUON/05MODERN-SUON-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/6689dd24-b7d4-526b-829b-72a4efaf5218","url":"https://www.nytimes.com/2023/10/30/health/hearing-aids-dementia.html","id":100000009149671,"asset_id":100000009149671,"source":"New York Times","published_date":"2023-10-30","updated":"2023-10-30 23:21:07","section":"Health","subsection":"","nytdsection":"health","adx_keywords":"Hearing Aids;Ears and Hearing;Research;Regulation and Deregulation of Industry;Elderly;Dementia;Food and Drug Administration;United States","column":null,"byline":"By Paula Span","type":"Article","title":"Hearing Aids Are More Affordable, and Perhaps More Needed, Than Ever","abstract":"Over-the-counter devices have been available for a year now. New research suggests they may have unexpected benefits.","des_facet":["Hearing Aids","Ears and Hearing","Research","Regulation and Deregulation of Industry","Elderly","Dementia"],"org_facet":["Food and Drug Administration"],"per_facet":[],"geo_facet":["United States"],"media":[{"type":"image","subtype":"photo","caption":"","copyright":"Juan Bernabeu","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/10/31/science/31SCI-SPAN-heading-aids-dementia/31SCI-SPAN-heading-aids-dementia-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/10/31/science/31SCI-SPAN-heading-aids-dementia/31SCI-SPAN-heading-aids-dementia-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/10/31/science/31SCI-SPAN-heading-aids-dementia/31SCI-SPAN-heading-aids-dementia-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/9489dec0-fae8-5587-b3a7-d7161ff3b4fd","url":"https://www.nytimes.com/2023/11/05/magazine/commercial-satellites-space-junk.html","id":100000009160985,"asset_id":100000009160985,"source":"New York Times","published_date":"2023-11-05","updated":"2023-11-05 05:01:10","section":"Magazine","subsection":"","nytdsection":"magazine","adx_keywords":"Private Spaceflight;Space and Astronomy;International Space Station;Starlink Satellite Constellation (SpaceX);Deloitte Touche Tohmatsu Ltd;National Aeronautics and Space Administration","column":null,"byline":"By Jaime Green","type":"Article","title":"Befouling the Final Frontier","abstract":"As humanity rushes back to space, we seem to be repeating some of the mistakes we’ve made on Earth.","des_facet":["Private Spaceflight","Space and Astronomy","International Space Station"],"org_facet":["Starlink Satellite Constellation (SpaceX)","Deloitte Touche Tohmatsu Ltd","National Aeronautics and Space Administration"],"per_facet":[],"geo_facet":[],"media":[{"type":"image","subtype":"photo","caption":"","copyright":"Illustration by Pablo Delcan","approved_for_syndication":0,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/12/magazine/12Mag-Hot-1/12Mag-Hot-1-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/12/magazine/12Mag-Hot-1/12Mag-Hot-1-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/12/magazine/12Mag-Hot-1/12Mag-Hot-1-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/1c8c68d4-fb6b-587a-878f-fd121be2d392","url":"https://www.nytimes.com/2023/11/04/us/politics/obama-israel-palestine.html","id":100000009165887,"asset_id":100000009165887,"source":"New York Times","published_date":"2023-11-04","updated":"2023-11-05 20:27:06","section":"U.S.","subsection":"Politics","nytdsection":"u.s.","adx_keywords":"Israel-Gaza War (2023- );Politics and Government;Palestinians;International Relations;Defense and Military Forces;Obama, Barack","column":null,"byline":"By Lisa Lerer","type":"Article","title":"Obama Urges Americans to Take in ‘Whole Truth’ of Israel-Gaza War","abstract":"The former president said everyone was “complicit to some degree” in the current bloodshed and acknowledged the points of view on both sides of the conflict.","des_facet":["Israel-Gaza War (2023- )","Politics and Government","Palestinians","International Relations","Defense and Military Forces"],"org_facet":[],"per_facet":["Obama, Barack"],"geo_facet":[],"media":[{"type":"image","subtype":"photo","caption":"“What Hamas did was horrific, and there’s no justification for it,” former President Barack Obama said on Friday. “And what is also true is that the occupation and what’s happening to Palestinians is unbearable.”","copyright":"Nicole Craine for The New York Times","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/04/multimedia/04pol-obama-vhzw/04pol-obama-vhzw-thumbStandard-v2.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/04/multimedia/04pol-obama-vhzw/04pol-obama-vhzw-mediumThreeByTwo210-v2.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/04/multimedia/04pol-obama-vhzw/04pol-obama-vhzw-mediumThreeByTwo440-v2.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/1665e4b6-ad4d-5199-a5ed-f2c10547aacb","url":"https://www.nytimes.com/2023/10/30/travel/southern-california-driving-tour.html","id":100000008920243,"asset_id":100000008920243,"source":"New York Times","published_date":"2023-10-30","updated":"2023-11-05 12:59:52","section":"Travel","subsection":"","nytdsection":"travel","adx_keywords":"Road Trips;National Parks, Monuments and Seashores;Los Angeles (Calif);Calabasas (Calif);Los Olivos (Calif)","column":null,"byline":"By Eric A. Taub","type":"Article","title":"Southern California Beyond the Freeway","abstract":"There’s history around every curve on the back roads between Los Angeles and Los Olivos, a 100-mile route that meanders through mountains, canyons and star-studded enclaves.","des_facet":["Road Trips","National Parks, Monuments and Seashores"],"org_facet":[],"per_facet":[],"geo_facet":["Los Angeles (Calif)","Calabasas (Calif)","Los Olivos (Calif)"],"media":[{"type":"image","subtype":"photo","caption":"The chamber of commerce in Santa Paula, Calif., occupies the former Southern Pacific train depot, which was built in 1887.","copyright":"Stella Kalinina for The New York Times","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/06/06/multimedia/00travel-LA-backroads-jbgv/00travel-LA-backroads-jbgv-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/06/06/multimedia/00travel-LA-backroads-jbgv/00travel-LA-backroads-jbgv-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/06/06/multimedia/00travel-LA-backroads-jbgv/00travel-LA-backroads-jbgv-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://interactive/e2bb59e7-f843-547b-af1c-dd37b7d655ad","url":"https://www.nytimes.com/interactive/2023/09/20/well/family/13-year-old-girls-social-media-self-esteem.html","id":100000009092365,"asset_id":100000009092365,"source":"New York Times","published_date":"2023-09-20","updated":"2023-10-14 12:38:46","section":"Well","subsection":"Family","nytdsection":"well","adx_keywords":"Teenagers and Adolescence;Women and Girls;Social Media;Smartphones;Text Messaging;Anxiety and Stress;Mental Health and Disorders;vis-design;United States","column":null,"byline":"By Jessica Bennett","type":"Interactive","title":"Being 13","abstract":"Three girls, one year. This is what it’s like to be 13 today, in a world that can’t stop talking about the dire state of your future.","des_facet":["Teenagers and Adolescence","Women and Girls","Social Media","Smartphones","Text Messaging","Anxiety and Stress","Mental Health and Disorders","vis-design"],"org_facet":[],"per_facet":[],"geo_facet":["United States"],"media":[{"type":"image","subtype":"","caption":"","copyright":"","approved_for_syndication":0,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/09/21/autossell/being13_scoopint-PROMO/being13_3_2_still-thumbStandard-v2.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/09/21/autossell/being13_scoopint-PROMO/being13_3_2_still-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/09/21/autossell/being13_scoopint-PROMO/being13_3_2_still-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/d5a52bc9-8296-5c76-867a-177425332320","url":"https://www.nytimes.com/2023/11/04/movies/holiday-winter-films.html","id":100000009143175,"asset_id":100000009143175,"source":"New York Times","published_date":"2023-11-04","updated":"2023-11-04 05:01:34","section":"Movies","subsection":"","nytdsection":"movies","adx_keywords":"","column":null,"byline":"By Ben Kenigsberg","type":"Article","title":"Here Are the Most Anticipated Films of the Holiday Season","abstract":"“The Color Purple” and “Poor Things” and Beyoncé lead a list packed with goodies. Mark your calendars.","des_facet":[],"org_facet":[],"per_facet":[],"geo_facet":[],"media":[{"type":"image","subtype":"photo","caption":"Phylicia Pearl Mpasi as Young Celie, left, and Halle Bailey as Young Nettie in the adaptation of the musical version of “The Color Purple.”","copyright":"Warner Bros. Pictures","approved_for_syndication":0,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05holiday-film-list-purple-vgtb/05holiday-film-list-purple-vgtb-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05holiday-film-list-purple-vgtb/05holiday-film-list-purple-vgtb-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05holiday-film-list-purple-vgtb/05holiday-film-list-purple-vgtb-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/307ddbea-8855-557d-93fc-fae1c2f96403","url":"https://www.nytimes.com/2023/11/03/realestate/early-retirement-community-florida.html","id":100000009114150,"asset_id":100000009114150,"source":"New York Times","published_date":"2023-11-03","updated":"2023-11-05 08:07:56","section":"Real Estate","subsection":"","nytdsection":"real estate","adx_keywords":"Retirement Communities and Assisted Living;Real Estate and Housing (Residential);Retirement;Age, Chronological;Elderly;Content Type: Personal Profile;vis-photo;Sun City Center (Fla);Florida","column":null,"byline":"By Debra Kamin and Scott McIntyre","type":"Article","title":"The Youngest Senior","abstract":"Moving to Florida for early retirement, a native New Jerseyan in her 50s is finding her third act to be the most fun in a community where the average age is 79.","des_facet":["Retirement Communities and Assisted Living","Real Estate and Housing (Residential)","Retirement","Age, Chronological","Elderly","Content Type: Personal Profile","vis-photo"],"org_facet":[],"per_facet":[],"geo_facet":["Sun City Center (Fla)","Florida"],"media":[{"type":"image","subtype":"photo","caption":"Drawn by the sunshine and a sense of community, Maria Hodge is now one of the youngest residents at Sun City Center, a 55-plus community near Tampa, Fla. ","copyright":"","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/03youngestsenior-hczk/03youngestsenior-hczk-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/03youngestsenior-hczk/03youngestsenior-hczk-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/03youngestsenior-hczk/03youngestsenior-hczk-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/04513822-575f-5e5b-aa2f-8c6b78a8f8d7","url":"https://www.nytimes.com/2023/11/05/business/banks-accounts-close-suddenly.html","id":100000009041475,"asset_id":100000009041475,"source":"New York Times","published_date":"2023-11-05","updated":"2023-11-05 10:34:43","section":"Business","subsection":"","nytdsection":"business","adx_keywords":"Personal Finances;Banking and Financial Institutions;Customer Relations;Checks and Checking Accounts;Credit Cards;Frauds and Swindling;Money Laundering;JPMorgan Chase \u0026 Company","column":null,"byline":"By Ron Lieber and Tara Siegel Bernard","type":"Article","title":"Why Banks Are Suddenly Closing Down Customer Accounts","abstract":"Surprised individuals and small-business owners can’t pay rent or make payroll, and no one ever explains what they did wrong.","des_facet":["Personal Finances","Banking and Financial Institutions","Customer Relations","Checks and Checking Accounts","Credit Cards","Frauds and Swindling","Money Laundering"],"org_facet":["JPMorgan Chase \u0026 Company"],"per_facet":[],"geo_facet":[],"media":[{"type":"image","subtype":"photo","caption":"Jennifer Maslanka and her business partner rounded down the cash deposits from the bars they ran to simplify accounting.","copyright":"Dana Golan for The New York Times","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/10/13/multimedia/00shuttered-types-04-twkh/00shuttered-types-04-twkh-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/10/13/multimedia/00shuttered-types-04-twkh/00shuttered-types-04-twkh-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/10/13/multimedia/00shuttered-types-04-twkh/00shuttered-types-04-twkh-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/455d96f0-8d15-51d5-8488-7bea0e71a814","url":"https://www.nytimes.com/2023/11/05/us/golden-gate-bridge-suicide-nets.html","id":100000009156398,"asset_id":100000009156398,"source":"New York Times","published_date":"2023-11-05","updated":"2023-11-05 05:02:05","section":"U.S.","subsection":"","nytdsection":"u.s.","adx_keywords":"internal-sub-only;Suicides and Suicide Attempts;Depression (Mental);internal-great-read;Golden Gate Bridge;San Francisco Bay Area (Calif)","column":null,"byline":"By John Branch and Jim Wilson","type":"Article","title":"What the Golden Gate Is (Finally) Doing About Suicides","abstract":"After years of pressure from victims’ families, the installation of $217 million in steel netting is almost complete.","des_facet":["internal-sub-only","Suicides and Suicide Attempts","Depression (Mental)","internal-great-read"],"org_facet":[],"per_facet":[],"geo_facet":["Golden Gate Bridge","San Francisco Bay Area (Calif)"],"media":[{"type":"image","subtype":"photo","caption":"","copyright":"Jim Wilson/The New York Times","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05goldengate-18-mhtl-promo/05goldengate-18-mhtl-promo-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05goldengate-18-mhtl-promo/05goldengate-18-mhtl-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05goldengate-18-mhtl-promo/05goldengate-18-mhtl-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/ad386325-1397-51c8-9bc5-83097100601d","url":"https://www.nytimes.com/2023/11/05/opinion/israel-palestinians-hostage-silence.html","id":100000009158851,"asset_id":100000009158851,"source":"New York Times","published_date":"2023-11-05","updated":"2023-11-05 12:51:24","section":"Opinion","subsection":"","nytdsection":"opinion","adx_keywords":"Israel-Gaza War (2023- );Kidnapping and Hostages;Hamas;Israel;Gaza Strip","column":null,"byline":"By Alana Zeitchik","type":"Article","title":"Six Members of My Family Are Hostages in Gaza. Does Anyone Care?","abstract":"It seems the left has a hard time holding space for both Jewish and Palestinian civilians.","des_facet":["Israel-Gaza War (2023- )","Kidnapping and Hostages"],"org_facet":["Hamas"],"per_facet":[],"geo_facet":["Israel","Gaza Strip"],"media":[{"type":"image","subtype":"photo","caption":"","copyright":"Illustration by Sam Whitney/The New York Times","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/05/opinion/05zeitchik-image/05zeitchik-image-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/05/opinion/05zeitchik-image/05zeitchik-image-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/05/opinion/05zeitchik-image/05zeitchik-image-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/b284de85-b4c4-5efe-86d6-605aa26517ed","url":"https://www.nytimes.com/article/best-netflix-movies.html","id":100000008984516,"asset_id":100000008984516,"source":"New York Times","published_date":"2023-07-07","updated":"2023-11-02 22:03:39","section":"Movies","subsection":"","nytdsection":"movies","adx_keywords":"Movies;Netflix Inc","column":null,"byline":"By Jason Bailey","type":"Article","title":"The 50 Best Movies on Netflix Right Now","abstract":"Movies upon movies await, and you don’t even have to drill down to find them.","des_facet":["Movies"],"org_facet":["Netflix Inc"],"per_facet":[],"geo_facet":[],"media":[{"type":"image","subtype":"photo","caption":"Tom Cruise, left, and Jamie Foxx in “Collateral.”","copyright":"DreamWorks Pictures","approved_for_syndication":0,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/08/04/multimedia/netflix-streaming-cpwq/netflix-streaming-cpwq-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/08/04/multimedia/netflix-streaming-cpwq/netflix-streaming-cpwq-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/08/04/multimedia/netflix-streaming-cpwq/netflix-streaming-cpwq-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://interactive/8b1aa332-ac9a-5b0e-89e8-6b64eae7b9b4","url":"https://www.nytimes.com/interactive/2023/10/24/climate/maine-water-laws-blue-triton-poland-spring.html","id":100000009142376,"asset_id":100000009142376,"source":"New York Times","published_date":"2023-10-24","updated":"2023-11-02 09:54:34","section":"Climate","subsection":"","nytdsection":"climate","adx_keywords":"Water;Plastic Bottles;Private Equity;Environment;Global Warming;Aquifers;Law and Legislation;Lobbying and Lobbyists;Regulation and Deregulation of Industry;Conservation of Resources;BlueTriton Brands Inc;Nestle SA;Maine","column":null,"byline":"By Hiroko Tabuchi","type":"Interactive","title":"Inside Poland Spring’s Hidden Attack on Water Rules It Didn’t Like","abstract":"When Maine lawmakers tried to tighten regulations on large-scale access to water, the brand’s little-known parent company set out to rewrite the rules.","des_facet":["Water","Plastic Bottles","Private Equity","Environment","Global Warming","Aquifers","Law and Legislation","Lobbying and Lobbyists","Regulation and Deregulation of Industry","Conservation of Resources"],"org_facet":["BlueTriton Brands Inc","Nestle SA"],"per_facet":[],"geo_facet":["Maine"],"media":[{"type":"image","subtype":"","caption":"The Blue Triton bottling plant in Poland Spring, Maine.","copyright":"Tristan Spinski for The New York Times","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/10/24/multimedia/24CLI-BOTTLEDWATER-PROMO/24CLI-BOTTLEDWATER-kctb-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/10/24/multimedia/24CLI-BOTTLEDWATER-PROMO/24CLI-BOTTLEDWATER-kctb-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/10/24/multimedia/24CLI-BOTTLEDWATER-PROMO/24CLI-BOTTLEDWATER-kctb-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/20ae3ceb-ea96-54fd-9708-7322e473b5b5","url":"https://www.nytimes.com/2023/11/04/realestate/indian-immigrants-community-living.html","id":100000009152570,"asset_id":100000009152570,"source":"New York Times","published_date":"2023-11-04","updated":"2023-11-05 12:44:55","section":"Real Estate","subsection":"","nytdsection":"real estate","adx_keywords":"Indian-Americans;Retirement Communities and Assisted Living;Real Estate and Housing (Residential);Loneliness;Age, Chronological;Immigration and Emigration;Priya Living LLC;California;United States;India","column":null,"byline":"By Anna Kodé","type":"Article","title":"Seeking a Home for His Parents, a Son Built a Community","abstract":"Priya Living, a senior living company that is steeped in Indian culture, began with a small footprint in California and now has expansion plans in the U.S. and India.","des_facet":["Indian-Americans","Retirement Communities and Assisted Living","Real Estate and Housing (Residential)","Loneliness","Age, Chronological","Immigration and Emigration"],"org_facet":["Priya Living LLC"],"per_facet":[],"geo_facet":["California","United States","India"],"media":[{"type":"image","subtype":"photo","caption":"Priya Living is a senior living company steeped in Indian culture.","copyright":"Jason Henry for The New York Times","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/04priyaliving-01-zftb/04priyaliving-01-zftb-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/04priyaliving-01-zftb/04priyaliving-01-zftb-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/04priyaliving-01-zftb/04priyaliving-01-zftb-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/159c4ce2-da3a-5f2c-9230-c03af7e8d387","url":"https://www.nytimes.com/2023/11/03/travel/atacama-desert-chile.html","id":100000008889278,"asset_id":100000008889278,"source":"New York Times","published_date":"2023-11-03","updated":"2023-11-05 20:25:11","section":"Travel","subsection":"","nytdsection":"travel","adx_keywords":"Deserts;Indigenous People;Photography;Volcanoes;Travel and Vacations;Salt;Metals and Minerals;Earth;Mines and Mining;Trees and Shrubs;Lithium (Metal);Senses and Sensation;Atacama Desert;Andes Mountains;Chile","column":null,"byline":"By Irjaliina Paavonpera","type":"Article","title":"In the World’s Driest Desert, Ancient Wisdom Blooms Eternal","abstract":"Burned out from life in New York, a photographer traveled to northern Chile to study the ancient wisdom of the Lickanantay, the area’s Indigenous people. Here’s what she saw.","des_facet":["Deserts","Indigenous People","Photography","Volcanoes","Travel and Vacations","Salt","Metals and Minerals","Earth","Mines and Mining","Trees and Shrubs","Lithium (Metal)","Senses and Sensation"],"org_facet":[],"per_facet":[],"geo_facet":["Atacama Desert","Andes Mountains","Chile"],"media":[{"type":"image","subtype":"photo","caption":"Licancabur, a volcano along the border between Bolivia and Chile, towers over the desert.","copyright":"Irjaliina Paavonpera","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/10/27/multimedia/travel-chile-promo-1/00travel-chile-qkpm-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/10/27/multimedia/travel-chile-promo-1/00travel-chile-qkpm-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/10/27/multimedia/travel-chile-promo-1/00travel-chile-qkpm-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/bfa24c7d-fa23-5e22-83d6-6473d056911e","url":"https://www.nytimes.com/2023/11/02/arts/television/all-the-light-we-cannot-see-review.html","id":100000009159649,"asset_id":100000009159649,"source":"New York Times","published_date":"2023-11-02","updated":"2023-11-03 23:34:28","section":"Arts","subsection":"Television","nytdsection":"arts","adx_keywords":"Television;Knight, Steven;Levy, Shawn (Film Director);Loberti, Aria Mia;Hofmann, Louis;Ruffalo, Mark;Laurie, Hugh;Netflix Inc","column":null,"byline":"By Mike Hale","type":"Article","title":"‘All the Light We Cannot See’ Review: The Blind Girl and the Nazi","abstract":"A Netflix mini-series brings to the screen Anthony Doerr’s Pulitzer-winning World War II romance.","des_facet":["Television"],"org_facet":["Netflix Inc"],"per_facet":["Knight, Steven","Levy, Shawn (Film Director)","Loberti, Aria Mia","Hofmann, Louis","Ruffalo, Mark","Laurie, Hugh"],"geo_facet":[],"media":[{"type":"image","subtype":"photo","caption":"Hugh Laurie and Aria Mia Loberti in “All the Light We Cannot See,” adapted from the acclaimed novel.","copyright":"Atsushi Nishijima/Netflix","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/04/arts/02allthelight/02allthelight-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/04/arts/02allthelight/02allthelight-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/04/arts/02allthelight/02allthelight-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/eb01f452-d4fe-5c85-bf84-b74bafad6730","url":"https://www.nytimes.com/2023/11/05/us/us-army-marines-artillery-isis-pentagon.html","id":100000008902997,"asset_id":100000008902997,"source":"New York Times","published_date":"2023-11-05","updated":"2023-11-05 22:16:05","section":"U.S.","subsection":"","nytdsection":"u.s.","adx_keywords":"vis-design;United States Defense and Military Forces;War and Armed Conflicts;Veterans;Firearms;Brain;Post-Traumatic Stress Disorder;Mental Health and Disorders;Workplace Hazards and Violations;United States Marine Corps;United States Army;Islamic State in Iraq and Syria (ISIS);Syria;Iraq","column":null,"byline":"By Dave Philipps and Matthew Callahan","type":"Article","title":"A Secret War, Strange New Wounds and Silence From the Pentagon","abstract":"Many U.S. troops who fired vast numbers of artillery rounds against the Islamic State developed mysterious, life-shattering mental and physical problems. But the military struggled to understand what was wrong.","des_facet":["vis-design","United States Defense and Military Forces","War and Armed Conflicts","Veterans","Firearms","Brain","Post-Traumatic Stress Disorder","Mental Health and Disorders","Workplace Hazards and Violations"],"org_facet":["United States Marine Corps","United States Army","Islamic State in Iraq and Syria (ISIS)"],"per_facet":[],"geo_facet":["Syria","Iraq"],"media":[{"type":"image","subtype":"photo","caption":"Tommy McDaniel was part of a Marine Corps gun crew that fired 7,188 rounds in a few months. In 2021, after years of suffering from headaches and depression, he died by suicide.","copyright":"Matthew Callahan/U.S. Marine Corps","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/10/22/us/XXshockwaves-archival-02/XXshockwaves-archival-02-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/10/22/us/XXshockwaves-archival-02/XXshockwaves-archival-02-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/10/22/us/XXshockwaves-archival-02/XXshockwaves-archival-02-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0}]} -------------------------------------------------------------------------------- /shared.json: -------------------------------------------------------------------------------- 1 | {"status":"OK","copyright":"Copyright (c) 2023 The New York Times Company. All Rights Reserved.","num_results":20,"results":[{"uri":"nyt://article/eb01f452-d4fe-5c85-bf84-b74bafad6730","url":"https://www.nytimes.com/2023/11/05/us/us-army-marines-artillery-isis-pentagon.html","id":100000008902997,"asset_id":100000008902997,"source":"New York Times","published_date":"2023-11-05","updated":"2023-11-05 22:16:05","section":"U.S.","subsection":"","nytdsection":"u.s.","adx_keywords":"vis-design;United States Defense and Military Forces;War and Armed Conflicts;Veterans;Firearms;Brain;Post-Traumatic Stress Disorder;Mental Health and Disorders;Workplace Hazards and Violations;United States Marine Corps;United States Army;Islamic State in Iraq and Syria (ISIS);Syria;Iraq","column":null,"byline":"By Dave Philipps and Matthew Callahan","type":"Article","title":"A Secret War, Strange New Wounds and Silence From the Pentagon","abstract":"Many U.S. troops who fired vast numbers of artillery rounds against the Islamic State developed mysterious, life-shattering mental and physical problems. But the military struggled to understand what was wrong.","des_facet":["vis-design","United States Defense and Military Forces","War and Armed Conflicts","Veterans","Firearms","Brain","Post-Traumatic Stress Disorder","Mental Health and Disorders","Workplace Hazards and Violations"],"org_facet":["United States Marine Corps","United States Army","Islamic State in Iraq and Syria (ISIS)"],"per_facet":[],"geo_facet":["Syria","Iraq"],"media":[{"type":"image","subtype":"photo","caption":"Tommy McDaniel was part of a Marine Corps gun crew that fired 7,188 rounds in a few months. In 2021, after years of suffering from headaches and depression, he died by suicide.","copyright":"Matthew Callahan/U.S. Marine Corps","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/10/22/us/XXshockwaves-archival-02/XXshockwaves-archival-02-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/10/22/us/XXshockwaves-archival-02/XXshockwaves-archival-02-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/10/22/us/XXshockwaves-archival-02/XXshockwaves-archival-02-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/6d3cd8b7-fcdd-50f1-b26b-e31c765a7d97","url":"https://www.nytimes.com/2023/11/04/opinion/sunday/palestinians-west-bank-israel.html","id":100000009161403,"asset_id":100000009161403,"source":"New York Times","published_date":"2023-11-04","updated":"2023-11-05 12:15:37","section":"Opinion","subsection":"Sunday Opinion","nytdsection":"opinion","adx_keywords":"Israel-Gaza War (2023- );Defense and Military Forces;Palestinians;Israeli Settlements;Refugees and Displaced Persons;Terrorism;Content Type: Personal Profile;Hamas;Israel;Gaza Strip;West Bank","column":null,"byline":"By Nicholas Kristof and William Keo","type":"Article","title":"Losing Hope in the West Bank","abstract":"Forty-one years after I befriended two Palestinian university students, I met up with them again to talk about their lives.","des_facet":["Israel-Gaza War (2023- )","Defense and Military Forces","Palestinians","Israeli Settlements","Refugees and Displaced Persons","Terrorism","Content Type: Personal Profile"],"org_facet":["Hamas"],"per_facet":[],"geo_facet":["Israel","Gaza Strip","West Bank"],"media":[{"type":"image","subtype":"photo","caption":"A view of an Israeli settlement from an abandoned West Bank checkpoint. ","copyright":"William Keo for The New York Times","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/04/multimedia/04kristof-6-vbfq/04kristof-6-vbfq-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/04/multimedia/04kristof-6-vbfq/04kristof-6-vbfq-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/04/multimedia/04kristof-6-vbfq/04kristof-6-vbfq-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/3d960d33-c53e-50fd-8b24-dba742519e85","url":"https://www.nytimes.com/2023/11/05/world/middleeast/israel-egypt-gaza.html","id":100000009164172,"asset_id":100000009164172,"source":"New York Times","published_date":"2023-11-05","updated":"2023-11-05 23:16:35","section":"World","subsection":"Middle East","nytdsection":"world","adx_keywords":"Israel-Gaza War (2023- );International Relations;Politics and Government;Palestinians;Netanyahu, Benjamin;Danon, Danny (1971- );Sisi, Abdel Fattah el-;Hamas;Palestinian Authority;Egypt;Gaza Strip;Israel;Sinai Peninsula (Egypt)","column":null,"byline":"By Patrick Kingsley","type":"Article","title":"Israel Quietly Pushed for Egypt to Admit Large Numbers of Gazans","abstract":"The Israeli government has not publicly called for large numbers of Gazans to move to Egypt. But in private, diplomats say, it has pushed for just that — augmenting Palestinian fears of a permanent expulsion.","des_facet":["Israel-Gaza War (2023- )","International Relations","Politics and Government","Palestinians"],"org_facet":["Hamas","Palestinian Authority"],"per_facet":["Netanyahu, Benjamin","Danon, Danny (1971- )","Sisi, Abdel Fattah el-"],"geo_facet":["Egypt","Gaza Strip","Israel","Sinai Peninsula (Egypt)"],"media":[{"type":"image","subtype":"photo","caption":"Many people have headed to the Rafah border crossing, which connects Gaza with Egypt, in hopes of fleeing the strip.","copyright":"Samar Abu Elouf for The New York Times","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05Israel-Gaza-Migration-01-lpzg/05Israel-Gaza-Migration-01-lpzg-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05Israel-Gaza-Migration-01-lpzg/05Israel-Gaza-Migration-01-lpzg-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05Israel-Gaza-Migration-01-lpzg/05Israel-Gaza-Migration-01-lpzg-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/508485cd-9f77-52fe-a514-92b81fd3dc35","url":"https://www.nytimes.com/2023/11/05/us/politics/michael-johnson-house-speaker-evangelicalism.html","id":100000009153698,"asset_id":100000009153698,"source":"New York Times","published_date":"2023-11-05","updated":"2023-11-05 23:24:16","section":"U.S.","subsection":"Politics","nytdsection":"u.s.","adx_keywords":"Evangelical Movement;Johnson, Mike (1972- );McCarthy, Kevin (1965- );Trump, Donald J;Southern Baptist Convention;Republican Party;House of Representatives;Louisiana","column":null,"byline":"By Ruth Graham","type":"Article","title":"‘Like Winning the Lottery’: Mike Johnson’s Ascent Excites Conservative Christians","abstract":"The new speaker of the House is a Southern Baptist who embodies evangelical beliefs and priorities, with a long history of work against abortion and gay rights.","des_facet":["Evangelical Movement"],"org_facet":["Southern Baptist Convention","Republican Party","House of Representatives"],"per_facet":["Johnson, Mike (1972- )","McCarthy, Kevin (1965- )","Trump, Donald J"],"geo_facet":["Louisiana"],"media":[{"type":"image","subtype":"photo","caption":"Representative Mike Johnson was voted in as speaker of the House at the U.S. Capitol in Washington on Oct. 25.","copyright":"Kenny Holston/The New York Times","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/03/multimedia/03nat-johnson-faith-01-jcbw/03nat-johnson-faith-01-jcbw-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/03/multimedia/03nat-johnson-faith-01-jcbw/03nat-johnson-faith-01-jcbw-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/03/multimedia/03nat-johnson-faith-01-jcbw/03nat-johnson-faith-01-jcbw-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/c580661a-5e63-5770-a438-5bce023c42a8","url":"https://www.nytimes.com/2023/11/05/world/europe/french-nuns-climate-activists-megachurch-standoff.html","id":100000009144453,"asset_id":100000009144453,"source":"New York Times","published_date":"2023-11-05","updated":"2023-11-05 15:34:11","section":"World","subsection":"Europe","nytdsection":"world","adx_keywords":"Churches (Buildings);Building (Construction);Demonstrations, Protests and Riots;Conservation of Resources;Nuns;Roman Catholic Church;Saint-Pierre-de-Colombier (France);France","column":null,"byline":"By Emma Bubola","type":"Article","title":"French Nuns and Climate Activists Square Off Over Plans for a Megachurch","abstract":"A yearslong standoff over an enormous church complex in a natural park recently broke out in clashes, when the nuns gave chase.","des_facet":["Churches (Buildings)","Building (Construction)","Demonstrations, Protests and Riots","Conservation of Resources","Nuns"],"org_facet":["Roman Catholic Church"],"per_facet":[],"geo_facet":["Saint-Pierre-de-Colombier (France)","France"],"media":[{"type":"image","subtype":"photo","caption":"Members of the Missionary Family of Our Lady clashed with environmental activists last month at the construction site of a new religious center in the village of Saint-Pierre-de-Colombier, in southern France.","copyright":"Alexa Brunet","approved_for_syndication":0,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05fighter-nuns-sub-02-bfhj/05fighter-nuns-sub-02-bfhj-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05fighter-nuns-sub-02-bfhj/05fighter-nuns-sub-02-bfhj-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05fighter-nuns-sub-02-bfhj/05fighter-nuns-sub-02-bfhj-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/21c758d7-8d83-5d50-b20a-1db8913f62d2","url":"https://www.nytimes.com/2023/11/05/business/tyson-dino-nuggets-recall.html","id":100000009166326,"asset_id":100000009166326,"source":"New York Times","published_date":"2023-11-05","updated":"2023-11-05 12:49:52","section":"Business","subsection":"","nytdsection":"business","adx_keywords":"Recalls and Bans of Products;Food Contamination and Poisoning;Poultry;Food;Food Safety and Inspection Service;Tyson Foods Inc","column":null,"byline":"By Johnny Diaz","type":"Article","title":"Tyson Recalls Nearly 30,000 Pounds of Chicken Nuggets Over Metal Pieces","abstract":"Tyson said it had received complaints from consumers about finding small metal pieces in the product. Federal regulators said one “minor oral injury” had been reported.","des_facet":["Recalls and Bans of Products","Food Contamination and Poisoning","Poultry","Food"],"org_facet":["Food Safety and Inspection Service","Tyson Foods Inc"],"per_facet":[],"geo_facet":[],"media":[{"type":"image","subtype":"photo","caption":"The affected Tyson chicken products were shipped to distributors in Alabama, California, Illinois, Kentucky, Michigan, Ohio, Tennessee, Virginia and Wisconsin.","copyright":"Toby Talbot/Associated Press","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05xp-nuggets-fzjp/05xp-nuggets-fzjp-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05xp-nuggets-fzjp/05xp-nuggets-fzjp-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05xp-nuggets-fzjp/05xp-nuggets-fzjp-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/1c8c68d4-fb6b-587a-878f-fd121be2d392","url":"https://www.nytimes.com/2023/11/04/us/politics/obama-israel-palestine.html","id":100000009165887,"asset_id":100000009165887,"source":"New York Times","published_date":"2023-11-04","updated":"2023-11-05 20:27:06","section":"U.S.","subsection":"Politics","nytdsection":"u.s.","adx_keywords":"Israel-Gaza War (2023- );Politics and Government;Palestinians;International Relations;Defense and Military Forces;Obama, Barack","column":null,"byline":"By Lisa Lerer","type":"Article","title":"Obama Urges Americans to Take in ‘Whole Truth’ of Israel-Gaza War","abstract":"The former president said everyone was “complicit to some degree” in the current bloodshed and acknowledged the points of view on both sides of the conflict.","des_facet":["Israel-Gaza War (2023- )","Politics and Government","Palestinians","International Relations","Defense and Military Forces"],"org_facet":[],"per_facet":["Obama, Barack"],"geo_facet":[],"media":[{"type":"image","subtype":"photo","caption":"“What Hamas did was horrific, and there’s no justification for it,” former President Barack Obama said on Friday. “And what is also true is that the occupation and what’s happening to Palestinians is unbearable.”","copyright":"Nicole Craine for The New York Times","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/04/multimedia/04pol-obama-vhzw/04pol-obama-vhzw-thumbStandard-v2.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/04/multimedia/04pol-obama-vhzw/04pol-obama-vhzw-mediumThreeByTwo210-v2.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/04/multimedia/04pol-obama-vhzw/04pol-obama-vhzw-mediumThreeByTwo440-v2.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/97ed8f84-5d3c-5fc1-8ffa-9f0727099085","url":"https://www.nytimes.com/2023/11/04/opinion/sunday/conservative-intellectuals-republicans.html","id":100000009156469,"asset_id":100000009156469,"source":"New York Times","published_date":"2023-11-04","updated":"2023-11-05 09:39:23","section":"Opinion","subsection":"Sunday Opinion","nytdsection":"opinion","adx_keywords":"United States Politics and Government;Presidential Election of 2024;Religion-State Relations;Right-Wing Extremism and Alt-Right;Fringe Groups and Movements;Democracy (Theory and Philosophy);Conservatism (US Politics);Liberalism (US Politics);Christians and Christianity;Anton, Michael (1970- );Alamariu, Costin;Trump, Donald J;Claremont Institute;Republican Party","column":null,"byline":"By Damon Linker","type":"Article","title":"Get to Know the Influential Conservative Intellectuals Who Help Explain G.O.P. Extremism","abstract":"A coalition of catastrophists is trying to make the next generation of Republicans believe that the country is on the verge of collapse.","des_facet":["United States Politics and Government","Presidential Election of 2024","Religion-State Relations","Right-Wing Extremism and Alt-Right","Fringe Groups and Movements","Democracy (Theory and Philosophy)","Conservatism (US Politics)","Liberalism (US Politics)","Christians and Christianity"],"org_facet":["Claremont Institute","Republican Party"],"per_facet":["Anton, Michael (1970- )","Alamariu, Costin","Trump, Donald J"],"geo_facet":[],"media":[{"type":"image","subtype":"photo","caption":"","copyright":"Illustration by Pablo Delcan; photographs by Getty Images","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/05/opinion/sunday/05LinkerCover/05LinkerCover-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/05/opinion/sunday/05LinkerCover/05LinkerCover-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/05/opinion/sunday/05LinkerCover/05LinkerCover-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/a1be9166-816c-53bd-81d8-1e6626f49638","url":"https://www.nytimes.com/2023/11/02/opinion/sunday/resilience-bad-news-coping.html","id":100000009160308,"asset_id":100000009160308,"source":"New York Times","published_date":"2023-11-02","updated":"2023-11-04 17:01:14","section":"Opinion","subsection":"Sunday Opinion","nytdsection":"opinion","adx_keywords":"Anxiety and Stress;Ethics (Personal);Greek Civilization;Religion and Belief;Philosophy;Israel-Gaza War (2023- );Hillesum, Etty","column":null,"byline":"By David Brooks","type":"Article","title":"How to Stay Sane in Brutalizing Times","abstract":"Ancient wisdom can help keep us from becoming calloused over.","des_facet":["Anxiety and Stress","Ethics (Personal)","Greek Civilization","Religion and Belief","Philosophy","Israel-Gaza War (2023- )"],"org_facet":[],"per_facet":["Hillesum, Etty"],"geo_facet":[],"media":[{"type":"image","subtype":"photo","caption":"","copyright":"Photo illustration by The New York Times","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/04/opinion/sunday/02Brooks/02Brooks-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/04/opinion/sunday/02Brooks/02Brooks-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/04/opinion/sunday/02Brooks/02Brooks-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/d8f6e369-6746-5491-80f3-a424a5e05532","url":"https://www.nytimes.com/2023/11/05/us/politics/israel-us-weapons-west-bank.html","id":100000009165975,"asset_id":100000009165975,"source":"New York Times","published_date":"2023-11-05","updated":"2023-11-05 23:05:23","section":"U.S.","subsection":"Politics","nytdsection":"u.s.","adx_keywords":"Israel-Gaza War (2023- );Israeli Settlements;Terrorism;Arms Trade;Right-Wing Extremism and Alt-Right;United States International Relations;Ben-Gvir, Itamar;Netanyahu, Benjamin;Biden, Joseph R Jr;Blinken, Antony J;Palestinian Authority;Gaza Strip;West Bank;Israel","column":null,"byline":"By Edward Wong and Patrick Kingsley","type":"Article","title":"U.S. Officials Fear American Guns Ordered by Israel Could Fuel West Bank Violence","abstract":"Israel wants 24,000 assault rifles. Itamar Ben-Gvir, a far-right minister overseeing the police, has given rifles to civilians and is forming “security squads.”","des_facet":["Israel-Gaza War (2023- )","Israeli Settlements","Terrorism","Arms Trade","Right-Wing Extremism and Alt-Right","United States International Relations"],"org_facet":["Palestinian Authority"],"per_facet":["Ben-Gvir, Itamar","Netanyahu, Benjamin","Biden, Joseph R Jr","Blinken, Antony J"],"geo_facet":["Gaza Strip","West Bank","Israel"],"media":[{"type":"image","subtype":"photo","caption":"“Guns in the right hands save lives!” said Israel’s minister for national security, Itamar Ben-Gvir, center.","copyright":"Menahem Kahana/Agence France-Presse — Getty Images","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05dc-israel-weapons-pbzg/05dc-israel-weapons-pbzg-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05dc-israel-weapons-pbzg/05dc-israel-weapons-pbzg-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05dc-israel-weapons-pbzg/05dc-israel-weapons-pbzg-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/eabdd7c8-5a86-50ae-8b38-8fc3f7f4d242","url":"https://www.nytimes.com/2023/11/03/opinion/isaac-herzog-israel-hamas-gaza.html","id":100000009162964,"asset_id":100000009162964,"source":"New York Times","published_date":"2023-11-03","updated":"2023-11-04 16:38:12","section":"Opinion","subsection":"","nytdsection":"opinion","adx_keywords":"Israel-Gaza War (2023- );Defense and Military Forces;Jews and Judaism;Kidnapping and Hostages;Terrorism;Palestinians;Civilian Casualties;Hamas;Israel;Gaza Strip","column":null,"byline":"By Isaac Herzog","type":"Article","title":"The President of Israel: This Is Not a Battle Just Between Israel and Hamas","abstract":"All nations should realize that they could be the next target for terrorists.","des_facet":["Israel-Gaza War (2023- )","Defense and Military Forces","Jews and Judaism","Kidnapping and Hostages","Terrorism","Palestinians","Civilian Casualties"],"org_facet":["Hamas"],"per_facet":[],"geo_facet":["Israel","Gaza Strip"],"media":[{"type":"image","subtype":"photo","caption":"","copyright":"Kenny Holston/The New York Times","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/03/multimedia/03herzog1-tpzj/03herzog1-tpzj-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/03/multimedia/03herzog1-tpzj/03herzog1-tpzj-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/03/multimedia/03herzog1-tpzj/03herzog1-tpzj-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/dee2339e-7274-5b60-b04d-dde415e0b644","url":"https://www.nytimes.com/2023/11/05/us/politics/biden-trump-2024-poll.html","id":100000009164414,"asset_id":100000009164414,"source":"New York Times","published_date":"2023-11-05","updated":"2023-11-05 23:06:57","section":"U.S.","subsection":"Politics","nytdsection":"u.s.","adx_keywords":"Presidential Election of 2024;Polls and Public Opinion;United States Economy;Biden, Joseph R Jr;Trump, Donald J;New York Times/Siena College Poll","column":null,"byline":"By Shane Goldmacher","type":"Article","title":"Trump Leads in 5 Critical States as Voters Blast Biden, Times/Siena Poll Finds","abstract":"Voters in battleground states said they trusted Donald J. Trump over President Biden on the economy, foreign policy and immigration, as Mr. Biden’s multiracial base shows signs of fraying.","des_facet":["Presidential Election of 2024","Polls and Public Opinion","United States Economy"],"org_facet":["New York Times/Siena College Poll"],"per_facet":["Biden, Joseph R Jr","Trump, Donald J"],"geo_facet":[],"media":[{"type":"image","subtype":"photo","caption":"","copyright":"The New York Times","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/03/multimedia/2023-10-30-november-polls-index/2023-10-30-november-polls-index-thumbStandard-v5.png","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/03/multimedia/2023-10-30-november-polls-index/2023-10-30-november-polls-index-mediumThreeByTwo210-v5.png","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/03/multimedia/2023-10-30-november-polls-index/2023-10-30-november-polls-index-mediumThreeByTwo440-v5.png","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/ad386325-1397-51c8-9bc5-83097100601d","url":"https://www.nytimes.com/2023/11/05/opinion/israel-palestinians-hostage-silence.html","id":100000009158851,"asset_id":100000009158851,"source":"New York Times","published_date":"2023-11-05","updated":"2023-11-05 12:51:24","section":"Opinion","subsection":"","nytdsection":"opinion","adx_keywords":"Israel-Gaza War (2023- );Kidnapping and Hostages;Hamas;Israel;Gaza Strip","column":null,"byline":"By Alana Zeitchik","type":"Article","title":"Six Members of My Family Are Hostages in Gaza. Does Anyone Care?","abstract":"It seems the left has a hard time holding space for both Jewish and Palestinian civilians.","des_facet":["Israel-Gaza War (2023- )","Kidnapping and Hostages"],"org_facet":["Hamas"],"per_facet":[],"geo_facet":["Israel","Gaza Strip"],"media":[{"type":"image","subtype":"photo","caption":"","copyright":"Illustration by Sam Whitney/The New York Times","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/05/opinion/05zeitchik-image/05zeitchik-image-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/05/opinion/05zeitchik-image/05zeitchik-image-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/05/opinion/05zeitchik-image/05zeitchik-image-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/ad9cf964-1f73-5bec-8696-923cdd1dc8b0","url":"https://www.nytimes.com/2023/11/05/opinion/maga-mike-johnson-christianity.html","id":100000009164271,"asset_id":100000009164271,"source":"New York Times","published_date":"2023-11-05","updated":"2023-11-05 22:55:20","section":"Opinion","subsection":"","nytdsection":"opinion","adx_keywords":"United States Politics and Government;Bible;Christians and Christianity;Evangelical Movement;Conservatism (US Politics);Rumors and Misinformation;Johnson, Mike (1972- );Republican Party;House of Representatives","column":null,"byline":"By David French","type":"Article","title":"‘MAGA Mike Johnson’ and Our Broken Christian Politics","abstract":"The speaker needs to consult his Bible more carefully.","des_facet":["United States Politics and Government","Bible","Christians and Christianity","Evangelical Movement","Conservatism (US Politics)","Rumors and Misinformation"],"org_facet":["Republican Party","House of Representatives"],"per_facet":["Johnson, Mike (1972- )"],"geo_facet":[],"media":[{"type":"image","subtype":"photo","caption":"","copyright":"Jim Lo Scalzo/EPA, via Shutterstock","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05French-wtql/05French-wtql-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05French-wtql/05French-wtql-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05French-wtql/05French-wtql-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/4f5cf0a0-e3dd-51c7-a09a-0eeb54eed2ff","url":"https://www.nytimes.com/2023/11/05/world/middleeast/gaza-explosion-al-maghazi-camp.html","id":100000009166138,"asset_id":100000009166138,"source":"New York Times","published_date":"2023-11-05","updated":"2023-11-05 17:17:19","section":"World","subsection":"Middle East","nytdsection":"world","adx_keywords":"Israel-Gaza War (2023- );Palestinians;Hamas;United Nations Relief and Works Agency;Gaza Strip","column":null,"byline":"By Hiba Yazbek and Samar Abu Elouf","type":"Article","title":"Explosion Gazans Say Was Airstrike Leaves Many Casualties in Dense Neighborhood","abstract":"Dozens were taken to nearby Al-Aqsa Martyrs Hospital, where a photographer for The New York Times saw the injured crowding the hallways and the lifeless being prepared for burial.","des_facet":["Israel-Gaza War (2023- )","Palestinians"],"org_facet":["Hamas","United Nations Relief and Works Agency"],"per_facet":[],"geo_facet":["Gaza Strip"],"media":[{"type":"image","subtype":"photo","caption":"","copyright":"Mohammed Fayq Abu Mostafa/Reuters","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05israel-hamas-strikes-promo2/05israel-hamas-strikes-vgbc-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05israel-hamas-strikes-promo2/05israel-hamas-strikes-vgbc-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/05israel-hamas-strikes-promo2/05israel-hamas-strikes-vgbc-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/4a7a2112-d58c-5203-ac6a-dc9904f60b4c","url":"https://www.nytimes.com/2023/11/04/us/politics/israel-gaza-deaths-bombs.html","id":100000009160050,"asset_id":100000009160050,"source":"New York Times","published_date":"2023-11-04","updated":"2023-11-04 23:21:23","section":"U.S.","subsection":"Politics","nytdsection":"u.s.","adx_keywords":"Israel-Gaza War (2023- );Civilian Casualties;Defense and Military Forces;Targeted Killings;Drones (Pilotless Planes);United States International Relations;Peace Process;United States Politics and Government;War Crimes, Genocide and Crimes Against Humanity;Biden, Joseph R Jr;Blinken, Antony J;Netanyahu, Benjamin;Moulton, Seth W;Hamas;Hezbollah;Gaza Strip;Israel;Jabaliya Refugee Camp (Gaza Strip)","column":null,"byline":"By Adam Entous, Eric Schmitt and Julian E. Barnes","type":"Article","title":"U.S. Officials Outline Steps to Israel to Reduce Civilian Casualties","abstract":"The measures include using smaller bombs against Hamas, U.S. officials said.","des_facet":["Israel-Gaza War (2023- )","Civilian Casualties","Defense and Military Forces","Targeted Killings","Drones (Pilotless Planes)","United States International Relations","Peace Process","United States Politics and Government","War Crimes, Genocide and Crimes Against Humanity"],"org_facet":["Hamas","Hezbollah"],"per_facet":["Biden, Joseph R Jr","Blinken, Antony J","Netanyahu, Benjamin","Moulton, Seth W"],"geo_facet":["Gaza Strip","Israel","Jabaliya Refugee Camp (Gaza Strip)"],"media":[{"type":"image","subtype":"photo","caption":"Secretary of State Antony J. Blinken said Friday during a visit to Israel that he had spoken to Prime Minister Benjamin Netanyahu about “concrete steps” that the United States believes Israel could and should take to minimize civilian deaths.","copyright":"Pool photo by Jonathan Ernst","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/04/multimedia/04dc-israel-intel-ltjz/04dc-israel-intel-ltjz-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/04/multimedia/04dc-israel-intel-ltjz/04dc-israel-intel-ltjz-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/04/multimedia/04dc-israel-intel-ltjz/04dc-israel-intel-ltjz-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/64a7a561-088b-5d4f-97ec-0fdf271a63d0","url":"https://www.nytimes.com/2023/11/01/us/politics/trump-2025-lawyers.html","id":100000009148671,"asset_id":100000009148671,"source":"New York Times","published_date":"2023-11-01","updated":"2023-11-02 09:19:59","section":"U.S.","subsection":"Politics","nytdsection":"u.s.","adx_keywords":"Presidential Election of 2024;Right-Wing Extremism and Alt-Right;Legal Profession;Conservatism (US Politics);Trump, Donald J;Paoletta, Mark;Leo, Leonard A;Vought, Russell T;Miller, Stephen (1985- );Mitnick, John;Federalist Society","column":null,"byline":"By Jonathan Swan, Charlie Savage and Maggie Haberman","type":"Article","title":"If Trump Wins, His Allies Want Lawyers Who Will Bless a More Radical Agenda","abstract":"Politically appointed lawyers sometimes frustrated Donald J. Trump’s ambitions. His allies are planning to install more aggressive legal gatekeepers if he regains the White House.","des_facet":["Presidential Election of 2024","Right-Wing Extremism and Alt-Right","Legal Profession","Conservatism (US Politics)"],"org_facet":["Federalist Society"],"per_facet":["Trump, Donald J","Paoletta, Mark","Leo, Leonard A","Vought, Russell T","Miller, Stephen (1985- )","Mitnick, John"],"geo_facet":[],"media":[{"type":"image","subtype":"photo","caption":"Top Trump allies, including Russell Vought, seated in the middle, have come to view the Republican Party’s legal elites — even leaders with impeccable conservative credentials — as out of step.","copyright":"Andrew Harnik/Associated Press","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/10/30/multimedia/00pol-trump-2025-lawyers-jhwt/00pol-trump-2025-lawyers-jhwt-thumbStandard-v2.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/10/30/multimedia/00pol-trump-2025-lawyers-jhwt/00pol-trump-2025-lawyers-jhwt-mediumThreeByTwo210-v2.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/10/30/multimedia/00pol-trump-2025-lawyers-jhwt/00pol-trump-2025-lawyers-jhwt-mediumThreeByTwo440-v2.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/04513822-575f-5e5b-aa2f-8c6b78a8f8d7","url":"https://www.nytimes.com/2023/11/05/business/banks-accounts-close-suddenly.html","id":100000009041475,"asset_id":100000009041475,"source":"New York Times","published_date":"2023-11-05","updated":"2023-11-05 10:34:43","section":"Business","subsection":"","nytdsection":"business","adx_keywords":"Personal Finances;Banking and Financial Institutions;Customer Relations;Checks and Checking Accounts;Credit Cards;Frauds and Swindling;Money Laundering;JPMorgan Chase \u0026 Company","column":null,"byline":"By Ron Lieber and Tara Siegel Bernard","type":"Article","title":"Why Banks Are Suddenly Closing Down Customer Accounts","abstract":"Surprised individuals and small-business owners can’t pay rent or make payroll, and no one ever explains what they did wrong.","des_facet":["Personal Finances","Banking and Financial Institutions","Customer Relations","Checks and Checking Accounts","Credit Cards","Frauds and Swindling","Money Laundering"],"org_facet":["JPMorgan Chase \u0026 Company"],"per_facet":[],"geo_facet":[],"media":[{"type":"image","subtype":"photo","caption":"Jennifer Maslanka and her business partner rounded down the cash deposits from the bars they ran to simplify accounting.","copyright":"Dana Golan for The New York Times","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/10/13/multimedia/00shuttered-types-04-twkh/00shuttered-types-04-twkh-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/10/13/multimedia/00shuttered-types-04-twkh/00shuttered-types-04-twkh-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/10/13/multimedia/00shuttered-types-04-twkh/00shuttered-types-04-twkh-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/69728a1b-0f4d-5f3f-b804-311af956135f","url":"https://www.nytimes.com/2023/11/04/us/protests-israels-gaza.html","id":100000009164230,"asset_id":100000009164230,"source":"New York Times","published_date":"2023-11-04","updated":"2023-11-05 18:22:54","section":"U.S.","subsection":"","nytdsection":"u.s.","adx_keywords":"Israel-Gaza War (2023- );Demonstrations, Protests and Riots;Civilian Casualties;Palestinians;Arab-Americans;Palestinian-Americans;Polls and Public Opinion;Cincinnati (Ohio);San Francisco (Calif);Provo (Utah);Washington (DC);United States","column":null,"byline":"By The New York Times","type":"Article","title":"A Snapshot of Support for Palestinians Across America","abstract":"Marches in Washington, D.C., Ohio, Utah and California, with tens of thousands of protesters, reflect the many different groups calling for a cease-fire and lifting of the siege in Gaza.","des_facet":["Israel-Gaza War (2023- )","Demonstrations, Protests and Riots","Civilian Casualties","Palestinians","Arab-Americans","Palestinian-Americans","Polls and Public Opinion"],"org_facet":[],"per_facet":[],"geo_facet":["Cincinnati (Ohio)","San Francisco (Calif)","Provo (Utah)","Washington (DC)","United States"],"media":[{"type":"image","subtype":"photo","caption":"At a pro-Palestinian march in Washington on Saturday, the streets swelled with demonstrators, and the crowd was dense. ","copyright":"Amir Hamja for The New York Times","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/04/multimedia/04nat-marches-cgkt/04nat-marches-cgkt-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/04/multimedia/04nat-marches-cgkt/04nat-marches-cgkt-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/04/multimedia/04nat-marches-cgkt/04nat-marches-cgkt-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0},{"uri":"nyt://article/20ae3ceb-ea96-54fd-9708-7322e473b5b5","url":"https://www.nytimes.com/2023/11/04/realestate/indian-immigrants-community-living.html","id":100000009152570,"asset_id":100000009152570,"source":"New York Times","published_date":"2023-11-04","updated":"2023-11-05 12:44:55","section":"Real Estate","subsection":"","nytdsection":"real estate","adx_keywords":"Indian-Americans;Retirement Communities and Assisted Living;Real Estate and Housing (Residential);Loneliness;Age, Chronological;Immigration and Emigration;Priya Living LLC;California;United States;India","column":null,"byline":"By Anna Kodé","type":"Article","title":"Seeking a Home for His Parents, a Son Built a Community","abstract":"Priya Living, a senior living company that is steeped in Indian culture, began with a small footprint in California and now has expansion plans in the U.S. and India.","des_facet":["Indian-Americans","Retirement Communities and Assisted Living","Real Estate and Housing (Residential)","Loneliness","Age, Chronological","Immigration and Emigration"],"org_facet":["Priya Living LLC"],"per_facet":[],"geo_facet":["California","United States","India"],"media":[{"type":"image","subtype":"photo","caption":"Priya Living is a senior living company steeped in Indian culture.","copyright":"Jason Henry for The New York Times","approved_for_syndication":1,"media-metadata":[{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/04priyaliving-01-zftb/04priyaliving-01-zftb-thumbStandard.jpg","format":"Standard Thumbnail","height":75,"width":75},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/04priyaliving-01-zftb/04priyaliving-01-zftb-mediumThreeByTwo210.jpg","format":"mediumThreeByTwo210","height":140,"width":210},{"url":"https://static01.nyt.com/images/2023/11/05/multimedia/04priyaliving-01-zftb/04priyaliving-01-zftb-mediumThreeByTwo440.jpg","format":"mediumThreeByTwo440","height":293,"width":440}]}],"eta_id":0}]} --------------------------------------------------------------------------------