npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

gcam-ports

v1.1.1

Published

A comprehensive npm package providing easy access to Google Camera (GCam) ports for various Android device brands

Readme

GCam Ports NPM Package

npm version npm downloads license

A comprehensive Node.js package providing easy access to Google Camera (GCam) ports for various Android device brands. This package serves as a programmatic interface to the extensive GCam ports database available at gcam-ports.com.

🚀 Features

  • 12+ Supported Brands: Samsung, OnePlus, Xiaomi/Redmi/POCO, Realme, Vivo, OPPO, Motorola, Nothing, Infinix, Tecno, ASUS, Honor
  • Comprehensive Device Database: Access to hundreds of compatible Android devices
  • Live Data Fetching: Fetch real-time device information from gcam-ports.com
  • Search Functionality: Search devices across all brands
  • TypeScript Support: Full TypeScript definitions included
  • Lightweight: Minimal dependencies with efficient performance
  • Regular Updates: Synchronized with the latest GCam ports releases

📱 What is GCam?

Google Camera (GCam) is Google's advanced camera application featuring computational photography capabilities like Night Sight, Portrait Mode, and HDR+. Originally exclusive to Pixel devices, talented developers have created modified versions (ports) that work on various Android smartphones, significantly enhancing photo quality.

🛠 Installation

npm install gcam-ports

or

yarn add gcam-ports

📖 Quick Start

const {
  GCamPorts,
  getSupportedBrands,
  getDevicesByBrand,
} = require("gcam-ports");

// Create an instance
const gcamPorts = new GCamPorts();

// Get all supported brands
console.log(getSupportedBrands());

// Get devices for Samsung
const samsungDevices = getDevicesByBrand("samsung");
console.log(samsungDevices);

// Search for specific devices
const results = gcamPorts.searchDevices("Galaxy S25");
console.log(results);

🔧 API Reference

Main Class: GCamPorts

Constructor

const gcamPorts = new GCamPorts(options);

Options:

  • timeout (number): HTTP request timeout in milliseconds (default: 5000)
  • userAgent (string): Custom user agent for requests

Methods

getSupportedBrands()

Returns an object containing all supported brands with their information.

const brands = gcamPorts.getSupportedBrands();
// Returns: { samsung: { name: "Samsung", url: "...", ... }, ... }
getDevicesByBrand(brand)

Get all devices for a specific brand.

const devices = gcamPorts.getDevicesByBrand("samsung");
// Returns: [{ name: "Samsung Galaxy S25", model: "SM-S931U", ... }, ...]
searchDevices(query)

Search for devices across all brands.

const results = gcamPorts.searchDevices("Galaxy S25");
// Returns: [{ name: "Samsung Galaxy S25", brand: "samsung", ... }, ...]
getDownloadUrl(brand)

Get the download page URL for a specific brand.

const url = gcamPorts.getDownloadUrl("oneplus");
// Returns: "https://gcam-ports.com/download-gcam-ports-for-oneplus-phones/"
isBrandSupported(brand)

Check if a brand is supported.

const isSupported = gcamPorts.isBrandSupported("samsung");
// Returns: true
getBrandInfo(brand)

Get detailed information about a brand.

const info = gcamPorts.getBrandInfo("samsung");
// Returns: { name: "Samsung", description: "...", processor_types: [...], ... }
getDeviceCount(brand)

Get the number of supported devices for a brand.

const count = gcamPorts.getDeviceCount("samsung");
// Returns: 95 (example)
getTotalDeviceCount()

Get the total number of supported devices across all brands.

const total = gcamPorts.getTotalDeviceCount();
// Returns: 500+ (example)
generateDeviceUrl(brand, deviceModel)

Generate a direct URL for a specific device's GCam page.

const url = gcamPorts.generateDeviceUrl("samsung", "Galaxy S25");
// Returns: "https://gcam-ports.com/samsung/galaxy-s25-google-camera/"
getStats()

Get comprehensive statistics about the GCam ports database.

const stats = gcamPorts.getStats();
// Returns: { totalBrands: 12, totalDevices: 500+, devicesByBrand: {...}, ... }
fetchLiveDevices(brand) (Async)

Fetch real-time device data from gcam-ports.com (requires internet connection).

try {
  const liveDevices = await gcamPorts.fetchLiveDevices("samsung");
  console.log(liveDevices);
} catch (error) {
  console.error("Failed to fetch live data:", error.message);
}

Quick Access Functions

const {
  getSupportedBrands,
  getDevicesByBrand,
  getDownloadUrl,
} = require("gcam-ports");

// Get all brands
const brands = getSupportedBrands();

// Get devices for a specific brand
const devices = getDevicesByBrand("oneplus");

// Get download URL
const url = getDownloadUrl("xiaomi");

📱 Supported Brands

| Brand | Devices | Processor Types | Popular Series | | --------------------- | ------- | ---------------------------- | --------------------------- | | Samsung | 95+ | Exynos, Snapdragon | Galaxy S, Note, A, M, F | | OnePlus | 70+ | Snapdragon | OnePlus, Nord, Ace | | Xiaomi/Redmi/POCO | 80+ | Snapdragon, MediaTek | Mi, Redmi, POCO, Note | | Realme | 60+ | MediaTek, Snapdragon | GT, C, Narzo | | Vivo | 55+ | Snapdragon, MediaTek, Exynos | V, Y, X, S | | OPPO | 50+ | Snapdragon, MediaTek | Find, Reno, A, F | | Motorola | 45+ | Snapdragon, MediaTek | Moto G, Edge, One, E | | Nothing | 5+ | Snapdragon | Nothing Phone | | Infinix | 35+ | MediaTek, UNISOC | Note, Hot, Zero, Smart | | Tecno | 30+ | MediaTek, UNISOC | Camon, Spark, Phantom, Pova | | ASUS | 15+ | Snapdragon, MediaTek | ROG Phone, ZenFone | | Honor | 25+ | Snapdragon, MediaTek, Kirin | Magic, X, Play |

🎯 Use Cases

Mobile App Development

// Build a GCam port finder app
const gcamPorts = new GCamPorts();

function findGCamForDevice(userDevice) {
  const results = gcamPorts.searchDevices(userDevice);
  return results.length > 0 ? results[0].url : null;
}

Web Development

// Create a device compatibility checker
app.get("/api/compatibility/:brand/:model", (req, res) => {
  const { brand, model } = req.params;
  const devices = gcamPorts.getDevicesByBrand(brand);
  const compatible = devices.find((d) => d.name.includes(model));

  res.json({ compatible: !!compatible, device: compatible });
});

Data Analysis

// Analyze GCam port statistics
const stats = gcamPorts.getStats();
console.log(
  `Coverage: ${stats.totalDevices} devices across ${stats.totalBrands} brands`
);

// Find most supported brand
const topBrand = Object.entries(stats.devicesByBrand).sort(
  ([, a], [, b]) => b - a
)[0];
console.log(`Most supported: ${topBrand[0]} with ${topBrand[1]} devices`);

CLI Tools

#!/usr/bin/env node
const { program } = require("commander");
const { GCamPorts } = require("gcam-ports");

program
  .command("search <device>")
  .description("Search for GCam ports")
  .action((device) => {
    const gcamPorts = new GCamPorts();
    const results = gcamPorts.searchDevices(device);
    console.table(results);
  });

program.parse();

🔄 Live Data vs Static Data

The package includes a static database for offline use, but also supports fetching live data:

  • Static Data: Fast, reliable, works offline - included in the package
  • Live Data: Real-time information from gcam-ports.com - requires internet connection
// Static data (recommended for most use cases)
const devices = gcamPorts.getDevicesByBrand("samsung");

// Live data (for real-time applications)
const liveDevices = await gcamPorts.fetchLiveDevices("samsung");

⚡ Performance

  • Lightweight: < 50KB package size
  • Fast: Local database queries execute in < 1ms
  • Efficient: Minimal memory footprint
  • Cached: HTTP requests are optimized with proper caching

🤝 Contributing

We welcome contributions! Please see our Contributing Guide for details.

Development Setup

git clone https://github.com/redteninternet/gcam-ports-npm.git
cd gcam-ports-npm
npm install
npm test

📄 License

MIT License - see LICENSE file for details.

🌐 Related Links

💝 Support

If this package helps your project, please consider:

📊 Package Stats

  • Total Brands Supported: 12+
  • Total Devices: 500+
  • Package Size: < 50KB
  • Dependencies: 2 (axios, cheerio)
  • Node.js Compatibility: 12.0.0+

Made with ❤️ by the GCam Ports team

Visit gcam-ports.com for the latest GCam ports and comprehensive device guides!