updates to summarty
This commit is contained in:
+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