@@ -2002,6 +2002,27 @@ static int get_track_entry(int item, int action, void *arg, void *ctx)
2002
2002
2003
2003
char * external_path = mp_normalize_user_path (mpctx , mpctx -> global ,
2004
2004
track -> external_filename );
2005
+ char * external_filename = NULL ;
2006
+ char * external_filename_no_ext = NULL ;
2007
+
2008
+ char * path_dup = talloc_strdup (NULL , external_path );
2009
+ if (path_dup ) {
2010
+ if (mp_is_url (bstr0 (path_dup )))
2011
+ mp_url_unescape_inplace (path_dup );
2012
+ char * basename = (char * )mp_basename (path_dup );
2013
+ external_filename = talloc_strdup (NULL , basename );
2014
+ talloc_free (path_dup );
2015
+ }
2016
+
2017
+ char * filename_dup = talloc_strdup (NULL , external_filename );
2018
+ if (filename_dup ) {
2019
+ bstr root ;
2020
+ if (mp_splitext (filename_dup , & root )) {
2021
+ char * no_ext = bstrto0 (filename_dup , root );
2022
+ external_filename_no_ext = talloc_strdup (NULL , no_ext );
2023
+ }
2024
+ talloc_free (filename_dup );
2025
+ }
2005
2026
2006
2027
struct mp_codec_params p =
2007
2028
track -> stream ? * track -> stream -> codec : (struct mp_codec_params ){0 };
@@ -2054,6 +2075,10 @@ static int get_track_entry(int item, int action, void *arg, void *ctx)
2054
2075
{"external" , SUB_PROP_BOOL (track -> is_external )},
2055
2076
{"selected" , SUB_PROP_BOOL (track -> selected )},
2056
2077
{"main-selection" , SUB_PROP_INT (order ), .unavailable = order < 0 },
2078
+ {"external-filename" , SUB_PROP_STR (external_filename ),
2079
+ .unavailable = !external_filename },
2080
+ {"external-filename/no-ext" , SUB_PROP_STR (external_filename_no_ext ),
2081
+ .unavailable = !external_filename_no_ext },
2057
2082
{"external-path" , SUB_PROP_STR (external_path ),
2058
2083
.unavailable = !external_path },
2059
2084
{"ff-index" , SUB_PROP_INT (track -> ff_index )},
@@ -2129,6 +2154,8 @@ static int get_track_entry(int item, int action, void *arg, void *ctx)
2129
2154
}
2130
2155
2131
2156
done :
2157
+ talloc_free (external_filename );
2158
+ talloc_free (external_filename_no_ext );
2132
2159
talloc_free (external_path );
2133
2160
talloc_free (tag_list );
2134
2161
return ret ;
0 commit comments