Created
November 18, 2018 12:45
-
-
Save PaulSec/5c97bbaf3b4eafcc12ea719cecb8539b to your computer and use it in GitHub Desktop.
APKPure.com search utility
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# python search.py -s uber | |
# https://apkpure.com/search?q=uber | |
# Name: Uber, (package: com.ubercab), Download: https://apkpure.com/uber/com.ubercab | |
# Name: Uber Driver, (package: com.ubercab.driver), Download: https://apkpure.com/uber-driver/com.ubercab.driver | |
# Name: Lyft, (package: me.lyft.android), Download: https://apkpure.com/lyft/me.lyft.android | |
# Name: Uber Eats: Local Food Delivery, (package: com.ubercab.eats), Download: https://apkpure.com/uber-eats-local-food-delivery/com.ubercab.eats | |
# Name: Uber Fleet, (package: com.ubercab.fleet), Download: https://apkpure.com/uber-fleet/com.ubercab.fleet | |
# Name: Free Uber Coupon Code, (package: taxiuber.coupon.code), Download: https://apkpure.com/free-uber-coupon-code/taxiuber.coupon.code | |
# Name: Offline Ride for Uber, (package: me.nicapp), Download: https://apkpure.com/offline-ride-for-uber/me.nicapp | |
# Name: Surge for UBER, (package: dynamikapp.com), Download: https://apkpure.com/surge-for-uber/dynamikapp.com | |
# Name: Free Taxi Uber Promo Code, (package: taxian.uberpromo.code), Download: https://apkpure.com/free-taxi-uber-promo-code/taxian.uberpromo.code | |
# Name: FareWell for Uber and Lyft, (package: com.newlooktechnologies.farewell), Download: https://apkpure.com/farewell-for-uber-and-lyft/com.newlooktechnologies.farewell | |
# Name: Taxi Driver UBER Guide, (package: com.guaide.user.uberuserguaide), Download: https://apkpure.com/taxi-driver-uber-guide/com.guaide.user.uberuserguaide | |
# Name: Free Taxi Coupons for Uber, (package: com.spacextechappz.taxiuberbcoupons), Download: https://apkpure.com/free-taxi-coupons-for-uber/com.spacextechappz.taxiuberbcoupons | |
# python search.py -p com.ubercab.driver | |
# [0] Name: Uber Driver (com.ubercab.driver) | |
# [1] Name: Lyft Driver (com.lyft.android.driver) | |
# [2] Name: Ubertaxi Iceland Driver (com.UbertaxiIceland.driver) | |
# [3] Name: TaxiCaller Driver (com.taxicaller.dispatch) | |
# [...] | |
# [11] Name: Food Delivery Driver App (com.cubefooddeliver.driver) | |
# [12] Name: Driver Simulator (com.zuuks.driver.simulator) | |
# [13] Name: carGO Driver (com.cargo.sp) | |
# [14] Name: Driver Earnings for Uber (com.yuddi.driverearnings) | |
# Select which application you want to search for: [Eg. 0] : 0 | |
# Version V4.201.10002, Size: 56.7 MB, Developer: Uber Driver, Update date: 2018-11-16, Download: https://apkpure.com/uber-driver/com.ubercab.driver/download/1626-APK | |
# Version V4.200.10002, Size: 56.6 MB, Developer: Uber Driver, Update date: 2018-11-07, Download: https://apkpure.com/uber-driver/com.ubercab.driver/download/1610-APK | |
# Version V3.182.10001, Size: 65.0 MB, Developer: Uber Driver, Update date: 2018-10-25, Download: https://apkpure.com/uber-driver/com.ubercab.driver/download/1304-APK | |
# [...] | |
from bs4 import BeautifulSoup | |
import requests | |
import optparse | |
import sys | |
def keyword_search(keyword): | |
url = 'https://apkpure.com/search?q={}'.format(keyword) | |
req = requests.get(url) | |
soup = BeautifulSoup(req.content, 'html.parser') | |
candidates = soup.findAll('dl', attrs={'class': 'search-dl'}) | |
res = [] | |
for idx, candidate in enumerate(candidates): | |
tmp_name = candidate.find('a') | |
name = tmp_name['title'].replace(' APK', '') | |
package = tmp_name['href'].split('/')[-1] | |
tmp_res = {'name': name, 'package': package, 'download_link': tmp_name['href']} | |
res.append(tmp_res) | |
return res | |
def get_versions(keyword): | |
res = keyword_search(keyword) | |
for idx, app in enumerate(res): | |
print("[{}] Name: {} ({})".format(idx, app['name'], app['package'])) | |
idx = int(input('Select which application you want to search for: [Eg. 0] : ')) | |
url = 'https://apkpure.com{}/versions'.format(res[idx]['download_link']) | |
req = requests.get(url) | |
soup = BeautifulSoup(req.content, 'html.parser') | |
try: | |
container = soup.find('ul', attrs={'class': 'ver-wrap'}) | |
app_versions = container.findAll('li') | |
for app in app_versions: | |
tmp_download = app.find('a', attrs={'class': 'down'})['href'].split('?')[0] | |
download_link = "https://apkpure.com{}".format(tmp_download) | |
version = app.find('span', attrs={'class': 'ver-item-n'}).text | |
size = app.find('span', attrs={'class': 'ver-item-s'}).text | |
developer = app.find('p').text | |
update_date = app.find('p', attrs={'class': 'update-on'}).text | |
print("Version {}, Size: {}, Developer: {}, Update date: {}, Download: {}".format(version, size, developer, update_date, download_link)) | |
except: | |
print("There might not be several versions for this APK, check https://apkpure.com{}".format(res[idx]['download_link'])) | |
parser = optparse.OptionParser() | |
parser.add_option('-s','--search', action="store", help="Search for a specific term", dest="search", default=None) | |
parser.add_option('-p','--package', action="store", help="Search for a specific package", dest="package", default=None) | |
options, args = parser.parse_args() | |
if options.search is None and options.package is None: | |
print("You need specify either a package or a search term") | |
parser.print_help() | |
sys.exit(-1) | |
if options.search: | |
res = keyword_search(options.search) | |
for app in res: | |
print("Name: {}, (package: {}), Download: {}".format(app['name'], app['package'], "https://apkpure.com" + app['download_link'])) | |
if options.package: | |
get_versions(options.package) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment