import requests import pandas as pd import numpy as np def search_apps(term, country, media='software', limit=100): base_url = 'https://itunes.apple.com/search' params = { 'term': term, 'country': country, 'media': media, 'limit': limit } response = requests.get(base_url, params=params) response = response.json()['results'] # Create a pandas DataFrame data = pd.DataFrame(response, columns=['trackName', 'averageUserRating','userRatingCount', 'price', 'currency','primaryGenreName', 'releaseDate', 'currentVersionReleaseDate', 'description',"releaseNotes" ,"screenshotUrls", 'languageCodesISO2A', 'trackId', 'sellerName', "sellerUrl", 'trackViewUrl']) data["averageUserRating"] = np.round(data["averageUserRating"], 1) data["market"] = country data["search_term"] = term data["releaseDate"] = data["releaseDate"].apply(lambda x: x.split("T")[0]) data["currentVersionReleaseDate"] = data["currentVersionReleaseDate"].apply(lambda x: x.split("T")[0]) data.columns = ['name', 'average_rating', 'rating_count', 'price', 'currency', 'genre', 'release_date', 'latest_version_release', 'description', 'release_notes', "screenshots", 'languages', 'id', 'seller', 'seller_url', 'link', 'market', 'search_term'] return data def init_search(term, countries, media='software', limit=100): term = term.split(", ") countries = countries.split(", ") data = pd.DataFrame() for country in countries: for t in term: temp = search_apps(t, country, media=media, limit=limit) temp['languages'] = temp['languages'].apply(lambda x: ', '.join(x)) temp['screenshots'] = temp['screenshots'].apply(lambda x: ', '.join(x)) data = pd.concat([data, temp], ignore_index=True) data = data.drop_duplicates(subset=data.columns.difference(['search_term'])) data = data.reset_index(drop=True) return data def to_csv(data): csv = data.to_csv(index=False) return csv.encode('utf-8')