{"id":16749370,"url":"https://github.com/jjasghar/rss_feed","last_synced_at":"2025-09-02T04:04:23.248Z","repository":{"id":213992533,"uuid":"735434103","full_name":"jjasghar/rss_feed","owner":"jjasghar","description":"My RSS feed site.","archived":false,"fork":false,"pushed_at":"2025-09-02T04:02:21.000Z","size":8679,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-09-02T04:03:37.253Z","etag":null,"topics":["python","rss","single-page-app"],"latest_commit_sha":null,"homepage":"https://jjasghar.github.io/rss_feed/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jjasghar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-12-24T23:16:23.000Z","updated_at":"2025-09-02T04:02:25.000Z","dependencies_parsed_at":"2024-04-15T02:29:28.355Z","dependency_job_id":"7144f1f0-cd64-4a9b-a0b1-1617ad7a8130","html_url":"https://github.com/jjasghar/rss_feed","commit_stats":null,"previous_names":["jjasghar/rss_feed"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jjasghar/rss_feed","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jjasghar%2Frss_feed","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jjasghar%2Frss_feed/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jjasghar%2Frss_feed/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jjasghar%2Frss_feed/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jjasghar","download_url":"https://codeload.github.com/jjasghar/rss_feed/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jjasghar%2Frss_feed/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273227971,"owners_count":25067691,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-02T02:00:09.530Z","response_time":77,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["python","rss","single-page-app"],"created_at":"2024-10-13T02:24:41.222Z","updated_at":"2025-09-02T04:04:23.228Z","avatar_url":"https://github.com/jjasghar.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📰 Personal RSS News Aggregator\n\nA beautiful, newspaper-style RSS feed aggregator that automatically creates a personalized news digest with images, categorized sections, and hourly updates. Each run generates a randomly named newspaper for a fun, personalized experience!\n\n## ✨ Features\n\n- **🕐 Hourly Updates**: Automatically fetches fresh content every hour via GitHub Actions\n- **📰 Authentic Newspaper Design**: Traditional newspaper layout with columns, typography, and styling\n- **🎲 Random Names**: Each update gets a cute, randomly generated newspaper name\n- **🖼️ Smart Image Extraction**: Automatically finds and displays article images\n- **🎯 Categorized Sections**: Breaking news (red highlight), technology, development, security, lifestyle\n- **📱 Fully Responsive**: Beautiful on desktop, tablet, and mobile\n- **🔗 Smooth Navigation**: Jump between sections with smooth scrolling\n- **📊 Statistics Tracking**: Articles, sources, and image counts\n- **⚡ Fast \u0026 Reliable**: Timeout handling and error recovery\n\n## 🚀 Quick Start (Fork This Repo)\n\n### 1. Fork \u0026 Clone\n```bash\n# Fork this repository on GitHub, then:\ngit clone https://github.com/YOUR-USERNAME/rss_feed.git\ncd rss_feed\n```\n\n### 2. Set Up Virtual Environment\n```bash\n# Create virtual environment\npython3 -m venv venv\nsource venv/bin/activate  # On Windows: venv\\Scripts\\activate\n\n# Install dependencies\npip install -r requirements.txt\n```\n\n### 3. Test Locally\n```bash\n# Generate your first news digest\npython feeds.py feeds.yaml temp.db \u003e feeds.md\n\n# Start local server\npython3 -m http.server 8000\n\n# Open http://localhost:8000 in your browser\n```\n\n### 4. Set Up GitHub Actions (Automated Updates)\n\n#### A. Create GitHub Token\n1. Go to GitHub Settings → Developer settings → Personal access tokens → Tokens (classic)\n2. Generate new token with `repo` permissions\n3. Copy the token\n\n#### B. Add Secret to Your Repo\n1. In your forked repo: Settings → Secrets and variables → Actions\n2. Click \"New repository secret\"\n3. Name: `GH_TOKEN`\n4. Value: Your personal access token\n5. Click \"Add secret\"\n\n#### C. Enable GitHub Pages\n1. Settings → Pages\n2. Source: \"Deploy from a branch\"\n3. Branch: `main` / `(root)`\n4. Save\n\n🎉 **Done!** Your RSS aggregator will now update every hour and be live at:\n`https://YOUR-USERNAME.github.io/rss_feed`\n\n## 🎨 Customization Guide\n\n### Add Your Own RSS Feeds\n\nEdit `feeds.yaml` to add your favorite sources:\n\n```yaml\n# Your custom feed\n-   url: https://your-favorite-site.com/rss\n    freq: 1                    # How often to check (1 = every time)\n    icon: fa-newspaper         # Font Awesome icon\n    title: Your Site Name\n    category: breaking         # breaking, tech, dev, security, lifestyle, general\n```\n\n### Popular RSS Feeds to Add\n\n**News Sources:**\n```yaml\n-   url: https://rss.cnn.com/rss/edition.rss\n    icon: fa-globe\n    category: breaking\n\n-   url: https://feeds.washingtonpost.com/rss/world\n    icon: fa-newspaper  \n    category: breaking\n```\n\n**Tech Blogs:**\n```yaml\n-   url: https://feeds.arstechnica.com/arstechnica/index\n    icon: fa-microchip\n    category: tech\n\n-   url: https://rss.slashdot.org/Slashdot/slashdotMain\n    icon: fa-comments\n    category: tech\n```\n\n### Customize Newspaper Names\n\nEdit the `NEWSPAPER_NAMES` list in `feeds.py`:\n\n```python\nNEWSPAPER_NAMES = [\n    \"📰 Your Custom Herald\",\n    \"🗞️ Daily Tech Digest\",\n    \"📰 The Code Chronicle\",\n    # Add your own creative names!\n]\n```\n\n### Modify Update Frequency\n\nEdit `.github/workflows/actions.yml`:\n\n```yaml\nschedule:\n  - cron: '0 */2 * * *'  # Every 2 hours\n  - cron: '0 8,20 * * *' # 8 AM and 8 PM daily\n```\n\n### Style Customization\n\nEdit `feeds.css` to change colors, fonts, or layout:\n\n```css\n/* Change breaking news color */\n.breaking-news .section-header {\n    background: #your-color;\n}\n\n/* Modify newspaper title font */\n.newspaper-title {\n    font-family: 'Your-Font', serif;\n    font-size: 4em;\n}\n```\n\n## 🔧 Advanced Configuration\n\n### Environment Variables\n\nCreate a `.env` file for custom settings:\n\n```bash\nNEWSPAPER_TITLE=\"My Custom News\"\nUPDATE_FREQUENCY=\"hourly\"\nMAX_ARTICLES_PER_SECTION=20\n```\n\n### Custom Categories\n\nAdd new categories by editing both `feeds.py` and `feeds.css`:\n\n```python\n# In feeds.py - category_info dictionary\n'science': ('🔬 Science', 'science-news'),\n```\n\n```css\n/* In feeds.css */\n.science-news .section-header {\n    background: #27ae60;\n}\n```\n\n### Image Settings\n\nModify image extraction in `feeds.py`:\n\n```python\n# Change image size in feeds.css\n.story-image {\n    width: 100px;    # Make larger\n    height: 75px;\n}\n```\n\n## 📱 Deployment Options\n\n### GitHub Pages (Recommended)\n- Automatic with the included GitHub Action\n- Free hosting\n- Custom domain support\n\n### Netlify\n```bash\n# Connect your GitHub repo to Netlify\n# Deploy command: python feeds.py feeds.yaml temp.db \u003e feeds.md\n# Publish directory: ./\n```\n\n### Vercel\n```bash\n# Add vercel.json:\n{\n  \"functions\": {\n    \"feeds.py\": {\n      \"runtime\": \"python3.9\"\n    }\n  }\n}\n```\n\n## 🛠️ Troubleshooting\n\n### GitHub Action Not Running?\n- Check if `GH_TOKEN` secret is set correctly\n- Verify the token has `repo` permissions\n- Check Actions tab for error logs\n\n### Feeds Not Loading?\n- Some RSS feeds block automated requests\n- Check feed URL validity\n- Increase timeout in `feeds.py`\n\n### Images Not Showing?\n- Some sites block hotlinking\n- Images may have authentication requirements\n- Check browser console for CORS errors\n\n### Local Development Issues?\n```bash\n# Common fixes:\npip install --upgrade pip\npip install -r requirements.txt --force-reinstall\npython3 -m venv venv --clear  # Reset virtual environment\n```\n\n## 🎯 Performance Tips\n\n- **Reduce Feed Frequency**: Set `freq: 2` for less important feeds\n- **Limit Articles**: Decrease `MAX_ARTICLES_PER_SECTION`\n- **Optimize Images**: Consider using a CDN for image proxying\n- **Cache Control**: Implement browser caching headers\n\n## 📊 Analytics \u0026 Monitoring\n\nAdd analytics to `index.html`:\n\n```html\n\u003c!-- Google Analytics --\u003e\n\u003cscript async src=\"https://www.googletagmanager.com/gtag/js?id=GA_MEASUREMENT_ID\"\u003e\u003c/script\u003e\n\u003cscript\u003e\n  window.dataLayer = window.dataLayer || [];\n  function gtag(){dataLayer.push(arguments);}\n  gtag('js', new Date());\n  gtag('config', 'GA_MEASUREMENT_ID');\n\u003c/script\u003e\n```\n\n## 🤝 Contributing\n\n1. Fork the repository\n2. Create a feature branch: `git checkout -b amazing-feature`\n3. Commit changes: `git commit -m 'Add amazing feature'`\n4. Push to branch: `git push origin amazing-feature`\n5. Open a Pull Request\n\n## 📄 License\n\nMIT License - feel free to use, modify, and distribute!\n\n## 🆘 Support\n\n- **Issues**: [GitHub Issues](https://github.com/jjasghar/rss_feed/issues)\n- **Discussions**: [GitHub Discussions](https://github.com/jjasghar/rss_feed/discussions)\n- **Email**: Open an issue instead for community benefit\n\n## 🎉 Showcase\n\nShare your customized RSS aggregator! Tag us or open a discussion to show off your news site.\n\n---\n\n**Built with ❤️ using Python, RSS feeds, and GitHub Actions**\n\n### Recent Updates\n- ✅ Added random newspaper names\n- ✅ Smart image extraction from RSS feeds  \n- ✅ Mobile-responsive newspaper design\n- ✅ Comprehensive fork \u0026 customization guide\n- ✅ Advanced deployment options\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjjasghar%2Frss_feed","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjjasghar%2Frss_feed","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjjasghar%2Frss_feed/lists"}