# 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.
š 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
orbundleId
(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