2015-02-04 6 views
6

Chcę pobrać kategorię aplikacji ze sklepu Play poprzez jej unikalny identyfikator, tj. nazwa pakietu, używam następującego kodu, ale nie zwracam żadnych danych. Próbowałem również użyć tego AppsRequest.newBuilder().setAppId(query) nadal bez pomocy. Dzięki.Jak uzyskać kategorię aplikacji z Play Store według nazwy pakietu w systemie Android?

   String AndroidId = "dead000beef"; 
       MarketSession session = new MarketSession(); 
       session.login("email", "passwd"); 
       session.getContext().setAndroidId(AndroidId); 

       String query = "package:com.king.candycrushsaga"; 
       AppsRequest appsRequest = AppsRequest.newBuilder().setQuery(query).setStartIndex(0) 
         .setEntriesCount(10).setWithExtendedInfo(true).build(); 

       session.append(appsRequest, new Callback<AppsResponse>() { 
        @Override 
        public void onResult(ResponseContext context, AppsResponse response) { 

         String response1 = response.toString(); 
         Log.e("reponse", response1); 

        } 
       }); 
       session.flush(); 
+0

spróbować tego rozwiązania: http://stackoverflow.com/a/35903151/2217336 –

Odpowiedz

2

To, co zrobiłem, najlepsze i łatwe rozwiązanie

https://androidquery.appspot.com/api/market?app=your.unique.package.name 

Albo inaczej można uzyskać kod źródłowy HTML i uzyskać ciąg OUT to ...

https://play.google.com/store/apps/details?id=your.unique.package.name 

Pobierz ten ciąg z niego - użyj s Plit lub metody podciąg

<span itemprop="genre">Sports</span> 

W tym przypadku sportu to kategoria

+0

@Salman, ale to nie daje mi kategorii aplikacji, takich jak sport, moda, styl życia itp ...? –

+0

@Salman dzięki za pomoc ... :-) –

+0

Hej, działa dobrze, ale co, jeśli Google Play jest w innym języku? Jak zdobyć tylko angielską wersję kategorii? –

0

użycie android-market-api to będzie daje wszystkie informacje stosowania

+0

Już go używam, ale w rzeczywistości nie podaję informacji o konkretnej nazwie paczki, albo mogę użyć niewłaściwej metody, czy możesz mi pomóc z jasnym i działającym przykładem? –

3

użyć tego skryptu:

######## Fetch App names and genre of apps from playstore url, using pakage names ############# 
""" 
Reuirements for running this script: 
1. requests library 
Note: Run this command to avoid insecureplatform warning pip install --upgrade ndg-httpsclient 
2. bs4 

pip install requests 
pip install bs4 
""" 

import requests 
import csv 
from bs4 import BeautifulSoup 

# url to be used for package 
APP_LINK = "https://play.google.com/store/apps/details?id=" 
output_list = []; input_list = [] 

# get input file path 
print "Need input CSV file (absolute) path \nEnsure csv is of format: <package_name>, <id>\n\nEnter Path:" 
input_file_path = str(raw_input()) 

# store package names and ids in list of tuples 
with open(input_file_path, 'rb') as csvfile: 
    for line in csvfile.readlines(): 
     (p, i) = line.strip().split(',') 
     input_list.append((p, i)) 


print "\n\nSit back and relax, this might take a while!\n\n" 

for package in input_list: 

    # generate url, get html 
    url = APP_LINK + package[0] 
    r = requests.get(url) 

    if not (r.status_code==404): 
     data = r.text 
     soup = BeautifulSoup(data, 'html.parser') 

     # parse result 
     x = ""; y = ""; 
     try: 
      x = soup.find('div', {'class': 'id-app-title'}) 
      x = x.text 
     except: 
      print "Package name not found for: %s" %package[0] 

     try: 
      y = soup.find('span', {'itemprop': 'genre'}) 
      y = y.text 
     except: 
      print "ID not found for: %s" %package[0] 

     output_list.append([x,y]) 

    else: 
     print "App not found: %s" %package[0] 

# write to csv file 
with open('results.csv', 'w') as fp: 
    a = csv.writer(fp, delimiter=",") 
    a.writerows(output_list) 
+0

Hej, działa dobrze, ale co, jeśli Google Play jest w innym języku? Jak zdobyć tylko angielską wersję kategorii? –

Powiązane problemy