Add first support for Trackmania Exchange

Move to the new API of MX and add TM2020 compatibility
This commit is contained in:
jonthekiller 2020-08-02 12:14:05 +02:00 committed by GitHub
parent 9c256643fa
commit 2d2f5642a3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 46 additions and 19 deletions

View File

@ -37,7 +37,7 @@ class MXMapInfo {
return; return;
} }
if ($this->prefix === 'tm') { if ($this->prefix === 'tm.mania-exchange.com' OR $this->prefix === 'trackmania.exchange') {
$this->dir = 'tracks'; $this->dir = 'tracks';
$this->id = $mx->TrackID; $this->id = $mx->TrackID;
$this->uid = isset($mx->TrackUID) ? $mx->TrackUID : ''; $this->uid = isset($mx->TrackUID) ? $mx->TrackUID : '';
@ -93,23 +93,23 @@ class MXMapInfo {
$this->lbrating = $this->trkvalue; $this->lbrating = $this->trkvalue;
} }
$this->pageurl = 'https://' . $this->prefix . '.mania-exchange.com/' . $this->dir . '/view/' . $this->id; $this->pageurl = 'https://' . $this->prefix . '/' . $this->dir . '/view/' . $this->id;
$this->downloadurl = 'https://' . $this->prefix . '.mania-exchange.com/' . $this->dir . '/download/' . $this->id; $this->downloadurl = 'https://' . $this->prefix . '/' . $this->dir . '/download/' . $this->id;
if ($mx->HasScreenshot) { if ($mx->HasScreenshot) {
$this->imageurl = 'https://' . $this->prefix . '.mania-exchange.com/' . $this->dir . '/screenshot/normal/' . $this->id; $this->imageurl = 'https://' . $this->prefix . '/' . $this->dir . '/screenshot/normal/' . $this->id;
} else { } else {
$this->imageurl = ''; $this->imageurl = '';
} }
if ($mx->HasThumbnail) { if ($mx->HasThumbnail) {
$this->thumburl = 'https://' . $this->prefix . '.mania-exchange.com/' . $this->dir . '/thumbnail/' . $this->id; $this->thumburl = 'https://' . $this->prefix . '/' . $this->dir . '/thumbnail/' . $this->id;
} else { } else {
$this->thumburl = ''; $this->thumburl = '';
} }
if ($this->prefix === 'tm' && $this->replayid > 0) { if ($this->prefix === 'tm' && $this->replayid > 0) {
$this->replayurl = 'https://' . $this->prefix . '.mania-exchange.com/replays/download/' . $this->replayid; $this->replayurl = 'https://' . $this->prefix . '/replays/download/' . $this->replayid;
} else { } else {
$this->replayurl = ''; $this->replayurl = '';
} }

View File

@ -160,11 +160,19 @@ class ManiaExchangeManager implements UsageInformationAble {
* @param string $string * @param string $string
*/ */
public function fetchMaplistByMixedUidIdString($string) { public function fetchMaplistByMixedUidIdString($string) {
// Get Title Prefix
$titlePrefix = $this->maniaControl->getMapManager()->getCurrentMap()->getGame();
// For TM2020
if ($this->maniaControl->getServer()->titleId == "Trackmania") {
// Get Title Prefix
$titlePrefix = "trackmania.exchange";
} else {
// Get Title Prefix
$titlePrefix = $this->maniaControl->getMapManager()->getCurrentMap()->getGame() . ".mania-exchange.com";
}
// compile search URL // compile search URL
$url = "https://api.mania-exchange.com/{$titlePrefix}/maps/?ids={$string}"; $url = "https://{$titlePrefix}/api/maps/get_map_info/multi/{$string}";
/*if ($key = $this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_MX_KEY)) { /*if ($key = $this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_MX_KEY)) {
$url .= "&key=" . $key; $url .= "&key=" . $key;
@ -261,11 +269,18 @@ class ManiaExchangeManager implements UsageInformationAble {
* @param callable $function * @param callable $function
*/ */
public function fetchMapInfo($mapId, callable $function) { public function fetchMapInfo($mapId, callable $function) {
// For TM2020
if ($this->maniaControl->getServer()->titleId == "Trackmania") {
// Get Title Prefix // Get Title Prefix
$titlePrefix = $this->maniaControl->getMapManager()->getCurrentMap()->getGame(); $titlePrefix = "trackmania.exchange";
} else {
// Get Title Prefix
$titlePrefix = $this->maniaControl->getMapManager()->getCurrentMap()->getGame() . ".mania-exchange.com";
}
// compile search URL // compile search URL
$url = 'https://api.mania-exchange.com/' . $titlePrefix . '/maps/?ids=' . $mapId; $url = "https://{$titlePrefix}/api/maps/get_map_info/multi/{$mapId}";
/*if ($key = $this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_MX_KEY)) { /*if ($key = $this->maniaControl->getSettingManager()->getSettingValue($this, self::SETTING_MX_KEY)) {
$url .= "&key=" . $key; $url .= "&key=" . $key;
@ -292,8 +307,15 @@ class ManiaExchangeManager implements UsageInformationAble {
} }
/** /**
* @deprecated * @param callable $function
* @param string $name
* @param string $author
* @param string $env
* @param int $maxMapsReturned
* @param int $searchOrder
* @return bool
* @see \ManiaControl\ManiaExchange\ManiaExchangeMapSearch * @see \ManiaControl\ManiaExchange\ManiaExchangeMapSearch
* @deprecated
*/ */
public function getMapsAsync(callable $function, $name = '', $author = '', $env = '', $maxMapsReturned = 100, $searchOrder = ManiaExchangeMapSearch::SEARCH_ORDER_UPDATED_NEWEST) { public function getMapsAsync(callable $function, $name = '', $author = '', $env = '', $maxMapsReturned = 100, $searchOrder = ManiaExchangeMapSearch::SEARCH_ORDER_UPDATED_NEWEST) {
$this->fetchMapsAsync($function, $name, $author, $env, $maxMapsReturned, $searchOrder); $this->fetchMapsAsync($function, $name, $author, $env, $maxMapsReturned, $searchOrder);
@ -308,7 +330,7 @@ class ManiaExchangeManager implements UsageInformationAble {
* @param string $author * @param string $author
* @param string $env * @param string $env
* @param int $maxMapsReturned * @param int $maxMapsReturned
* @param int $searchOrder * @param int $sortOrder
* @deprecated * @deprecated
* @see \ManiaControl\ManiaExchange\ManiaExchangeMapSearch * @see \ManiaControl\ManiaExchange\ManiaExchangeMapSearch
*/ */

View File

@ -100,10 +100,15 @@ class ManiaExchangeMapSearch implements UsageInformationAble {
public function __construct(ManiaControl $maniaControl) { public function __construct(ManiaControl $maniaControl) {
$this->maniaControl = $maniaControl; $this->maniaControl = $maniaControl;
$this->titlePrefix = $this->maniaControl->getMapManager()->getCurrentMap()->getGame(); // For TM2020
if ($this->maniaControl->getServer()->titleId == "Trackmania")
{
$this->titlePrefix = "trackmania.exchange";
$this->url = 'https://trackmania.exchange/tracksearch2/search?api=on';
}else {
$this->titlePrefix = $this->maniaControl->getMapManager()->getCurrentMap()->getGame() . '.mania-exchange.com';
$this->url = 'https://' . $this->titlePrefix . '.mania-exchange.com/tracksearch2/search?api=on'; $this->url = 'https://' . $this->titlePrefix . '.mania-exchange.com/tracksearch2/search?api=on';
}
/*if ($key = $this->maniaControl->getSettingManager()->getSettingValue($this->maniaControl->getMapManager()->getMXManager(), ManiaExchangeManager::SETTING_MX_KEY)) { /*if ($key = $this->maniaControl->getSettingManager()->getSettingValue($this->maniaControl->getMapManager()->getMXManager(), ManiaExchangeManager::SETTING_MX_KEY)) {
$this->url .= "&key=" . $key; $this->url .= "&key=" . $key;
}*/ }*/
@ -160,7 +165,7 @@ class ManiaExchangeMapSearch implements UsageInformationAble {
$parameters .= "&tpack=" . urlencode($this->titlePack); $parameters .= "&tpack=" . urlencode($this->titlePack);
} }
if ($this->replayType) { if ($this->replayType) {
$parameters .= "&rytpe=" . $this->replayType; $parameters .= "&rtype=" . $this->replayType;
} }
if ($this->style) { if ($this->style) {
$parameters .= "&style=" . $this->style; $parameters .= "&style=" . $this->style;