def detectCamera(): print("Camera::detectCamera()") try: cams = list() # Get the context of the camera. context = gp.Context() if hasattr(gp, 'gp_camera_autodetect'): # gphoto2 version 2.5+ cameras = context.camera_autodetect() else: port_info_list = gp.PortInfoList() port_info_list.load() abilities_list = gp.CameraAbilitiesList() abilities_list.load(context) cameras = abilities_list.detect(port_info_list, context) for name, port in cameras: cams.append({"name" : name, "port" : port}) return(cams) except Exception as e: print("Error occured in Camera::detectCamera()") print(str(e))
def _get_available_cameras_raw(): """ Use gphoto2 autodetect functionality to get list of available cameras :return: list of cameras :rtype: gphoto2.CameraList of values like "['Canon EOS 1000D', 'usb:002,007']" """ port_info_list = gp.PortInfoList() port_info_list.load() abilities_list = gp.CameraAbilitiesList() abilities_list.load() cameras = abilities_list.detect(port_info_list) return cameras
def camera_connected(): """Return the list of connected camera compatible with gPhoto2. """ if hasattr(gp, 'gp_camera_autodetect'): # gPhoto2 version 2.5+ cameras = gp.check_result(gp.gp_camera_autodetect()) else: port_info_list = gp.PortInfoList() port_info_list.load() abilities_list = gp.CameraAbilitiesList() abilities_list.load() cameras = abilities_list.detect(port_info_list) return cameras
def _select_camera(self, model, port_name) -> None: # Code from Jim Easterbrook's Photoini # initialise camera self.camera = gp.Camera() # search abilities for camera model abilities_list = gp.CameraAbilitiesList() abilities_list.load(self.context) idx = abilities_list.lookup_model(str(model)) self.camera.set_abilities(abilities_list[idx]) # search ports for camera port name port_info_list = gp.PortInfoList() port_info_list.load() idx = port_info_list.lookup_path(str(port_name)) self.camera.set_port_info(port_info_list[idx])
def gp_camera_connected(): """Return True if a camera compatible with gPhoto2 is found. """ if not gp: return False # gPhoto2 is not installed if hasattr(gp, 'gp_camera_autodetect'): # gPhoto2 version 2.5+ cameras = gp.check_result(gp.gp_camera_autodetect()) else: port_info_list = gp.PortInfoList() port_info_list.load() abilities_list = gp.CameraAbilitiesList() abilities_list.load() cameras = abilities_list.detect(port_info_list) if cameras: return True return False
def get_gp_camera_proxy(port=None): """Return camera proxy if a gPhoto2 compatible camera is found else return None. .. note:: try to kill any process using gPhoto2 as it may block camera access. :param port: look on given port number :type port: str """ if not gp: return None # gPhoto2 is not installed pkill('*gphoto2*') if hasattr(gp, 'gp_camera_autodetect'): # gPhoto2 version 2.5+ cameras = gp.check_result(gp.gp_camera_autodetect()) else: port_info_list = gp.PortInfoList() port_info_list.load() abilities_list = gp.CameraAbilitiesList() abilities_list.load() cameras = abilities_list.detect(port_info_list) if cameras: LOGGER.debug("Found gPhoto2 cameras on ports: '%s'", "' / '".join([p for _, p in cameras])) # Initialize first camera proxy and return it camera = gp.Camera() if port is not None: port_info_list = gp.PortInfoList() port_info_list.load() idx = port_info_list.lookup_path(port) camera.set_port_info(port_info_list[idx]) try: camera.init() return camera except gp.GPhoto2Error as ex: LOGGER.warning("Could not connect gPhoto2 camera: %s", ex) return None
def main(): logging.basicConfig(format='%(levelname)s: %(name)s: %(message)s', level=logging.WARNING) gp.check_result(gp.use_python_logging()) if hasattr(gp, 'gp_camera_autodetect'): # gphoto2 version 2.5+ cameras = gp.check_result(gp.gp_camera_autodetect()) else: port_info_list = gp.PortInfoList() port_info_list.load() abilities_list = gp.CameraAbilitiesList() abilities_list.load() cameras = abilities_list.detect(port_info_list) n = 0 for name, value in cameras: print('camera number', n) print('===============') print(name) print(value) print n += 1 return 0