Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
("storage_id", ctypes.c_uint32),
("filename", ctypes.c_char_p),
("filesize", ctypes.c_uint64),
("filetype", ctypes.c_int),
("next", ctypes.POINTER(LIBMTP_File))]
class LIBMTP_Track(ctypes.Structure):
"""
LIBMTP_Track
Contains the ctypes structure for LIBMTP_track_t
"""
def __repr__(self):
return "%s - %s (%s)" % (self.artist, self.title, self.item_id)
LIBMTP_Track._fields_ = [("item_id", ctypes.c_uint32),
("parent_id", ctypes.c_uint32),
("storage_id", ctypes.c_uint32),
("title", ctypes.c_char_p),
("artist", ctypes.c_char_p),
("composer", ctypes.c_char_p),
("genre", ctypes.c_char_p),
("album", ctypes.c_char_p),
("date", ctypes.c_char_p),
("filename", ctypes.c_char_p),
("tracknumber", ctypes.c_uint16),
("duration", ctypes.c_uint32),
("samplerate", ctypes.c_uint32),
("nochannels", ctypes.c_uint16),
("wavecodec", ctypes.c_uint32),
("bitrate", ctypes.c_uint32),
("bitratetype", ctypes.c_uint16),
# ----------
# End Data Model Definitions
# ----------
# ----------
# Type Definitions
# ----------
_libmtp.LIBMTP_Get_Friendlyname.restype = ctypes.c_char_p
_libmtp.LIBMTP_Get_Serialnumber.restype = ctypes.c_char_p
_libmtp.LIBMTP_Get_Modelname.restype = ctypes.c_char_p
_libmtp.LIBMTP_Get_Manufacturername.restype = ctypes.c_char_p
_libmtp.LIBMTP_Get_Deviceversion.restype = ctypes.c_char_p
_libmtp.LIBMTP_Get_Filelisting_With_Callback.restype = ctypes.POINTER(LIBMTP_File)
_libmtp.LIBMTP_Get_Tracklisting_With_Callback.restype = ctypes.POINTER(LIBMTP_Track)
_libmtp.LIBMTP_Get_Filetype_Description.restype = ctypes.c_char_p
_libmtp.LIBMTP_Get_Filemetadata.restype = ctypes.POINTER(LIBMTP_File)
_libmtp.LIBMTP_Get_Trackmetadata.restype = ctypes.POINTER(LIBMTP_Track)
_libmtp.LIBMTP_Get_First_Device.restype = ctypes.POINTER(LIBMTP_MTPDevice)
_libmtp.LIBMTP_Get_Playlist_List.restype = ctypes.POINTER(LIBMTP_Playlist)
_libmtp.LIBMTP_Get_Playlist.restype = ctypes.POINTER(LIBMTP_Playlist)
_libmtp.LIBMTP_Get_Folder_List.restype = ctypes.POINTER(LIBMTP_Folder)
_libmtp.LIBMTP_Find_Folder.restype = ctypes.POINTER(LIBMTP_Folder)
_libmtp.LIBMTP_Get_Errorstack.restype = ctypes.POINTER(LIBMTP_Error)
# This is for callbacks with the type of LIBMTP_progressfunc_t
Progressfunc = ctypes.CFUNCTYPE(ctypes.c_void_p, ctypes.c_uint64, ctypes.c_uint64)
# ----------
# End Type Definitions
# ----------
def put_item(self, item):
'''
Transfers a track to the MTP device
'''
# Just for sanity
track = item.track
metadata = pymtp.LIBMTP_Track()
# Load the metadata from the track into a LIBMTP_Track for transfer
if (hasattr(track, 'artist')):
metadata.artist = track.artist
if (hasattr(track, 'title')):
metadata.title = track.title
if (hasattr(track, 'album')):
metadata.album = track.album
if (hasattr(track, 'track')):
metadata.tracknumber = track.track
if (hasattr(track, 'date')):
metadata.date = track.date
if (hasattr(track, 'genre')):
metadata.genre = track.genre
if (hasattr(track, '_len')):
# Convert length to milliseconds so the MTP device