Skip to content

feed:process

Processes the itch.io feed to discover and update game information automatically.

Overview

This command monitors the itch.io public feed for game updates and processes new events to keep the database synchronized with the latest game information. It includes built-in duplicate detection and retry logic for robust operation.

Usage

php artisan feed:process

Options

This command has no specific options. It processes the feed automatically using configured settings.

Processing Logic

The command follows this workflow:

  1. Fetches latest feed events from itch.io's public feed
  2. Checks processed events table to avoid duplicate processing
  3. Stops at first already-processed event to prevent reprocessing
  4. Processes new events in chronological order
  5. Updates game information based on event data
  6. Records processed events to prevent future duplicates

Examples

php artisan feed:process

Processes all new events from the itch.io feed since the last run.

php artisan feed:process -v

Shows detailed processing information including event details and API calls.

php artisan feed:process --quiet

Only shows errors, useful for automated/scheduled execution.

When to Use

Recommended Usage Scenarios

  1. Scheduled automatic execution (recommended: every 15-30 minutes)
  2. Manual execution after extended downtime
  3. Testing feed processing after configuration changes
  4. Recovering from failed automated runs

Processing Behavior

The feed processor treats all events uniformly and does not differentiate between event types. For every feed event:

Condition Action Taken Data Updated
Game exists in database Refresh version information Version details, download links, platform support
Game not in database Skip event None

Processing Flow

This diagram shows the detailed flow of feed processing:

flowchart TD
    A[Start feed:process] --> B[Fetch itch.io Feed]
    B --> C[Get Latest Events]
    C --> D{More Events?}
    D -->|No| E[Complete]
    D -->|Yes| F[Check Processed Events Table]
    F --> G{Already Processed?}
    G -->|Yes| H[Stop Processing]
    G -->|No| I{Game Exists in DB?}
    I -->|No| J[Skip Event]
    I -->|Yes| K[Refresh Version Info]

    K --> L[Record Processed Event]
    J --> M[Continue to Next Event]
    L --> M
    M --> D