Categorygithub.com/nightcodezero/katsini
modulepackage
1.0.1
Repository: https://github.com/nightcodezero/katsini.git
Documentation: pkg.go.dev

# README

Katsini - Get the latest app info from app stores




A blazing-fast, lightweight, and user-friendly tool built with Go for retrieving app information from major app stores.

made-with-Go CI Release codecov GitHub issues GitHub pull requests

šŸ• Features

  • āš”ļø Blazingly fast — Lightning-quick app data retrieval powered by Go
  • šŸ›ļø Multi-store support — Fetch data from major app stores in one place
  • 🪶 Lightweight — Minimal resource footprint for efficient operation
  • 🐳 Containerized — Full Docker support for flexible deployment
  • šŸ”Œ Simple API — Clean REST endpoints for seamless integration
  • šŸ“ Structured data — Consistent JSON output for all app stores
  • šŸ› ļø Easy setup — Get started in minutes with straightforward configuration

šŸ›ļø Supported App Stores

🐳 Quick Start

  • Docker and Docker Compose must be installed on your machine.
  • Copy code below and save it as docker-compose.yml.
services:
  browser:
    image: chromedp/headless-shell
    ports:
      - "9222:9222"
    command: [
      "--no-sandbox",
      "--disable-gpu",
      "--remote-debugging-address=0.0.0.0",
      "--remote-debugging-port=9222",
      "--disable-extensions",
      "--enable-automation",
      "--disable-blink-features=AutomationControlled",
      "--incognito",
      "--user-agent=Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"
    ]

  app:
    image: ghcr.io/nightcodezero/katsini:latest
    environment:
      CHROME_HOST: browser
      CHROME_PORT: 9222
    ports:
      - "8080:8080"
    depends_on:
      - browser
    links:
      - browser
  • Run docker-compose up to start the service.

šŸŽ‰ That's it! You can now access the service at http://localhost:8080

šŸ“– Usage

šŸ›ļø Google Play Store

Example Request:

  • URL: http://localhost:8080/playstore
  • Method: GET
  • Query Parameter:
    • bundleId (REQUIRED): The app package name (e.g., com.mediocre.dirac).
    • lang (optional, defaults to `'en'): The two letter language code in which to fetch the app page.
    • country (optional, defaults to 'us'): The two letter country code used to retrieve the applications. Needed when the app is available only in some countries.
curl http://localhost:8080/playstore?bundleId=com.mediocre.dirac&lang=en&country=us

Example Response:

{
  "bundleId": "com.mediocre.dirac",
  "developer": "Mediocre",
  "title": "Beyondium",
  "updated": "31-10-2019",
  "url": "https://play.google.com/store/apps/details?id=com.mediocre.dirac&hl=en&gl=us",
  "version": "1.1.5"
}

šŸ›ļø Apple App Store

Example Request:

  • URL: http://localhost:8080/appstore
  • Method: GET
  • Query Parameter:
    • appId or bundleId (REQUIRED):
      • appId: The unique identifier for the application in the Apple App Store. This can be found in the app's store URL after the /id<APP_ID> segment.
      • bundleId: The app package name (e.g., com.thinkdivergent).
    • country (optional, defaults to 'us'): The two letter country code used to retrieve the applications. Needed when the app is available only in some countries.
curl http://localhost:8080/appstore?appId=1592213654&country=us

Example Response:

{
  "appId": "1592213654",
  "bundleId": "com.thinkdivergent",
  "developer": "Think Divergent LLC",
  "title": "Think Divergent",
  "updated": "11-02-2023",
  "url": "https://apps.apple.com/us/app/think-divergent/id1592213654?uo=4",
  "version": "2.0.13"
}

šŸ›ļø Huawei AppGallery

Example Request:

  • URL: http://localhost:8080/appgallery
  • Method: GET
  • Query Parameter:
    • appId (REQUIRED): The unique identifier for the application in the Huawei AppGallery. This can be found in the app's store URL after the /app/C<APP_ID> segment.
curl http://localhost:8080/appgallery?appId=100102149

Example Response:

{
  "appId": "100102149",
  "bundleId": "com.radio.fmradio",
  "developer": "RADIOFM",
  "title": "Radio FM",
  "updated": "05-11-2024",
  "url": "https://appgallery.huawei.com/app/C100102149",
  "version": "6.5.6"
}

⚔ Benchmarks

The benchmarks were run using the following command:

go test -bench=. -benchtime=1s -benchmem -cpu=1

The results of the benchmarks are as follows:

goos: linux
goarch: amd64
pkg: github.com/nightcodezero/katsini
cpu: 12th Gen Intel(R) Core(TM) i7-12700
BenchmarkGooglePlayStore  	       2	 811015314 ns/op	 3816876 B/op	   21807 allocs/op
BenchmarkAppleAppStore    	      64	  18702830 ns/op	   95091 B/op	     163 allocs/op
BenchmarkHuaweiAppGallery 	       2	 892189872 ns/op	 2685124 B/op	   15531 allocs/op

The benchmark results show the average time taken and how many iterations were run per operation can be done in a second.

  • Note: The benchmarks were run on a 12th Gen Intel(R) Core(TM) i7-12700 CPU and using a single CPU core.
  • 2 : The number of iterations run per operation.
  • ns/op : The average time taken for each operation.
  • B/op : The average number of bytes allocated per operation.
  • allocs/op : The average number of memory allocations per operation.

šŸ”‹ Uses

Here are some of the libraries that are used in this project:

  • Chromedp - A faster, simpler way to drive browsers in Go.

# Functions

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Variables

No description provided by the author
No description provided by the author

# Structs

No description provided by the author