updates to summarty
This commit is contained in:
@@ -1,11 +0,0 @@
|
||||
# Files Removed During Repository Cleanup
|
||||
|
||||
## Removed Files:
|
||||
- `example-docker-compose.yml` - Replaced with properly named `docker-compose.example.yml`
|
||||
- `example-multi-registry-workflow.yml` - Personal CI/CD workflow not needed for public repo
|
||||
|
||||
## Reason:
|
||||
These were development/CI artifacts that don't belong in a clean public webhook application repository.
|
||||
|
||||
## Result:
|
||||
Clean, focused NFOGuard webhook Docker application repository ready for public use.
|
||||
@@ -1,54 +0,0 @@
|
||||
# NFOGuard Webhook Repository - Final Clean Structure
|
||||
|
||||
After cleanup, the repository contains only essential files for the Docker webhook application.
|
||||
|
||||
## 📦 Core Application (6 files)
|
||||
```
|
||||
nfoguard.py # Main webhook server
|
||||
requirements.txt # Python dependencies
|
||||
Dockerfile # Container build
|
||||
VERSION # Version tracking
|
||||
LICENSE # MIT license
|
||||
bulk_update_movies.py # Utility for bulk library updates
|
||||
```
|
||||
|
||||
## 🗂️ Source Code Modules (8 files)
|
||||
```
|
||||
core/
|
||||
├── database.py # SQLite database management
|
||||
├── nfo_manager.py # NFO file creation and management
|
||||
├── path_mapper.py # Container path mapping
|
||||
└── logging.py # Logging configuration
|
||||
|
||||
clients/
|
||||
├── external_clients.py # TMDB, OMDb, TVDB, Jellyseerr APIs
|
||||
├── radarr_client.py # Radarr API client
|
||||
├── radarr_db_client.py # Radarr database client
|
||||
└── sonarr_client.py # Sonarr API client
|
||||
```
|
||||
|
||||
## 🐳 Docker & Configuration (3 files)
|
||||
```
|
||||
docker-compose.example.yml # Public example (industry standard naming)
|
||||
.env.template # Environment configuration template
|
||||
.env.secrets.template # API keys template (includes TVDB_API_KEY)
|
||||
```
|
||||
|
||||
## 📚 Documentation (6 files)
|
||||
```
|
||||
README.md # Main documentation (mentions companion plugin)
|
||||
CHANGELOG.md # Version history
|
||||
DEPLOYMENT.md # Deployment guide
|
||||
SETUP.md # Setup instructions
|
||||
TESTING.md # Testing guide
|
||||
SUMMARY.md # Project summary
|
||||
```
|
||||
|
||||
## 🎯 Total: 23 Essential Files
|
||||
- **No plugin artifacts** ✅
|
||||
- **No CI/development clutter** ✅
|
||||
- **No test files** ✅
|
||||
- **Industry standard naming** ✅
|
||||
- **Clean public webhook application** ✅
|
||||
|
||||
Perfect for end-users who want to deploy the NFOGuard webhook server!
|
||||
@@ -1,18 +0,0 @@
|
||||
# Files to Remove from NFOGuard Webhook Repository
|
||||
# These are CI/development artifacts that don't belong in the public webhook app repo
|
||||
|
||||
gitea-registry-troubleshooting.md
|
||||
gitea-packages-config.ini
|
||||
find-gitea-local-ip.sh
|
||||
example-multi-registry-workflow.yml
|
||||
example-docker-compose.yml
|
||||
example-distribution-README.md
|
||||
docker-compose.example.yml
|
||||
cleanup-github.sh
|
||||
check-gitea-registry.sh
|
||||
cleanup-files.sh
|
||||
|
||||
# You can remove them with:
|
||||
# git rm <filename>
|
||||
# or
|
||||
# rm <filename> && git add -u
|
||||
@@ -1,29 +0,0 @@
|
||||
# FINAL REPOSITORY CLEANUP
|
||||
# Remove these files for a clean public webhook repository
|
||||
|
||||
## CI/Development Artifacts (REMOVE):
|
||||
gitea-registry-troubleshooting.md
|
||||
gitea-packages-config.ini
|
||||
find-gitea-local-ip.sh
|
||||
example-distribution-README.md
|
||||
cleanup-github.sh
|
||||
check-gitea-registry.sh
|
||||
|
||||
## Test Files (REMOVE per user request):
|
||||
test_movie_scan.py
|
||||
test_end_to_end.py
|
||||
test_bulk_update.py
|
||||
|
||||
## Temporary Files Created During Cleanup (REMOVE):
|
||||
cleanup-files.sh
|
||||
FILES_TO_REMOVE.txt
|
||||
REPOSITORY_STRUCTURE.md
|
||||
CLEANUP_COMPLETE.md
|
||||
|
||||
## Summary Files - Keep One (REMOVE duplicate):
|
||||
# Keep: SUMMARY.md (shorter, more concise)
|
||||
# Remove: projectsummary.md (longer, more detailed)
|
||||
projectsummary.md
|
||||
|
||||
## Command to remove all:
|
||||
# rm gitea-registry-troubleshooting.md gitea-packages-config.ini find-gitea-local-ip.sh example-distribution-README.md cleanup-github.sh check-gitea-registry.sh test_movie_scan.py test_end_to_end.py test_bulk_update.py cleanup-files.sh FILES_TO_REMOVE.txt REPOSITORY_STRUCTURE.md CLEANUP_COMPLETE.md projectsummary.md
|
||||
@@ -1,62 +0,0 @@
|
||||
# NFOGuard Webhook Repository Structure
|
||||
|
||||
This document shows the clean structure for the NFOGuard webhook Docker application repository.
|
||||
|
||||
## Core Application Files
|
||||
```
|
||||
nfoguard.py # Main webhook server application
|
||||
requirements.txt # Python dependencies
|
||||
Dockerfile # Container build configuration
|
||||
VERSION # Version tracking
|
||||
```
|
||||
|
||||
## Source Code Modules
|
||||
```
|
||||
core/
|
||||
├── database.py # SQLite database management
|
||||
├── nfo_manager.py # NFO file creation and management
|
||||
├── path_mapper.py # Path mapping between containers
|
||||
└── logging.py # Logging configuration
|
||||
|
||||
clients/
|
||||
├── external_clients.py # TMDB, OMDb, TVDB, Jellyseerr API clients
|
||||
├── radarr_client.py # Radarr API client
|
||||
├── radarr_db_client.py # Radarr database client
|
||||
└── sonarr_client.py # Sonarr API client
|
||||
```
|
||||
|
||||
## Configuration & Deployment
|
||||
```
|
||||
docker-compose.yml # Public example docker-compose (uses published image)
|
||||
.env.template # Environment configuration template
|
||||
.env.secrets.template # API keys template (includes TVDB_API_KEY)
|
||||
```
|
||||
|
||||
## Documentation
|
||||
```
|
||||
README.md # Main documentation (mentions companion plugin)
|
||||
DEPLOYMENT.md # Deployment guide
|
||||
SETUP.md # Setup instructions
|
||||
TESTING.md # Testing guide
|
||||
CHANGELOG.md # Version history
|
||||
LICENSE # MIT license
|
||||
SUMMARY.md # Project summary
|
||||
projectsummary.md # Project overview
|
||||
```
|
||||
|
||||
## Development & Utilities
|
||||
```
|
||||
test_movie_scan.py # Movie scanning tests
|
||||
test_end_to_end.py # End-to-end integration tests
|
||||
test_bulk_update.py # Bulk update testing
|
||||
bulk_update_movies.py # Movie bulk update utility
|
||||
```
|
||||
|
||||
## Files NOT in Repository
|
||||
- Plugin source code (moved to NFOGuard-Emby-Plugin repo)
|
||||
- CI/registry configuration files
|
||||
- Build artifacts
|
||||
- Development docker-compose files
|
||||
- Registry troubleshooting files
|
||||
|
||||
## Total: Clean, focused webhook Docker application repository
|
||||
+140
-2
@@ -178,6 +178,144 @@ NFOguard/
|
||||
- **Plugin standards**: Modern SDK-style projects work better in WSL
|
||||
- **TimeLord insights**: Custom licensing systems are common but not required
|
||||
|
||||
## Latest Session Updates (2025-01-12 Part 2) - Repository Architecture & TVDB Integration
|
||||
|
||||
### Major Accomplishments - Repository Split ✅
|
||||
1. **✅ Repository Separation**: Split into focused repositories:
|
||||
- **NFOGuard (main)**: Clean webhook Docker application
|
||||
- **NFOGuard-Emby-Plugin**: Separate plugin development repository
|
||||
- **Rationale**: Different audiences, release cycles, and deployment methods
|
||||
|
||||
2. **✅ Repository Cleanup**: NFOGuard webhook repo cleaned for public use:
|
||||
- **Removed**: CI/development artifacts (gitea configs, test files)
|
||||
- **Kept**: 21 essential files (core app, docs, utilities)
|
||||
- **Docker**: Industry standard `docker-compose.example.yml`
|
||||
- **Configuration**: Updated `.env.secrets.template` with TVDB_API_KEY
|
||||
|
||||
### Critical Technical Improvement - TVDB Integration ✅
|
||||
3. **✅ Root Cause Fix**: Solved Emby NFO reading issues:
|
||||
- **Problem**: Emby showing "PremiereDate: NULL" despite valid NFO files
|
||||
- **Root Cause**: tvshow.nfo files only had IMDB IDs, but Emby's TVDB plugin expects numeric TVDB series IDs
|
||||
- **Solution**: Added TVDB v4 API integration for IMDB→TVDB ID conversion
|
||||
|
||||
4. **✅ TVDB Client Implementation**:
|
||||
```python
|
||||
# New TVDBClient class in external_clients.py
|
||||
def imdb_to_tvdb_series_id(self, imdb_id: str) -> Optional[str]:
|
||||
url = f"{self.base_url}/search/remoteid?remoteId={imdb_id}&type=series"
|
||||
```
|
||||
|
||||
5. **✅ Enhanced NFO Structure**: Updated tvshow.nfo creation:
|
||||
```xml
|
||||
<!-- Before (IMDB only - caused Emby failures) -->
|
||||
<uniqueid type="imdb" default="true">tt1234567</uniqueid>
|
||||
|
||||
<!-- After (TVDB + IMDB - Emby compatible) -->
|
||||
<uniqueid type="tvdb" default="true">12345</uniqueid>
|
||||
<uniqueid type="imdb">tt1234567</uniqueid>
|
||||
```
|
||||
|
||||
6. **✅ Docker Timezone Support**: Added configurable timezone via TZ environment variable
|
||||
- Users can set `TZ=Europe/London` in docker-compose for local timestamps
|
||||
|
||||
### Repository Structure Changes
|
||||
```
|
||||
# OLD - Monorepo
|
||||
NFOguard/
|
||||
├── NFOGuard.Emby.Plugin/ (plugin code)
|
||||
├── core/ (webhook code)
|
||||
├── decompiled-TimeLord/ (mixed reference)
|
||||
└── releases/ (mixed artifacts)
|
||||
|
||||
# NEW - Separated Repositories
|
||||
NFOguard/ (webhook only - 21 files)
|
||||
├── core/, clients/ (webhook application)
|
||||
├── docker-compose.example.yml (public example)
|
||||
├── nfoguard.py, requirements.txt, Dockerfile
|
||||
└── documentation (focused on webhook)
|
||||
|
||||
NFOGuard-Emby-Plugin/ (plugin only)
|
||||
├── NFOGuard.Emby.Plugin/ (C# source)
|
||||
├── EmbySDK/ (build dependencies)
|
||||
├── decompiled-TimeLord/ (reference code)
|
||||
├── releases/ (plugin DLL versions)
|
||||
└── documentation (focused on plugin)
|
||||
```
|
||||
|
||||
### Technical Impact
|
||||
- **Emby Compatibility**: TVDB IDs should resolve NFO reading issues
|
||||
- **User Experience**: Single docker-compose.example.yml for easy deployment
|
||||
- **Developer Experience**: Separate repos allow independent development
|
||||
- **Public Readiness**: Clean webhook repo ready for open source distribution
|
||||
|
||||
### Configuration Updates
|
||||
```bash
|
||||
# NEW - Added to .env.secrets.template
|
||||
TVDB_API_KEY=your_tvdb_api_key # Free registration at thetvdb.com
|
||||
```
|
||||
|
||||
### 🔄 TVDB Integration Reversion Guide (If Needed)
|
||||
|
||||
**If TVDB integration causes issues, here's how to revert:**
|
||||
|
||||
#### Files Modified for TVDB:
|
||||
1. **`clients/external_clients.py`**:
|
||||
```python
|
||||
# REVERT: Remove TVDBClient class (lines ~200-280)
|
||||
# REVERT: Remove from ExternalClientManager.__init__(): self.tvdb = TVDBClient()
|
||||
# REVERT: Remove get_tvdb_series_id() method
|
||||
```
|
||||
|
||||
2. **`core/nfo_manager.py`**:
|
||||
```python
|
||||
# REVERT: Change create_tvshow_nfo() back to single parameter:
|
||||
def create_tvshow_nfo(self, series_dir: Path, imdb_id: str): # Remove tvdb_id param
|
||||
|
||||
# REVERT: tvshow.nfo content back to IMDB-only:
|
||||
uniqueid_elements = [f' <uniqueid type="imdb" default="true">{imdb_id}</uniqueid>']
|
||||
```
|
||||
|
||||
3. **`nfoguard.py`** (3 locations):
|
||||
```python
|
||||
# REVERT: Remove TVDB lookup calls, change back to:
|
||||
self.nfo_manager.create_tvshow_nfo(series_path, imdb_id) # Remove tvdb_id param
|
||||
|
||||
# REVERT LOCATIONS:
|
||||
# - TV processor method (~line 450)
|
||||
# - Season processor method (~line 380)
|
||||
# - Targeted webhook processing (~line 520)
|
||||
```
|
||||
|
||||
4. **`.env.secrets.template`**:
|
||||
```bash
|
||||
# REVERT: Remove this line:
|
||||
TVDB_API_KEY=your_tvdb_api_key
|
||||
```
|
||||
|
||||
#### Quick Revert Commands:
|
||||
```bash
|
||||
# If you need to quickly revert TVDB integration:
|
||||
git log --oneline | grep -i tvdb # Find TVDB commits
|
||||
git revert <commit_hash> # Revert specific commits
|
||||
# OR
|
||||
git checkout <pre-tvdb-commit> -- clients/external_clients.py core/nfo_manager.py nfoguard.py .env.secrets.template
|
||||
```
|
||||
|
||||
#### Why You Might Need to Revert:
|
||||
- **TVDB API issues**: Rate limiting, authentication problems
|
||||
- **NFO compatibility**: Some media servers prefer IMDB-only uniqueids
|
||||
- **Performance**: TVDB lookups add API call overhead
|
||||
- **Dependency**: Removes external API dependency if not needed
|
||||
|
||||
#### Testing Strategy:
|
||||
1. **Test with TVDB first**: Deploy and check if Emby reads NFO files properly
|
||||
2. **Monitor logs**: Look for "TVDB API key not configured" warnings
|
||||
3. **Check NFO output**: Verify both TVDB and IMDB uniqueid elements are created
|
||||
4. **Emby behavior**: Confirm PremiereDate is no longer NULL
|
||||
5. **If issues**: Use revert guide above
|
||||
|
||||
**Current Status**: ⚠️ **UNTESTED - TVDB integration implemented but needs validation**
|
||||
|
||||
---
|
||||
*Last Updated: 2025-01-12*
|
||||
*Next Session: Get SDK DLLs, build plugin, add settings UI*
|
||||
*Last Updated: 2025-01-12*
|
||||
*Major Session: Repository architecture redesign + TVDB integration for Emby compatibility*
|
||||
Reference in New Issue
Block a user