code: def read_frame_losc(channels, start_time, end_time):
      
      from pycbc.frame import read_frame
      if not isinstance(channels, list):
          channels = [channels]
      ifos = [c[0:2] for c in channels]
      urls = {}
      for ifo in ifos:
          urls[ifo] = losc_frame_urls(ifo, start_time, end_time)
          if len(urls[ifo]) == 0:
              raise ValueError("No data found for %s so we "
                               "can't produce a time series" % ifo)
  
      fnames = {ifo:[] for ifo in ifos}
      for ifo in ifos:
          for url in urls[ifo]:
              fname = download_file(url, cache=True)
              fnames[ifo].append(fname)
  
      ts = [read_frame(fnames[channel[0:2]], channel,
             start_time=start_time, end_time=end_time) for channel in channels]
      if len(ts) == 1:
          return ts[0]
      else:
          return ts
docs: Read channels from losc data
  
      Parameters
      ----------
      channels: str or list
          The channel name to read or list of channel names.
      start_time: int
          The gps time in GPS seconds
      end_time: int
          The end time in GPS seconds
  
      Returns
      -------
      ts: TimeSeries
          Returns a timeseries or list of timeseries with the requested data.