def main(): """ """ # Connect and get db and collection handle try: c, dbh = mdb.getHandle(p.dbHost, p.dbPort, p.db, p.dbUser, p.dbPassword) collectionHandle = dbh[p.camsCollection] except: logging.critical("DB connection Failed", exc_info=True) # Get the feed content feedContent = hitFeed(p.feedUrl) if not feedContent: logging.critical("** SCRIPT EXIT **\n%s\n\n" % ("=" * 52)) sys.exit() # Break out the content into head and items header, rootUrl, cameras = extractContent(feedContent) if not header or not rootUrl or not cameras: logging.critical("** SCRIPT EXIT **\n%s\n\n" % ("=" * 52)) sys.exit() # Build the camera root URL rootUrl = p.tflDomain + rootUrl fc = feedChannel(header) # Deal with each of the items for camera in cameras: # Build an 'item' object based on the RSS item item = feedItem(fc, camera, rootUrl) item.buildGeoJson() # Insert the document into mongo response = mongoInsert(collectionHandle, item)
def testfeedItemFunctions(self): ''' Test the instantiation of each feed item (camera)''' parent = os.getcwd() dataDir = os.path.join(parent, 'feedTestResources') fxml = open(os.path.join(dataDir, 'jamCamsv2.xml'), 'r') data = fxml.read() errors, header, rootUrl, cameras = baseUtils.extractContent(data) fc = baseObjects.feedChannel(header) fi = baseObjects.feedItem(fc, cameras[1], rootUrl) self.assertEquals(fi.source, 'transport for london') self.assertEquals(fi.title, 'tfl traffic cameras') self.assertEquals(fi.pubDate, datetime.datetime(2012,10,1,20,15,20)) self.assertEquals(fi.copyright, 'transport for london') # New - item specific elements self.assertEquals(fi.camTitle, 'ram st/barchard st') self.assertEquals(fi.camCorridor, 'a205') self.assertEquals(fi.camLink, '/tfl/livetravelnews/trafficcams/cctv/0000102645.jpg') self.assertEquals(fi.camCurrentView, 'ram st n/b') self.assertEquals(fi.camId, '0000102645') self.assertAlmostEquals(fi.camGeo[0], -0.1920207, 4) self.assertAlmostEquals(fi.camGeo[1], 51.458282, 4) self.assertEquals(fi.camCaptureTime, datetime.datetime(2012,10,01,20,13,38))