kopia lustrzana https://github.com/dgtlmoon/changedetection.io
				
				
				
			Fixing first history/preview save issue (First version after an error, on the first check, wasnt available) (#2494)
							rodzic
							
								
									6f2186b442
								
							
						
					
					
						commit
						a9f10946f4
					
				| 
						 | 
					@ -497,13 +497,6 @@ class update_worker(threading.Thread):
 | 
				
			||||||
                    #
 | 
					                    #
 | 
				
			||||||
                    # Different exceptions mean that we may or may not want to bump the snapshot, trigger notifications etc
 | 
					                    # Different exceptions mean that we may or may not want to bump the snapshot, trigger notifications etc
 | 
				
			||||||
                    if process_changedetection_results:
 | 
					                    if process_changedetection_results:
 | 
				
			||||||
                        # Always save the screenshot if it's available
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                        if update_handler.screenshot:
 | 
					 | 
				
			||||||
                            watch.save_screenshot(screenshot=update_handler.screenshot)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                        if update_handler.xpath_data:
 | 
					 | 
				
			||||||
                            watch.save_xpath_data(data=update_handler.xpath_data)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        # Extract <title> as title if possible/requested.
 | 
					                        # Extract <title> as title if possible/requested.
 | 
				
			||||||
                        if self.datastore.data['settings']['application'].get('extract_title_as_title') or watch['extract_title_as_title']:
 | 
					                        if self.datastore.data['settings']['application'].get('extract_title_as_title') or watch['extract_title_as_title']:
 | 
				
			||||||
| 
						 | 
					@ -515,12 +508,19 @@ class update_worker(threading.Thread):
 | 
				
			||||||
                                    logger.warning(f"UUID: {uuid} Extract <title> as watch title was enabled, but couldn't find a <title>.")
 | 
					                                    logger.warning(f"UUID: {uuid} Extract <title> as watch title was enabled, but couldn't find a <title>.")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        # Now update after running everything
 | 
					                        # Now update after running everything
 | 
				
			||||||
 | 
					                        timestamp = round(time.time())
 | 
				
			||||||
                        try:
 | 
					                        try:
 | 
				
			||||||
                            self.datastore.update_watch(uuid=uuid, update_obj=update_obj)
 | 
					                            self.datastore.update_watch(uuid=uuid, update_obj=update_obj)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            # Also save the snapshot on the first time checked
 | 
					
 | 
				
			||||||
                            if changed_detected or not watch.get('last_checked'):
 | 
					                            # Also save the snapshot on the first time checked, "last checked" will always be updated, so we just check history length.
 | 
				
			||||||
                                timestamp = round(time.time())
 | 
					                            if changed_detected or not watch.history_n:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                if update_handler.screenshot:
 | 
				
			||||||
 | 
					                                    watch.save_screenshot(screenshot=update_handler.screenshot)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                if update_handler.xpath_data:
 | 
				
			||||||
 | 
					                                    watch.save_xpath_data(data=update_handler.xpath_data)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                # Small hack so that we sleep just enough to allow 1 second  between history snapshots
 | 
					                                # Small hack so that we sleep just enough to allow 1 second  between history snapshots
 | 
				
			||||||
                                # this is because history.txt indexes/keys snapshots by epoch seconds and we dont want dupe keys
 | 
					                                # this is because history.txt indexes/keys snapshots by epoch seconds and we dont want dupe keys
 | 
				
			||||||
| 
						 | 
					@ -538,15 +538,11 @@ class update_worker(threading.Thread):
 | 
				
			||||||
                                if update_handler.fetcher.content:
 | 
					                                if update_handler.fetcher.content:
 | 
				
			||||||
                                    watch.save_last_fetched_html(contents=update_handler.fetcher.content, timestamp=timestamp)
 | 
					                                    watch.save_last_fetched_html(contents=update_handler.fetcher.content, timestamp=timestamp)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            # A change was detected
 | 
					 | 
				
			||||||
                            if changed_detected:
 | 
					 | 
				
			||||||
                                # Notifications should only trigger on the second time (first time, we gather the initial snapshot)
 | 
					                                # Notifications should only trigger on the second time (first time, we gather the initial snapshot)
 | 
				
			||||||
                                if watch.history_n >= 2:
 | 
					                                if watch.history_n >= 2:
 | 
				
			||||||
                                    logger.info(f"Change detected in UUID {uuid} - {watch['url']}")
 | 
					                                    logger.info(f"Change detected in UUID {uuid} - {watch['url']}")
 | 
				
			||||||
                                    if not watch.get('notification_muted'):
 | 
					                                    if not watch.get('notification_muted'):
 | 
				
			||||||
                                        self.send_content_changed_notification(watch_uuid=uuid)
 | 
					                                        self.send_content_changed_notification(watch_uuid=uuid)
 | 
				
			||||||
                                else:
 | 
					 | 
				
			||||||
                                    logger.info(f"Change triggered in UUID {uuid} due to first history saving (no notifications sent) - {watch['url']}")
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        except Exception as e:
 | 
					                        except Exception as e:
 | 
				
			||||||
                            # Catch everything possible here, so that if a worker crashes, we don't lose it until restart!
 | 
					                            # Catch everything possible here, so that if a worker crashes, we don't lose it until restart!
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Ładowanie…
	
		Reference in New Issue