mc2xml EPGTalk Edition

Made by aCiDjEsUs, a Hamtramck kid · EPGTalk.com · free

Why your mc2xml stopped working: the original mc2xml has an expiry date built in. When that date passes it simply refuses to run. That's why it died on Sept 25, and why an older copy from archive.org only worked for a while.

This is the replacement that runs all of EPGTalk every day. It's a drop-in swap:

1 What's in the box

FileWhat it is
mc2xml.pyThe program itself (one file, plain Python).
mc2xml.batWindows launcher. You run this instead of the old mc2xml.exe.
mc2xmlLinux / Mac launcher. It has the same name as the old Linux program, so your scripts don't change.
EPGTalk-Builder.pywNEW: EPGTalk Guide Builder — the same program in a window: no commands, no files to edit (see below).
epgtalk-builderLinux / Mac launcher for the Guide Builder window.
GUIDE.htmlThis page.
README.txtThe short version of this page.

✨ Prefer a window? Try the EPGTalk Guide Builder

Everything on this page, with buttons instead of commands:

Windows: install Python (step 3a below), then just double-click EPGTalk-Builder.pyw.
Linux: install the window toolkit once, then start it:

sudo apt install python3-tk
./epgtalk-builder

Keep EPGTalk-Builder.pyw and mc2xml.py in the same folder. The builder keeps its settings, your providers and the log (builder.json, lineup1.dat…, builder.log) in that folder. You can use the window, the commands below, or both.

2 Back up first

Before anything else, copy your whole mc2xml folder somewhere safe (for example to mc2xml-backup). That way, whatever happens, you can always go back. The new program also keeps a copy of each old .dat file automatically, as name.dat.orig.

3 Set it up: pick your system

Easiest on Windows — the installer (no Python needed):
  1. Download EPGTalk-Builder-Setup.exe and double-click it.
  2. If Windows says “Windows protected your PC”: click More info → Run anyway. (It appears because the program is free and not “signed” with a paid certificate — it's safe.)
  3. Click Next → Install. No administrator password needed.
  4. Open EPGTalk Guide Builder from the Start menu or the desktop icon. Your guide is saved in Documents\EPGTalk Guide.

Using mc2xml in your own batch files? The portable zip (EPGTalk-Builder-Windows-portable.zip) contains a new mc2xml.exe: copy it over your old mc2xml.exe and your batch files work exactly as before — no Python, no other changes.

Prefer running the Python files from this zip instead? Follow the steps below.

a) Install Python (one time, free)

  1. Go to python.org/downloads and click the big yellow Download Python 3 button.
  2. Run the installer. On the first screen, tick “Add python.exe to PATH”, then click Install Now.
  3. Check it worked: open Command Prompt (press Win, type cmd, press Enter) and type:
py --version

You should see something like Python 3.12.x. (The free “Python 3” app from the Microsoft Store works too.)

b) Copy the files

Copy mc2xml.py and mc2xml.bat into your mc2xml folder, the one with your .dat, .chl and .ren files. You can leave the old mc2xml.exe there; it just won't be used.

c) Try one lineup

In Command Prompt, go to your mc2xml folder (replace the path with yours):

cd C:\mc2xml

Then run one of your usual commands with mc2xml.bat instead of mc2xml.exe. For example:

mc2xml.bat -c us -g 12345 -D mylineup.dat -C mylineup.chl -R mylineup.ren -d 24 -U -F -o test.xml

Use your own zip code and file names. When it finishes, you'll have test.xml (see step 4 for what you'll see).

d) Update your batch files

In your own .bat files, change every mc2xml.exe to call mc2xml.bat. Everything after it stays exactly the same.

rem before:
mc2xml.exe -c us -g 12345 -D provider1.dat -C provider1.chl -o one.xml

rem after:
call mc2xml.bat -c us -g 12345 -D provider1.dat -C provider1.chl -o one.xml
Don't forget the word call. Without it, Windows runs the first mc2xml line and then quietly stops your batch file. That's the most common mistake.

If you run your batch file from Task Scheduler, nothing else changes. Just make sure the task's “Start in” folder is your mc2xml folder.

4 Your first run: what you'll see

Something like this (the names will be yours):

Loading .....: mc2xml 2.0.0-py EPGTalk edition, made by aCiDjEsUs - EPGTalk.com Reading .....: Comcast-Tacoma.dat Connecting ..: tvlistings.gracenote.com Reading .....: COMCAST-TACOMA.chl Downloading .: gracenote.com (3) --- Parsing .....: Xfinity - Digital (Tacoma) Writing .....: test.xml Writing .....: Comcast-Tacoma.dat Completed ...: 43231 bytes in 2s, 2 channels, 44 programs scheduled.

5 Merge everything into one guide

For several providers plus your antenna / HDHomeRun locals: each run adds to the file before it with -I (“include”), and the last file has everything.

Windows (in your .bat file)

call mc2xml.bat -c us -g 12345 -D provider1.dat -C provider1.chl -R provider1.ren -U -F -o step1.xml
call mc2xml.bat -c us -g 12345 -D provider2.dat -C provider2.chl -R provider2.ren -U -F -I step1.xml -o step2.xml
call mc2xml.bat -c us -g 12345 -D provider3.dat -C provider3.chl -R provider3.ren -U -F -I step2.xml -o step3.xml
call mc2xml.bat -c us -g 12345 -D antenna.dat   -C antenna.chl   -R antenna.ren   -U -F -I step3.xml -o guide.xml

Linux (in your script)

./mc2xml -c us -g 12345 -D provider1.dat -C provider1.chl -R provider1.ren -U -F -o step1.xml
./mc2xml -c us -g 12345 -D provider2.dat -C provider2.chl -R provider2.ren -U -F -I step1.xml -o step2.xml
./mc2xml -c us -g 12345 -D provider3.dat -C provider3.chl -R provider3.ren -U -F -I step2.xml -o step3.xml
./mc2xml -c us -g 12345 -D antenna.dat   -C antenna.chl   -R antenna.ren   -U -F -I step3.xml -o guide.xml
Antenna / HDHomeRun locals: use your own zip code and the lineup called “Local Over the Air Broadcast”. To pick it (or any lineup) from a list, run once with --lineup and type the number. It's saved in the .dat file for next time:
mc2xml.bat -c us -g 12345 -D antenna.dat --lineup -o test.xml
(On Linux: ./mc2xml instead of mc2xml.bat.)

6 Options cheat sheet

OptionWhat it does
-c usCountry: us, ca, mx (more with Schedules Direct)
-g 12345Zip / postal code
-D file.datWhich lineup (provider). Your old .dat files work.
-C file.chlChannels to keep: call signs or channel numbers, one per line
-R file.renRenames: CALLSIGN:New Name, one per line
-o file.xmlOutput file
-I file.xmlMerge an earlier file into this one (can be used more than once)
-d 168How many hours of listings (168 = 7 days)
-UWrite UTF-8 (recommended: accents and symbols come out right)
-uTimes in UTC instead of local time
-FChannel name first (“FOX 2” rather than “2 FOX”)
-a / -AAdd “ [NEW]” / “ [LIVE]” to titles
-i 1000Add a number to every channel number
-fIgnore the cache and download fresh
--lineupShow the lineups for your zip and pick one again
--network-namesName channels by network (“NBC (WDIV)”, “Movies!”) instead of call sign (“WDIVDT”), unless you renamed them
-J user:passUse a Schedules Direct account instead (paid; more countries). -J @file reads it from a file. With -J, -g is only needed to search for a lineup that isn't on your account yet.
-hShow all options

-L, -1 and --movie-details are accepted so old command lines don't break, but they don't do anything.

7 If something goes wrong

“'py' is not recognized” or “'python' is not recognized” (Windows)

Python isn't installed, or “Add python.exe to PATH” wasn't ticked. Run the Python installer again, choose Modify, and tick Add Python to environment variables. Then close and reopen Command Prompt.

My batch file stops after the first mc2xml line (Windows)

Put call in front: call mc2xml.bat …. See step 3d.

“python3: command not found” or “Permission denied” (Linux)

Install Python (step 3a), and make the launcher runnable: chmod +x mc2xml. You can also always run it directly: python3 mc2xml.py …

“lineup … not found” or “no lineup selected”

The provider renamed or retired that lineup. Run the command once by hand with --lineup added, and pick the right one from the list. It's saved for next time. (It has to be run by hand once, because it asks you a question. After that, scheduled runs work.)

Schedules Direct: “exceeded the number of lineup changes” (or similar)

Schedules Direct only allows a few lineup adds/removes per day on an account. Lots of test runs with different lineups can use them up. Nothing is broken: wait about 24 hours and it resets.

This program helps you not hit it again:

Each line it prints tells you what happened: Found …: … on your Schedules Direct account means nothing was changed.

“Not found …: 3 of 40 … entries are not in this lineup: …”

Just information: those channels in your .chl aren't in the lineup any more (renamed or dropped). Nothing breaks. You can remove them from the .chl, or look up their new call sign with --lineup.

Times are off by a few hours in my player

Try adding -u (UTC times). Most players handle either, but some prefer UTC.

Accents look wrong (é instead of é)

Add -U so the file is written as UTF-8.

Can I go back to the old setup?

Yes. Restore your backup folder from step 2. (Your old .dat files are also still there as .dat.orig: rename them back.)

Where the listings come from: without -J, the public Gracenote TV listings (USA, Canada, Mexico), the same ones the old mc2xml used. With -J, your Schedules Direct account. For personal use, please.
Still stuck? Send me the last few lines it prints, and I'll sort it out. 🙂
Don't feel like running it yourself some days? Ready-made guides (US, UK, Canada, Mexico, 140+ local markets, every sports team) are free at EPGTalk.com.