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
|
|
||||||
+139
-1
@@ -178,6 +178,144 @@ NFOguard/
|
|||||||
- **Plugin standards**: Modern SDK-style projects work better in WSL
|
- **Plugin standards**: Modern SDK-style projects work better in WSL
|
||||||
- **TimeLord insights**: Custom licensing systems are common but not required
|
- **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*
|
*Last Updated: 2025-01-12*
|
||||||
*Next Session: Get SDK DLLs, build plugin, add settings UI*
|
*Major Session: Repository architecture redesign + TVDB integration for Emby compatibility*
|
||||||
Reference in New Issue
Block a user