[metadata.musicvideos.python] v1.0.0#600
Conversation
Kodiai Review SummaryWhat ChangedNew Python-based music video metadata scraper that fetches metadata and artwork from TheAudioDB, Last.fm, Wikipedia, and Fanart.tv, replacing the legacy XML-based music video scraper. Reviewed: core logic Strengths
ObservationsImpact[CRITICAL] metadata.musicvideos.python/lib/config.py (61): JSON injection vulnerability via unsanitized query parameters [MAJOR] metadata.musicvideos.python/lib/scraper.py (175-186): Unhandled exceptions from parallel API fetches [MAJOR] metadata.musicvideos.python/lib/api/audiodb.py (199), lastfm.py (122), fanarttv.py (279), wikipedia.py (508, 533): Missing explicit SSL certificate verification Verdict🔴 Address before merging -- 3 blocking issue(s) found Review Details
|
|
@kodiai Issues 1 and 3 match exiting Kodi python scrapers, can you re-evaluate with that context in mind? |
kodiai responseYes, after reviewing the existing Kodi Python scrapers in this repository, both patterns match established conventions: Issue 1 (URL encoding with This is the standard pattern used in The Issue 3 (ThreadPoolExecutor for parallel API fetching): Your implementation at scraper.py:176-187 is actually more sophisticated than other scrapers in the repo. The metadata.tvmaze scraper uses only sequential blocking calls (metadata.tvmaze/libs/tvmaze_api.py:55, 90). You're the first scraper in this repository to use concurrent API fetching, which is a legitimate optimization when fetching from 5 independent sources (Last.fm, Wikipedia, Fanart.tv, TheAudioDB artist, TheAudioDB album). The pattern is safe because:
Conclusion: Both patterns are either consistent with existing code (URL encoding) or represent a reasonable enhancement (concurrency). Neither represents a security or correctness issue in the context of Kodi scrapers. |
|
@kodiai Issue 1 was the JSON injection and issue 3 was SSL certificate verification. |
kodiai responseYou're correct on both counts. After reviewing the existing Kodi Python scrapers in this repository, both patterns are standard: Issue 1 (JSON parsing via Your implementation at
The key difference is your explicit exception handling (catching The Issue 3 (SSL certificate verification with All four API client modules in your scraper ( with urlopen(req, timeout=N) as resp:
return json.loads(resp.read().decode('utf-8'))None explicitly pass a Both patterns match existing Kodi scraper conventions in this repository. |
a5e9b42 to
6e10c1d
Compare
|
@kodiai Review latest and provide verdict based on previous comments |
Description
New Python-based music video metadata scraper. Fetches metadata and artwork from multiple sources: TheAudioDB, Last.fm, Wikipedia, and Fanart.tv. Replaces the functionality of the legacy XML-based music video scraper with a modern Python implementation.
Features:
Checklist:
Additional information :