Get basepath from Media source by id?

IS there a way to get the basepath form a media source in a snippet?
I’m using Image+ and need to get the image URL including the path of the media source it uses.
I only know the media source ID so what is the quickest way to get the PATH form a media source?
TNX
RDG

the snippet addmediasourcepath from here could do that
https://docs.modx.com/extras/revo/migxdb/migxdb.tutorials/migxdb.create-a-basic-gallery-management-from-scratch-with-migxdb/add-resource-specific-mediasource-and-multifile-uploader-to-the-gallery

This might work (assuming that it’s a file media source object):

$ms = $modx->getObject('modFileMediaSource', $mediaSourceId);
$bases = $ms->getBases();

$absolutePath = $bases['pathAbsolute'];
$relativePath  = $bases['pathRelative'];

It might be more correct to call getObject() with the parent class if it works:

$ms = $modx->getObject('modMediaSource', $mediaSourceId);

Tnx Bobray,

that works

Here’s a half finished snippet to get media source attributes that might be useful.

Needs work but might provide a fast start for someone.

<?php
/**
 * getMediaSourceAttribute
 *
 * DESCRIPTION
 *
 * Gets specified attribute of specified media source id
 *
 * PROPERTIES:
 *
 * &msId: string, optional, id of media source to get attribute from, defaults to default media source
 * &attribute: string, required, attribute to get value for from media source.
 *          options: basePath, baseUrl, thumbnailQuality, skipFiles
 * 
 * DEPENDENCIES:
 * 
 * None
 *
 * USAGE:
 *
 * [[getMediaSourceAttribute?
 *   &attribute=`basePath`
 *   &msId=`2`
 * ]]
 *
 */

    // check we have $modx
    if (!isset($modx)) {
        $modx->log(modX::LOG_LEVEL_ERROR, '[getMediaSourceAttribute] $modx not set.');
        return;
    }
    // check we have $attribute
    if (!isset($attribute)) {
        $modx->log(modX::LOG_LEVEL_ERROR, '[getMediaSourceAttribute] $attribute not set.');
        return;
    }
    
    /***** only check msId is integer if was specified
    // if id not integer log error and exit
    if ( !filter_var($msId, FILTER_VALIDATE_INT) ) {
        $modx->log(modX::LOG_LEVEL_ERROR, '[getMediaSourceAttribute] &msId is not an integer.');
        return;
    }
    */
    
    /**
     * Get media source properties for default media source
     */
    
    // get id of default_media_source
    $default_media_source   = $modx->getOption('default_media_source');
    
    // get modMediaSource object using default_media_source id
    $obj_media_source       = $modx->getObject( 'modMediaSource', array( 'id' => $default_media_source ) );
    
    // get modMediaSource properties
    $ms_props               = $obj_media_source->get( 'properties' );
    $ms_basePath            = $ms_props[ 'basePath' ][ 'value' ];
    
    
    
    // figure what to return
    switch ($attribute){
    	case "basePath":
    		return $ms_basePath;
    		break;
    	default:
    	    $modx->log(modX::LOG_LEVEL_ERROR, '[getMediaSourceAttribute] switch could not find requested attribute: ' . $attribute);
    	    return;
    }

I’ve had to dig into media sources again for something I’m writing. I want to generate a link to edit a particular file in the Manager. The link is easy enough to write, but it requires the ID of the media source. It’s easy to get the media source’s basePath (relative or absolute) using the method I wrote about above.

Unfortunately, I haven’t found an easy way to start with the full path of the file and then get the ID of the media source containing the file. If anyone knows a way, I’d love to hear about it.