"""
Fetch specified callids from 7491_callarchive on 10.40.180.35
and insert into 7491_raw_calls on local DB.
"""
import pymysql
from pymysql.cursors import DictCursor

# Extract callid from each URL (filename without .wav)
URLS = """https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770998063.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770993990.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770986644.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770984079.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/80718873951770981996.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770981822.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770979530.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/96644844781770976237.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770974758.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770974029.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770972047.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/73544233651770971633.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770971630.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/88388634141770970307.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770966913.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/93807953561770966694.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99200601211770964999.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770962695.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770960897.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770960561.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770947609.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770909772.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/78995502301770909598.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/78995502301770906760.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770906544.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/78995502301770902597.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770901547.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770901506.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770899126.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770898446.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/96439955631770898008.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770897524.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/93844647841770896551.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770896505.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/78995502301770892402.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/78995502301770890415.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770889603.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770889452.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770888596.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/96439955631770886721.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770884778.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770883758.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98182579441770883337.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770883122.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770882523.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99335275571770882104.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/73058999601770878540.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770877934.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98404898591770876860.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770873748.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99834768731770873305.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770873237.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770872389.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770869871.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770820888.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770819342.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770814090.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770808766.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770808123.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/77039495151770803535.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770797922.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770792659.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770792070.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770789583.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770788547.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98404898591770787227.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770785194.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770783824.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/79736683801770781588.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/79736683801770781212.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321771001350.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321771000063.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770999140.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770999134.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770998061.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/95966993331770996918.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770996484.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/95966993331770996441.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/80718873951770995522.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770994329.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770993806.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770992492.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770992007.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/88260046481770991861.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770991048.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/97335239201770991049.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/97335239201770990759.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770990546.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770988915.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770988570.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770988339.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770987068.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770986040.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770983569.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770982931.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770979983.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770979423.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770979010.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/89710499241770978600.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/80718873951770977906.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770977470.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770977114.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770976718.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770976496.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/96644844781770976095.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770975979.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76654000631770975429.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770973051.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98369714141770972339.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770972326.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770971622.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/80718873951770971581.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770971428.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770971412.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/70444669441770971195.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/80718873951770971173.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770971040.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770970698.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770969695.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/90285912751770969083.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/80119911671770968907.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/96001291851770968903.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770968041.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63504065561770967864.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770967139.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770966919.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/70100332991770966808.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770966504.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770965937.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770965882.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770965164.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770964877.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770964504.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770964030.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770963331.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/93478016161770962486.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/93807953561770961817.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/89494658791770961534.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770961395.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/89494658791770961384.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770961006.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/90119460761770960769.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/96001291851770960766.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770958495.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770957258.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770954117.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/96439955631770953624.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/94945174801770951088.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770950452.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770949693.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770948537.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770948152.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770947950.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770947145.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770914016.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/96439955631770913515.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/78995502301770913063.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770912141.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99270595211770911439.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770911076.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/78995502301770910896.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770910587.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/78995502301770910342.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/96439955631770908033.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/78995502301770907166.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770907068.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770905594.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/78995502301770904740.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770903379.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770903319.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/80718873951770903126.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/77607066231770903073.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770902716.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770902195.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770901324.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770900740.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770900248.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/96439955631770899831.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770899237.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/96290702101770898276.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/96290702101770898070.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770898051.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770897530.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770897276.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770896862.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/80718873951770896236.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/78995502301770896164.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770895764.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770895165.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770894682.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770893412.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/93807953561770893037.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770893032.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770892629.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770892313.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770892026.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/78995502301770891112.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/94102470841770890492.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770890337.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770889913.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/70669414831770889601.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770889444.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770889411.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770888739.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770888404.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/96439955631770888190.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/96439955631770887890.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/96439955631770887669.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770887354.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770887166.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/97750544451770887024.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770886973.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770886794.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/95919888331770886717.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770886642.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/73058999601770886463.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770886313.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770886248.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/96439955631770886215.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770886014.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770885870.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/88260046481770885813.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770884639.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770884179.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98182579441770883882.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770883797.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770883219.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770882575.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770882411.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/78779456611770881783.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/78779456611770881479.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770880704.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770880578.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/93807953561770880362.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770880311.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770879831.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/73058999601770879614.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770879539.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770879354.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/73058999601770879350.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770879222.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770878552.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99415686681770877949.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99415686681770877804.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770876918.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770876694.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770876418.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770876156.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770875442.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/80718873951770874488.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770874487.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/63633688681770873167.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770872208.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770871990.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/80718873951770871864.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770871356.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770870835.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770870661.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770870466.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770869053.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770868645.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770867910.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/89786456681770867883.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770867430.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770867195.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770867055.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770866382.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770864686.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770864498.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770864211.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770863321.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770862940.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/78995502301770827000.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/78995502301770826591.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770826501.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770826179.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770825824.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/78995502301770824138.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770821413.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/78995502301770820562.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/78995502301770820144.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/93807953561770819184.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/88715934851770819123.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/88715934851770818488.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/88715934851770818235.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/88715934851770818084.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/78995502301770817368.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770816785.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770816751.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770815555.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98107770391770815262.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/78995502301770814567.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770814468.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770814421.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770814238.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770813941.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770813211.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770812843.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/78995502301770812498.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/93807953561770812220.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770811839.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/90074305071770811806.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770811315.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770811285.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770810454.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98612655991770810276.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/83277530631770810011.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/93807953561770809552.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/93430988391770809432.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/78995502301770808935.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770806175.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770805127.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/78995502301770803783.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770803667.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770802484.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770802373.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/99109874541770802337.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770801964.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770801317.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/96001291851770801153.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/80718873951770800568.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770800238.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770800199.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770799748.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98290182881770799400.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770799079.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770798569.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770797183.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770796978.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770796803.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770796504.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770795961.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770795236.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770794936.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770794916.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770793948.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/74996918611770792942.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770792723.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770792038.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770791957.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770791802.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770791696.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770791549.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770790826.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/93807953561770790099.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770789368.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770789146.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770788957.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/76191856321770787933.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770787711.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770787097.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/98186833851770786674.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770786428.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770785982.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770785795.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/90010455331770784859.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770784834.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/79736683801770784792.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770784437.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770783955.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770783488.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770779340.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770778316.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770776306.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770776011.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770774895.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770774635.wav
https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/81236818561770773688.wav"""

callids = [url.split('/')[-1].replace('.wav', '') for url in URLS.strip().splitlines()]
print(f"Total callids to look up: {len(callids)}")

SOURCE = dict(host='10.40.180.35', port=3306, user='root',
              password='4Tq73tXMcUbEJ5Q3t3', database='mcube_cl1', charset='utf8mb4')
DEST   = dict(host='127.0.0.1', port=3306, user='admin',
              password='Syntheon@1982', database='voicebot_cluster', charset='utf8mb4')

# Fetch matching rows from archive within the date range
src = pymysql.connect(**SOURCE, cursorclass=DictCursor)
placeholders = ','.join(['%s'] * len(callids))
query = f"""
    SELECT callid, bid, agentname, groupname, starttime, endtime,
           dialstatus, direction, filename,
           CASE
             WHEN LOWER(TRIM(direction)) = 'outbound' THEN NULLIF(TRIM(CAST(callto  AS CHAR)),'')
             WHEN LOWER(TRIM(direction)) = 'inbound'  THEN NULLIF(TRIM(CAST(callfrom AS CHAR)),'')
             ELSE NULLIF(TRIM(CAST(callto AS CHAR)),'')
           END AS customer_phone,
           emp_phone,
           clicktocalldid
    FROM 7491_callarchive
    WHERE callid IN ({placeholders})
      AND starttime BETWEEN '2026-02-11 07:04:00' AND '2026-02-13 21:24:00'
"""
with src.cursor() as cur:
    cur.execute(query, callids)
    rows = cur.fetchall()
src.close()

print(f"Found {len(rows)} matching rows in 7491_callarchive")
not_found = set(callids) - {r['callid'] for r in rows}
if not_found:
    print(f"  {len(not_found)} callids NOT found in archive within date range:")
    for cid in sorted(not_found)[:10]:
        print(f"    {cid}")
    if len(not_found) > 10:
        print(f"    ... and {len(not_found)-10} more")

if not rows:
    print("Nothing to insert.")
    exit(0)

# Build full URLs from filename (use the URL base from the provided links)
URL_BASE = "https://recordings.mcube.com/mcubefiles111/appmcube/2026/02/7491/"

def build_url(row):
    fn = (row.get('filename') or '').strip()
    if fn.startswith('http'):
        return fn
    if fn:
        return URL_BASE + fn
    # Fallback: reconstruct from the provided URL list
    cid = row['callid']
    return URL_BASE + cid + '.wav'

# Insert into 7491_raw_calls
dest = pymysql.connect(**DEST, cursorclass=DictCursor)
inserted = skipped = 0
with dest.cursor() as cur:
    for row in rows:
        fileurl = build_url(row)
        # customer number: prefer direction-based phone, fall back to clicktocalldid
        customer = row.get('customer_phone') or row.get('clicktocalldid') or ''
        try:
            cur.execute("""
                INSERT INTO 7491_raw_calls
                    (bid, callid, fileurl, status, agentname, groupname,
                     call_starttime, call_endtime, call_status,
                     agent_callinfo, customer_callinfo, direction,
                     transcription_requested, transcription_status, selected_for_processing)
                VALUES (%s,%s,%s, 0, %s,%s, %s,%s,%s, %s,%s,%s, 0,'not_requested',0)
                ON DUPLICATE KEY UPDATE
                    fileurl          = VALUES(fileurl),
                    agentname        = VALUES(agentname),
                    groupname        = VALUES(groupname),
                    call_starttime   = VALUES(call_starttime),
                    call_endtime     = VALUES(call_endtime),
                    call_status      = VALUES(call_status),
                    agent_callinfo   = VALUES(agent_callinfo),
                    customer_callinfo= VALUES(customer_callinfo),
                    direction        = VALUES(direction)
            """, (
                '7491',
                row['callid'],
                fileurl,
                row.get('agentname') or '',
                row.get('groupname') or '',
                row.get('starttime'),
                row.get('endtime'),
                row.get('dialstatus') or '',
                row.get('emp_phone') or '',
                customer,
                row.get('direction') or 'Outbound',
            ))
            inserted += 1
        except Exception as e:
            print(f"  Error inserting {row['callid']}: {e}")
            skipped += 1
    dest.commit()
dest.close()

print(f"\nDone. Inserted/updated: {inserted}  |  Errors: {skipped}")
