function get_itunes_info($trackid, $type = 'app', $store = 'us') { // proxy https://itunes.apple.com if (!$trackid) { return false; } if (!$store) { $store = 'us'; } if (!$type) { $type = 'app'; } $proxies = array('http://127.0.0.1:81', 'http://94.23.169.52:81', 'http://188.165.24.108'); //if ($_COOKIE['test']) var_dump("{$store}/{$type}/id{$trackid}/?l=en"); $data = try_itunes_proxy("{$store}/{$type}/id{$trackid}/?l=en", $proxies); if (!$data) { return false; } require_once 'classes' . DS . 'qp' . DS . 'qp.php'; $data = @qp($data, '', array('ignore_parser_warnings' => TRUE)); $app['type'] = $type; $app['trackid'] = $trackid; $app['store'] = $store; $app['name'] = $data->find('#title.intro div.left h1')->text(); if (!$app['name']) { return false; } $gamecenter = $data->find('.gc-badge')->text(); $app['gamecenter'] = $gamecenter ? 1 : 0; $app['artist']['name'] = str_replace(array('by ', 'By '), '', $data->find('#content div.padder div#title.intro div.left h2')->text()); $app['artist']['id'] = preg_match('/id([0-9]+)/', $data->find('#title .right .view-more')->attr('href'), $matches); $app['artist']['id'] = $matches[1]; if ($type != 'book') { if ($store == 'en') { $store = 'us'; } $native_data = json_decode(curl_request("https://itunes.apple.com/lookup?id={$trackid}&country={$store}&lang=en_us"), true); //var_dump($native_data); if (!$app['artist']['id']) { $app['artist']['id'] = $native_data['results'][0]['artistId']; } $app['bundleid'] = $native_data['results'][0]['bundleId']; } $app['artist']['support'] = $data->find('html body.software div#main div#desktopContentBlockId.platform-content-block div#content div.padder div.center-stack div.app-links a.see-all')->eq(0)->attr('href'); $app['artist']['website'] = $data->find('html body.software div#main div#desktopContentBlockId.platform-content-block div#content div.padder div.center-stack div.app-links a.see-all')->eq(1)->attr('href'); $app['description'] = strip_tags($data->find('.center-stack p')->eq(0)->html(), '<br>'); if ($type == 'app') { $app['whatsnew'] = trim(strip_tags($data->find('.center-stack p')->eq(1)->html(), '<br>')); } $appdata['screenshots']['osx'] = $data->find('.screenshots img'); foreach ($appdata['screenshots']['osx'] as $sc) { $app['screenshots']['osx'][] = array('src' => $sc->attr('src'), 'class' => $sc->attr('class')); } $appdata['screenshots']['iphone'] = $data->find('.iphone-screen-shots img'); foreach ($appdata['screenshots']['iphone'] as $sc) { $app['screenshots']['iphone'][] = array('src' => $sc->attr('src'), 'class' => $sc->attr('class')); } $appdata['screenshots']['ipad'] = $data->find('.ipad-screen-shots img'); foreach ($appdata['screenshots']['ipad'] as $sc) { $app['screenshots']['ipad'][] = array('src' => $sc->attr('src'), 'class' => $sc->attr('class')); } if ($app['screenshots']['iphone'] || $app['screenshots']['ipad']) { unset($app['screenshots']['osx']); } $app['image'] = $data->find('.product .artwork img')->attr('src-swap'); $app['price'] = $data->find('#left-stack div.lockup ul.list li div.price')->text(); $genre = $data->find('#left-stack div.lockup ul.list li.genre a'); $app['genre']['name'] = $genre->text(); $app['genre']['id'] = preg_match('/id([0-9]+)/', $genre->attr('href'), $matches); $app['genre']['id'] = $matches[1]; $app['rating']['text'] = $data->find('.app-rating a')->text(); $app['rating']['description'] = $data->find('.app-rating li')->text(); if ($type == 'app') { $app['compatibility'] = db_compatibility($data->find('.product p')->text()); $app['requirements'] = str_replace('Compatibility: ', '', $data->find('.application p')->text()); $app['ratings']['current'] = $data->find('.customer-ratings div')->eq(1)->attr('aria-label'); $app['published'] = preg_replace('#(Updated|Released)\\: #si', '', $data->find('.product li')->eq(2)->text()); $app['version'] = str_replace('Version: ', '', $data->find('.product li')->eq(3)->text()); $app['size'] = str_replace('Size: ', '', $data->find('.product li')->eq(4)->text()); $app['languages'] = preg_replace('#Language(s|)\\: #si', '', $data->find('.product li')->eq(5)->text()); $app['publisher'] = $data->find('.product li')->eq(7)->text(); $app['seller'] = $app['artist']['name']; //$app['seller'] = $app['ratings']['all'] = $data->find('.customer-ratings div')->eq(4)->attr('aria-label'); $inapps = $data->find('.in-app-purchases li'); foreach ($inapps as $ia) { $app['inapps'][] = array('name' => $ia->find('span')->eq(0)->text(), 'price' => $ia->find('span')->eq(1)->text()); } } elseif ($type == 'book') { $app['compatibility'] = '0'; $app['requirements'] = $data->find('.ebook-requirements .availability-message')->eq(1)->text(); $app['ratings']['current'] = $data->find('.customer-ratings .rating')->attr('aria-label'); $app['published'] = str_replace('Published:', '', $data->find('.product li.genre')->next()->text()); $app['publisher'] = str_replace('Publisher: ', '', $data->find('.product li.genre')->next()->next()->text()); $app['seller'] = str_replace('Seller: ', '', $data->find('.product li.genre')->next()->next()->next()->text()); $app['printlength'] = str_replace('Print Length: ', '', $data->find('.product li.genre')->next()->next()->next()->next()->text()); $app['languages'] = preg_replace('#Language(s|)\\: #si', '', $data->find('.product li.genre')->next()->next()->next()->next()->next()->text()); } $reviews = $data->find('.customer-review'); foreach ($reviews as $r) { $stars = preg_match('/[0-9]/', $r->find('h5 div')->attr('aria-label'), $matches); $app['reviews'][] = array('title' => $r->find('.customerReviewTitle')->text(), 'rating' => $matches[0], 'author' => preg_replace('/\\s\\s+/', ' ', $r->find('.user-info')->text()), 'text' => trim(strip_tags($r->find('p')->html(), '<br>'))); } // fix for duplicating whatsnew if (isset($app['reviews'][0]) && $app['whatsnew'] == $app['reviews'][0]['text']) { unset($app['whatsnew']); } $appdata['relatedapps'] = $data->find('.more-by>ul>li'); foreach ($appdata['relatedapps'] as $ra) { $ra = $ra->find('>div'); $link = $ra->find('a.artwork-link')->attr('href'); $link = parse_itunes_url($link); $a['store'] = $link['store']; $a['trackid'] = $link['trackid']; $a['type'] = $link['type']; $a['name'] = $ra->attr('aria-label'); $a['artist']['name'] = $ra->attr('preview-artist'); $a['image'] = $ra->find('a div img')->attr('src-swap'); $app['relatedapps'][] = $a; unset($a); } if ($type == 'app') { $container = 'application'; } else { $container = 'ebook'; } $alsobought = $data->find('.center-stack .lockup.small.' . $container); foreach ($alsobought as $ra) { $link = $ra->find('a.artwork-link')->attr('href'); $link = parse_itunes_url($link); $a['trackid'] = $link['trackid']; $a['store'] = $link['store']; $a['type'] = $link['type']; $a['name'] = $ra->attr('aria-label'); $a['artist']['name'] = $ra->attr('preview-artist'); $a['image'] = $ra->find('a div img')->attr('src-swap'); preg_match('/id([0-9]+)/', $ra->find('div ul li:eq(2) a')->attr('href'), $matches); $a['type'] = $type; if ($type == 'app') { $a['genre']['name'] = $ra->find('div ul li:eq(2) a')->text(); $a['genre']['id'] = $matches[1]; } else { $a['artist']['id'] = $matches[1]; } $app['alsobought'][] = $a; unset($a); } $app['last_parse_itunes'] = $app; return $app; }
<?php require_once 'init.php'; $trackid = $API->getval('trackid', 'int'); $API->TPL->assign('pagetitle', $API->LANG->_('Upload new Content')); //assign menu class $API->TPL->assign('navclass', 'iphone'); $API->TPL->assign('footername', $API->LANG->_('Upload new Content')); $API->auth(); $url = $API->getval('url'); $required_filehostings = $API->DB->query_return("SELECT domains FROM required_filehostings"); if ($url) { $urldata = parse_itunes_url($url); $store = $urldata['store']; $trackid = (int) $urldata['trackid']; $type = $urldata['type']; if (!$trackid) { $API->TPL->display('no-app-error-itunes.tpl'); die; } elseif ($trackid) { $appdata = $API->DB->query_row("SELECT apps.* FROM apps WHERE trackid={$trackid}"); if ($appdata) { $API->TPL->assign('archive_warning', true); $API->TPL->assign('app', $appdata); } } // check required file hostings if ($appdata['links']) { if ($required_filehostings) { foreach ($required_filehostings as $k => $rfh) { //var_dump($rfh)
continue; } $links = urlencode(json_encode($l)); $progress_image[] = "?api=1&n={$n}&cracker={$cracker}&version={$version}&links={$links}&url={$url}"; } $API->TPL->assign('progress_image', $progress_image); $API->TPL->display('alternate-upload-result.tpl'); die; } elseif ($api_call) { //here we are uploading function result($status, $message, $link = null) { die(json_encode(array('status' => $status, 'message' => $message, 'link' => $link))); } header('Content-type: application/json'); $urldata = parse_itunes_url(trim($API->getval('url'))); $store = $urldata['store']; $trackid = (int) $urldata['trackid']; $line_number = $API->getval('n', 'int'); $type = $urldata['type']; $cracker = htmlspecialchars($API->getval('cracker')); $version = htmlspecialchars($API->getval('version')); $links = array_map('htmlspecialchars', (array) json_decode($API->getval('links'), true)); $links = array_filter($links, 'strlen'); $required_filehostings = $API->DB->query_return("SELECT domains FROM required_filehostings"); $urlbancheck = false; // checking filehosting ban and invalid link $ls_to_check = $API->DB->query_row("SELECT GROUP_CONCAT(domains) AS domains FROM banned_filehostings"); $pattern = '#(' . str_replace('.', '\\.', str_replace(',', '|', $ls_to_check['domains'])) . ')#si'; foreach ($links as $l) { if ($required_filehostings) {