code: def start_discovery(add_callback=None, remove_callback=None):
      
      listener = CastListener(add_callback, remove_callback)
      service_browser = False
      try:
          service_browser = zeroconf.ServiceBrowser(zeroconf.Zeroconf(),
                                                    "_googlecast._tcp.local.",
                                                    listener)
      except (zeroconf.BadTypeInNameException,
              NotImplementedError,
              OSError,
              socket.error,
              zeroconf.NonUniqueNameException):
          pass
  
      return listener, service_browser
docs: Start discovering chromecasts on the network.
  
      This method will start discovering chromecasts on a separate thread. When
      a chromecast is discovered, the callback will be called with the
      discovered chromecast's zeroconf name. This is the dictionary key to find
      the chromecast metadata in listener.services.
  
      This method returns the CastListener object and the zeroconf ServiceBrowser
      object. The CastListener object will contain information for the discovered
      chromecasts. To stop discovery, call the stop_discovery method with the
      ServiceBrowser object.