42 channels across 14 lists have an EPG column in their markdown table row
but the column is blank. The condition in Channel.to_m3u_line() only checked
for None (no EPG column at all) but not for an empty string, so these
channels got a tvg-id="" attribute in the generated playlist. An empty
tvg-id tells IPTV players "this channel has an EPG ID and it is the empty
string", which prevents EPG matching rather than falling back to name-based
matching the way a missing attribute would.
Changing `if self.epg is not None` to `if self.epg` makes both None and
empty string omit the attribute, matching the existing pattern used by
the chno and country_code attributes on the lines just above.
- New lists/turkmenistan.md: all 8 national channels from issue #1023,
verified working.
- Italy: added Telenorba (Puglia regional) via its YouTube live
channel, the given URL was an HTML embed page not a stream. #1015
- France: added Handicap TV, verified working. #1049
- North Macedonia: the MRT public broadcaster channels use Windows
Media auth tokens with validminutes=30 baked into the URL - they
expire 30 minutes after being generated regardless of viewer
location, so no static URL can fix them. Moved 10 other dead
channels (timeout/404, no replacement found) to Invalid. #1025