facundoolano / aso Goto Github PK
View Code? Open in Web Editor NEWTools for app store optimization on iTunes and Google Play
License: MIT License
Tools for app store optimization on iTunes and Google Play
License: MIT License
I try gplay.scores but is not working
"
TypeError: Cannot read properties of undefined (reading 'map')
at C:\Users\Administrator\Desktop\aso\node_modules\ramda\dist\ramda.js:578:31
at Object.f2 [as map] (C:\Users\Administrator\Desktop\aso\node_modules\ramda\dist\ramda.js:473:22)
at Object.extract (C:\Users\Administrator\Desktop\aso\node_modules\aso\node_modules\google-play-scraper\lib\utils\appList.js:44:12)
at processAndRecur (C:\Users\Administrator\Desktop\aso\node_modules\aso\node_modules\google-play-scraper\lib\search.js:19:24)
at C:\Users\Administrator\Desktop\aso\node_modules\aso\node_modules\google-play-scraper\lib\search.js:74:21
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
Node.js v18.17.0
"
Very nice tool, but some features(for example visibility
for Google play) takes too much time:(
Have any ideas how to speed up?
If I'll add pool of proxies and will make each request to Google Play use one off them, maybe it wouldn't hit server limits and it will work faster?
Score comamnd was working correctly but suddenly it started to fail, but not always :). I have been checking it with simple requests and sometimes it returns the correct data for difficulty and traffic and others doesn't. Competitors fields appears to be 0 when retrieving of data fails. Leading to a lot of NAN values because of zero division.
Is there something we could do?
Cheers.
In the most recent update, the stores default to their memoized versions, and customizing this requires duplication most of the store code. Instead, pass the store by parameter and easily allow to replace it with the memoized counterpart (also consider adding a store string shortcut like 'gplay-memoized'
(node:14652) UnhandledPromiseRejectionWarning: Error: App not found (404)
at C:\Users\user\Desktop\aso-master_2\node_modules\google-play-scraper\lib\utils\request.js:42:19
at process._tickCallback (internal/process/next_tick.js:68:7)
(node:14652) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:14652) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
First of all, my knowledge about node.js and npm is really basic, but I think that npm handles providing missing dependencies of package which I try to install.
Anyway, I installed google-play-keywords using npm and I started node console. When I tried to define constant 'keywords', following error was thrown:
Error: Cannot find module 'nlcst-to-string'
at Function.Module._resolveFilename (module.js:325:15)
at Function.Module._load (module.js:276:25)
at Module.require (module.js:353:17)
at require (internal/module.js:12:17)
at Object. (/Users/kskrzynecki/node_modules/google-play-keywords/lib/app.js:5:23)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Module.require (module.js:353:17)
at require (internal/module.js:12:17)
at Object. (/Users/kskrzynecki/node_modules/google-play-keywords/index.js:3:22)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
It was easy to resolve by installing extra dependency, but I just wonder shouldn't be handled by npm in the first place? Maybe google-play-keywords dependencies aren't defined properly?
Hello,
a while ago I made a script following the README of this repo and it has been working fine for months...now I get a bunch of UnhandledPromiseRejectionWarning and the script does not complete its execution.
UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'replace' of undefined
The script only contains instructions as explained in the README file:
aso.visibility(packageName).then(console.log);
I'm on the latest 1.1.1 version, Node v.11..8.0
Any ideas?
Unit tests should verify the logic of every method, using mocks or stub store objects, so we control input values and know what to expect.
Store integration should be tested separately.
Hi, First, thanks for awesome library! I tested search suggestion with your sample code but it always returns an empty array.
const itunes = require("aso")("itunes", { country: "us" });
itunes
.suggest({
strategy: itunes.SEARCH,
keywords: ["panda"],
num: 10
})
.then(console.log);
Hi,
please can you update on package.json google-play-scrape to 7.1.1 and app-store.scraper to 0.16.2?
Thanks
Thanks for the library, I have tried the following:
itunes.visibility(284882215).then(console.log);
But getting:
UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): TypeError: Cannot read property 'split' of undefined
I absolutely love this tool, but it seems there isn't a way to get the difficulty for a keyword phrase. For example:
Code
const itunes = require('aso')('itunes');
itunes.scores('cool panda').then(console.log);
Error
(node:30234) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'split' of undefined
at /Users/lion/code/aso/node_modules/app-store-scraper/lib/list.js:12:69
at Array.map ()
at cleanList (/Users/lion/code/aso/node_modules/app-store-scraper/lib/list.js:8:29)
at
at process._tickCallback (internal/process/next_tick.js:188:7)
I want to use proxy for the aso request. how to do that?
Hello,
given the last few posted issues and no response from the creator, I am curious if they project is still being maintained? It would be very sad to see it go. As of now, it seems that something with scraping is broken. I always get a 503 return. I am especially curious since the app-store-scraper library works perfectly fine.
Thanks!
Define a specific interface for the store object. Any object that implements that interface should be able to be used as a store backend for the ASO methods.
This would be convenient to, for example, have stores that go to a database, or that cache results in something like ElasticSearch before attempting to scrape Google Play or iTunes.
DEBUG=app-store-scraper,google-play-scraper,aso
Description:
I am working with aso
module and i am getting 404 App not found error
. I am sending a very simple request with just 1 keyword and that is used in example.
Example code:
const router = require("express").Router();
const gplay = require("aso")("gplay");
//keyword score
router.get("/score/:keyword", (req, res, next) => {
console.log(req.params.keyword);
const keyword = req.params.keyword;
gplay
.scores(`${keyword}`)
.then(console.log)
.catch(err => {
res.send(err);
});
});
module.exports = router;
Error message:
Error: App not found (404)
at E:\Workspaces\React_Native\ASO_Tool\backend\node_modules\aso\node_modules\google-play-scraper\lib\utils\request.js:44:19
Since the part most likely to break in this library is the integration with the underlying scrapers (either because the version changed and we need to adapt or because the scrapers themselves break), we should have automated tests that make non-mocked scraper requests.
The problem with this is that most aso methods will take an unacceptable amount of time to finish. An approach that work: have stub stores that fallback to the actual scraper the first time each method (e.g. .app(), .list(), .search) is called, cache that single result and reuse it on every subsequent request. This way we could verify the input and output values work as expected with the minimal amount of requests.
Hi facundoolano, thank you very much for very useful lib.
I use you lib to aso on google play without any problem. But when i try to get score from over 14 keywords sequentially. It came out with error:
<--- Last few GCs --->
692423 ms: Mark-sweep 1256.1 (1434.6) -> 1244.3 (1434.6) MB, 83.0 / 0.0 ms [al
location failure] [GC in old space requested].
692501 ms: Mark-sweep 1244.3 (1434.6) -> 1244.2 (1434.6) MB, 77.8 / 0.0 ms [al
location failure] [GC in old space requested].
692585 ms: Mark-sweep 1244.2 (1434.6) -> 1253.3 (1403.6) MB, 84.1 / 0.0 ms [la
st resort gc].
692663 ms: Mark-sweep 1253.3 (1403.6) -> 1262.2 (1403.6) MB, 78.3 / 0.0 ms [la
st resort gc].<--- JS stacktrace --->
==== JS stack trace =========================================
Security context: 000000E62C0CFB49
1: slowToString [buffer.js:459] [pc=000002CB180F33F5] (this=0000010137FA80C1
<an Uint8Array with map 000001A00EA067D1>,encoding=000000E62C0DBC31 <String[4]:
utf8>,start=0,end=316600)
2: arguments adaptor frame: 1->3
3: toString [buffer.js:~487] [pc=000002CB17FD6C21] (this=0000010137FA80C1 <a
n Uint8Array with map 000001A00EA067D1>)
4: arguments adaptor frame: 1->0
5: /* ano...FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memo
ry`
Then i try to debug this, and find out, when use aso lib, it will take very large memory, and nodejs don't gc this. I try with simple code like this:
var aso = require('aso')('gplay');
// Get memory usage
var heapUsed = process.memoryUsage().heapUsed;
console.log("Program is using " + heapUsed + " bytes of Heap.")
aso.scores("coin").then(function(data)
{
// Get memory usage
var heapUsed = process.memoryUsage().heapUsed;
console.log("Program is using " + heapUsed + " bytes of Heap.")
aso.scores("fun").then(function(a)
{
// Get memory usage
var heapUsed = process.memoryUsage().heapUsed;
console.log("Program is using " + heapUsed + " bytes of Heap.")
aso.scores("game").then(function(b)
{
// Get memory usage
var heapUsed = process.memoryUsage().heapUsed;
console.log("Program is using " + heapUsed + " bytes of Heap.")
aso.scores("coin").then(function(c)
{
// Get memory usage
var heapUsed = process.memoryUsage().heapUsed;
console.log("Program is using " + heapUsed + " bytes of Heap.")
});
});
});
});
Result very bad:
Program is using 80766688 bytes of Heap.
Program is using 213251752 bytes of Heap.
Program is using 390810216 bytes of Heap.
Program is using 756238712 bytes of Heap.
Program is using 796911968 bytes of Heap.
I think many object of aso lib can't destroy when gc working. Hope you will find out what is the issue and fix it. Thank you very much!
allow to pass a country code that's used for the scraper calls.
This started giving me an error last week - I don't know if Apple changed something?
Error: Error: Invalid category 6025
at validate (/Users/mf/code/coda/weekly-report/node_modules/app-store-scraper/lib/list.js:63:11)
at /Users/mf/code/coda/weekly-report/node_modules/app-store-scraper/lib/list.js:82:5
at new Promise (<anonymous>)
at Object.list (/Users/mf/code/coda/weekly-report/node_modules/app-store-scraper/lib/list.js:80:10)
at Object.list (/Users/mf/code/coda/weekly-report/node_modules/memoizee/lib/configure-map.js:42:41)
at /Users/mf/code/coda/weekly-report/node_modules/aso/lib/stores/itunes.js:28:26
at Array.map (<anonymous>)
at getRankedApps (/Users/mf/code/coda/weekly-report/node_modules/aso/lib/scores/traffic.js:35:32)
at /Users/mf/code/coda/weekly-report/node_modules/aso/lib/scores/traffic.js:80:7
at runMicrotasks (<anonymous>)
error Command failed with exit code 1.
I'll also post this on app-store-scraper
in case it's on their end.
Edit: Oh, that's also you. I'll keep it here :)
This is My code
I didn't make any changes into code. I follow steps as given in README.md File
//npm install aso
const gplay = require('aso')('gplay');
const itunes = require('aso')('itunes');
gplay.scores('panda').then(console.log);
itunes.scores('panda').then(console.log);
It gives me error
UnhandledPromiseRejectionWarning: #<Object>
AND
UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'map' of undefined
Hello,
I am using the base "google-play-scraper" library very successfully. However, any function in the aso library results in a "Killed" status. No matter what the input or call is.
Just to add, have tested this on three ubuntu VMs with varied RAM configs of 2 GB, 4 GB and 6 GB, all with the same result.
Just me?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.