Print overall summary of all queries
(self, results: list[dict[str, Any]])
| 140 | return results |
| 141 | |
| 142 | def print_summary(self, results: list[dict[str, Any]]): |
| 143 | """Print overall summary of all queries""" |
| 144 | print("\n" + "="*80) |
| 145 | print("OVERALL SUMMARY") |
| 146 | print("="*80) |
| 147 | |
| 148 | total_queries = len(results) |
| 149 | successful_queries = len([r for r in results if 'error' not in r]) |
| 150 | |
| 151 | print(f"Total queries run: {total_queries}") |
| 152 | print(f"Successful queries: {successful_queries}") |
| 153 | |
| 154 | if successful_queries > 0: |
| 155 | # Aggregate statistics |
| 156 | total_results = sum(r.get('total_results', 0) for r in results if 'error' not in r) |
| 157 | total_unique = sum(r.get('unique_results', 0) for r in results if 'error' not in r) |
| 158 | total_duplicates = sum(r.get('duplicate_count', 0) for r in results if 'error' not in r) |
| 159 | |
| 160 | print("\nAggregate statistics:") |
| 161 | print(f" Total results across all queries: {total_results}") |
| 162 | print(f" Total unique results: {total_unique}") |
| 163 | print(f" Total duplicates: {total_duplicates}") |
| 164 | |
| 165 | # Aggregate by source |
| 166 | all_sources = {} |
| 167 | for r in results: |
| 168 | if 'error' not in r and 'results_by_source' in r: |
| 169 | for source, count in r['results_by_source'].items(): |
| 170 | if source not in all_sources: |
| 171 | all_sources[source] = 0 |
| 172 | all_sources[source] += count |
| 173 | |
| 174 | if all_sources: |
| 175 | print("\nTotal results by source across all queries:") |
| 176 | for source, count in sorted(all_sources.items()): |
| 177 | print(f" - {source}: {count}") |
| 178 | |
| 179 | |
| 180 | async def load_rss_feed(rss_url: str, site_name: str | None = None, use_subprocess: bool = True): |