Merge branch 'master' into patch-2023.02

This commit is contained in:
Aleksandr Statciuk 2023-01-08 14:51:58 +03:00
commit 54fc9d28b0
8 changed files with 184 additions and 115 deletions

192
README.md
View file

@ -16,10 +16,10 @@ To load a program guide, all you need to do is copy the link to one or more of t
<tbody>
<tr><td valign="top" rowspan="1">🇦🇫&nbsp;Afghanistan</td><td align="right" nowrap>72</td><td nowrap><code>https://iptv-org.github.io/epg/guides/af.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇦🇱&nbsp;Albania</td><td align="right" nowrap>101</td><td nowrap><code>https://iptv-org.github.io/epg/guides/al.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇩🇿&nbsp;Algeria</td><td align="right" nowrap>123</td><td nowrap><code>https://iptv-org.github.io/epg/guides/dz.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇩🇿&nbsp;Algeria</td><td align="right" nowrap>122</td><td nowrap><code>https://iptv-org.github.io/epg/guides/dz.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇦🇸&nbsp;American Samoa</td><td align="right" nowrap>67</td><td nowrap><code>https://iptv-org.github.io/epg/guides/as.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇦🇩&nbsp;Andorra</td><td align="right" nowrap>91</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ad.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇦🇴&nbsp;Angola</td><td align="right" nowrap>120</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ao.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇦🇴&nbsp;Angola</td><td align="right" nowrap>119</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ao.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇦🇮&nbsp;Anguilla</td><td align="right" nowrap>68</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ai.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇦🇶&nbsp;Antarctica</td><td align="right" nowrap>56</td><td nowrap><code>https://iptv-org.github.io/epg/guides/aq.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇦🇬&nbsp;Antigua and Barbuda</td><td align="right" nowrap>68</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ag.xml</code></td></tr>
@ -30,73 +30,73 @@ To load a program guide, all you need to do is copy the link to one or more of t
<tr><td valign="top" rowspan="1">🇦🇹&nbsp;Austria</td><td align="right" nowrap>155</td><td nowrap><code>https://iptv-org.github.io/epg/guides/at.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇦🇿&nbsp;Azerbaijan</td><td align="right" nowrap>103</td><td nowrap><code>https://iptv-org.github.io/epg/guides/az.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇧🇸&nbsp;Bahamas</td><td align="right" nowrap>76</td><td nowrap><code>https://iptv-org.github.io/epg/guides/bs.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇧🇭&nbsp;Bahrain</td><td align="right" nowrap>91</td><td nowrap><code>https://iptv-org.github.io/epg/guides/bh.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇧🇭&nbsp;Bahrain</td><td align="right" nowrap>89</td><td nowrap><code>https://iptv-org.github.io/epg/guides/bh.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇧🇩&nbsp;Bangladesh</td><td align="right" nowrap>76</td><td nowrap><code>https://iptv-org.github.io/epg/guides/bd.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇧🇧&nbsp;Barbados</td><td align="right" nowrap>74</td><td nowrap><code>https://iptv-org.github.io/epg/guides/bb.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇧🇾&nbsp;Belarus</td><td align="right" nowrap>117</td><td nowrap><code>https://iptv-org.github.io/epg/guides/by.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇧🇪&nbsp;Belgium</td><td align="right" nowrap>198</td><td nowrap><code>https://iptv-org.github.io/epg/guides/be.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇧🇿&nbsp;Belize</td><td align="right" nowrap>92</td><td nowrap><code>https://iptv-org.github.io/epg/guides/bz.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇧🇯&nbsp;Benin</td><td align="right" nowrap>118</td><td nowrap><code>https://iptv-org.github.io/epg/guides/bj.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇧🇯&nbsp;Benin</td><td align="right" nowrap>117</td><td nowrap><code>https://iptv-org.github.io/epg/guides/bj.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇧🇲&nbsp;Bermuda</td><td align="right" nowrap>62</td><td nowrap><code>https://iptv-org.github.io/epg/guides/bm.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇧🇹&nbsp;Bhutan</td><td align="right" nowrap>73</td><td nowrap><code>https://iptv-org.github.io/epg/guides/bt.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇧🇴&nbsp;Bolivia</td><td align="right" nowrap>211</td><td nowrap><code>https://iptv-org.github.io/epg/guides/bo.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇧🇶&nbsp;Bonaire</td><td align="right" nowrap>60</td><td nowrap><code>https://iptv-org.github.io/epg/guides/bq.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇧🇦&nbsp;Bosnia and Herzegovina</td><td align="right" nowrap>124</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ba.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇧🇼&nbsp;Botswana</td><td align="right" nowrap>106</td><td nowrap><code>https://iptv-org.github.io/epg/guides/bw.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇧🇼&nbsp;Botswana</td><td align="right" nowrap>105</td><td nowrap><code>https://iptv-org.github.io/epg/guides/bw.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇧🇻&nbsp;Bouvet Island</td><td align="right" nowrap>58</td><td nowrap><code>https://iptv-org.github.io/epg/guides/bv.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇧🇷&nbsp;Brazil</td><td align="right" nowrap>308</td><td nowrap><code>https://iptv-org.github.io/epg/guides/br.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇧🇷&nbsp;Brazil</td><td align="right" nowrap>309</td><td nowrap><code>https://iptv-org.github.io/epg/guides/br.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇮🇴&nbsp;British Indian Ocean Territory</td><td align="right" nowrap>56</td><td nowrap><code>https://iptv-org.github.io/epg/guides/io.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇻🇬&nbsp;British Virgin Islands</td><td align="right" nowrap>68</td><td nowrap><code>https://iptv-org.github.io/epg/guides/vg.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇧🇳&nbsp;Brunei</td><td align="right" nowrap>112</td><td nowrap><code>https://iptv-org.github.io/epg/guides/bn.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇧🇳&nbsp;Brunei</td><td align="right" nowrap>114</td><td nowrap><code>https://iptv-org.github.io/epg/guides/bn.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇧🇬&nbsp;Bulgaria</td><td align="right" nowrap>159</td><td nowrap><code>https://iptv-org.github.io/epg/guides/bg.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇧🇫&nbsp;Burkina Faso</td><td align="right" nowrap>123</td><td nowrap><code>https://iptv-org.github.io/epg/guides/bf.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇧🇮&nbsp;Burundi</td><td align="right" nowrap>114</td><td nowrap><code>https://iptv-org.github.io/epg/guides/bi.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇰🇭&nbsp;Cambodia</td><td align="right" nowrap>109</td><td nowrap><code>https://iptv-org.github.io/epg/guides/kh.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇨🇲&nbsp;Cameroon</td><td align="right" nowrap>124</td><td nowrap><code>https://iptv-org.github.io/epg/guides/cm.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇨🇦&nbsp;Canada</td><td align="right" nowrap>284</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ca.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇨🇻&nbsp;Cape Verde</td><td align="right" nowrap>117</td><td nowrap><code>https://iptv-org.github.io/epg/guides/cv.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇧🇫&nbsp;Burkina Faso</td><td align="right" nowrap>122</td><td nowrap><code>https://iptv-org.github.io/epg/guides/bf.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇧🇮&nbsp;Burundi</td><td align="right" nowrap>113</td><td nowrap><code>https://iptv-org.github.io/epg/guides/bi.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇰🇭&nbsp;Cambodia</td><td align="right" nowrap>111</td><td nowrap><code>https://iptv-org.github.io/epg/guides/kh.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇨🇲&nbsp;Cameroon</td><td align="right" nowrap>123</td><td nowrap><code>https://iptv-org.github.io/epg/guides/cm.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇨🇦&nbsp;Canada</td><td align="right" nowrap>285</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ca.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇨🇻&nbsp;Cape Verde</td><td align="right" nowrap>116</td><td nowrap><code>https://iptv-org.github.io/epg/guides/cv.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇰🇾&nbsp;Cayman Islands</td><td align="right" nowrap>68</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ky.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇨🇫&nbsp;Central African Republic</td><td align="right" nowrap>113</td><td nowrap><code>https://iptv-org.github.io/epg/guides/cf.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇹🇩&nbsp;Chad</td><td align="right" nowrap>116</td><td nowrap><code>https://iptv-org.github.io/epg/guides/td.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇨🇫&nbsp;Central African Republic</td><td align="right" nowrap>112</td><td nowrap><code>https://iptv-org.github.io/epg/guides/cf.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇹🇩&nbsp;Chad</td><td align="right" nowrap>115</td><td nowrap><code>https://iptv-org.github.io/epg/guides/td.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇨🇱&nbsp;Chile</td><td align="right" nowrap>240</td><td nowrap><code>https://iptv-org.github.io/epg/guides/cl.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇨🇳&nbsp;China</td><td align="right" nowrap>188</td><td nowrap><code>https://iptv-org.github.io/epg/guides/cn.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇨🇳&nbsp;China</td><td align="right" nowrap>187</td><td nowrap><code>https://iptv-org.github.io/epg/guides/cn.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇨🇽&nbsp;Christmas Island</td><td align="right" nowrap>56</td><td nowrap><code>https://iptv-org.github.io/epg/guides/cx.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇨🇨&nbsp;Cocos (Keeling) Islands</td><td align="right" nowrap>56</td><td nowrap><code>https://iptv-org.github.io/epg/guides/cc.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇨🇴&nbsp;Colombia</td><td align="right" nowrap>231</td><td nowrap><code>https://iptv-org.github.io/epg/guides/co.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇰🇲&nbsp;Comoros</td><td align="right" nowrap>130</td><td nowrap><code>https://iptv-org.github.io/epg/guides/km.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇰🇲&nbsp;Comoros</td><td align="right" nowrap>129</td><td nowrap><code>https://iptv-org.github.io/epg/guides/km.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇨🇰&nbsp;Cook Islands</td><td align="right" nowrap>67</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ck.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇨🇷&nbsp;Costa Rica</td><td align="right" nowrap>204</td><td nowrap><code>https://iptv-org.github.io/epg/guides/cr.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇭🇷&nbsp;Croatia</td><td align="right" nowrap>146</td><td nowrap><code>https://iptv-org.github.io/epg/guides/hr.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇭🇷&nbsp;Croatia</td><td align="right" nowrap>147</td><td nowrap><code>https://iptv-org.github.io/epg/guides/hr.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇨🇺&nbsp;Cuba</td><td align="right" nowrap>203</td><td nowrap><code>https://iptv-org.github.io/epg/guides/cu.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇨🇼&nbsp;Curacao</td><td align="right" nowrap>72</td><td nowrap><code>https://iptv-org.github.io/epg/guides/cw.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇨🇾&nbsp;Cyprus</td><td align="right" nowrap>122</td><td nowrap><code>https://iptv-org.github.io/epg/guides/cy.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇨🇾&nbsp;Cyprus</td><td align="right" nowrap>120</td><td nowrap><code>https://iptv-org.github.io/epg/guides/cy.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇨🇿&nbsp;Czech Republic</td><td align="right" nowrap>207</td><td nowrap><code>https://iptv-org.github.io/epg/guides/cz.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇨🇩&nbsp;Democratic Republic of the Congo</td><td align="right" nowrap>125</td><td nowrap><code>https://iptv-org.github.io/epg/guides/cd.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇨🇩&nbsp;Democratic Republic of the Congo</td><td align="right" nowrap>124</td><td nowrap><code>https://iptv-org.github.io/epg/guides/cd.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇩🇰&nbsp;Denmark</td><td align="right" nowrap>120</td><td nowrap><code>https://iptv-org.github.io/epg/guides/dk.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇩🇯&nbsp;Djibouti</td><td align="right" nowrap>134</td><td nowrap><code>https://iptv-org.github.io/epg/guides/dj.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇩🇯&nbsp;Djibouti</td><td align="right" nowrap>133</td><td nowrap><code>https://iptv-org.github.io/epg/guides/dj.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇩🇲&nbsp;Dominica</td><td align="right" nowrap>68</td><td nowrap><code>https://iptv-org.github.io/epg/guides/dm.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇩🇴&nbsp;Dominican Republic</td><td align="right" nowrap>208</td><td nowrap><code>https://iptv-org.github.io/epg/guides/do.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇹🇱&nbsp;East Timor</td><td align="right" nowrap>114</td><td nowrap><code>https://iptv-org.github.io/epg/guides/tl.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇹🇱&nbsp;East Timor</td><td align="right" nowrap>116</td><td nowrap><code>https://iptv-org.github.io/epg/guides/tl.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇪🇨&nbsp;Ecuador</td><td align="right" nowrap>206</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ec.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇪🇬&nbsp;Egypt</td><td align="right" nowrap>158</td><td nowrap><code>https://iptv-org.github.io/epg/guides/eg.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇪🇬&nbsp;Egypt</td><td align="right" nowrap>155</td><td nowrap><code>https://iptv-org.github.io/epg/guides/eg.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇸🇻&nbsp;El Salvador</td><td align="right" nowrap>207</td><td nowrap><code>https://iptv-org.github.io/epg/guides/sv.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇬🇶&nbsp;Equatorial Guinea</td><td align="right" nowrap>128</td><td nowrap><code>https://iptv-org.github.io/epg/guides/gq.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇪🇷&nbsp;Eritrea</td><td align="right" nowrap>106</td><td nowrap><code>https://iptv-org.github.io/epg/guides/er.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇬🇶&nbsp;Equatorial Guinea</td><td align="right" nowrap>127</td><td nowrap><code>https://iptv-org.github.io/epg/guides/gq.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇪🇷&nbsp;Eritrea</td><td align="right" nowrap>105</td><td nowrap><code>https://iptv-org.github.io/epg/guides/er.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇪🇪&nbsp;Estonia</td><td align="right" nowrap>120</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ee.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇪🇹&nbsp;Ethiopia</td><td align="right" nowrap>106</td><td nowrap><code>https://iptv-org.github.io/epg/guides/et.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇪🇹&nbsp;Ethiopia</td><td align="right" nowrap>105</td><td nowrap><code>https://iptv-org.github.io/epg/guides/et.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇫🇰&nbsp;Falkland Islands</td><td align="right" nowrap>58</td><td nowrap><code>https://iptv-org.github.io/epg/guides/fk.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇫🇴&nbsp;Faroe Islands</td><td align="right" nowrap>61</td><td nowrap><code>https://iptv-org.github.io/epg/guides/fo.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇫🇯&nbsp;Fiji</td><td align="right" nowrap>67</td><td nowrap><code>https://iptv-org.github.io/epg/guides/fj.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇫🇮&nbsp;Finland</td><td align="right" nowrap>131</td><td nowrap><code>https://iptv-org.github.io/epg/guides/fi.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇫🇷&nbsp;France</td><td align="right" nowrap>384</td><td nowrap><code>https://iptv-org.github.io/epg/guides/fr.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇫🇮&nbsp;Finland</td><td align="right" nowrap>130</td><td nowrap><code>https://iptv-org.github.io/epg/guides/fi.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇫🇷&nbsp;France</td><td align="right" nowrap>374</td><td nowrap><code>https://iptv-org.github.io/epg/guides/fr.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇬🇫&nbsp;French Guiana</td><td align="right" nowrap>75</td><td nowrap><code>https://iptv-org.github.io/epg/guides/gf.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇵🇫&nbsp;French Polynesia</td><td align="right" nowrap>71</td><td nowrap><code>https://iptv-org.github.io/epg/guides/pf.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇹🇫&nbsp;French Southern Territories</td><td align="right" nowrap>105</td><td nowrap><code>https://iptv-org.github.io/epg/guides/tf.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇬🇦&nbsp;Gabon</td><td align="right" nowrap>117</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ga.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇬🇲&nbsp;Gambia</td><td align="right" nowrap>106</td><td nowrap><code>https://iptv-org.github.io/epg/guides/gm.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇹🇫&nbsp;French Southern Territories</td><td align="right" nowrap>104</td><td nowrap><code>https://iptv-org.github.io/epg/guides/tf.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇬🇦&nbsp;Gabon</td><td align="right" nowrap>116</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ga.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇬🇲&nbsp;Gambia</td><td align="right" nowrap>105</td><td nowrap><code>https://iptv-org.github.io/epg/guides/gm.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇬🇪&nbsp;Georgia</td><td align="right" nowrap>125</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ge.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇩🇪&nbsp;Germany</td><td align="right" nowrap>280</td><td nowrap><code>https://iptv-org.github.io/epg/guides/de.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇬🇭&nbsp;Ghana</td><td align="right" nowrap>109</td><td nowrap><code>https://iptv-org.github.io/epg/guides/gh.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇬🇭&nbsp;Ghana</td><td align="right" nowrap>108</td><td nowrap><code>https://iptv-org.github.io/epg/guides/gh.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇬🇮&nbsp;Gibraltar</td><td align="right" nowrap>56</td><td nowrap><code>https://iptv-org.github.io/epg/guides/gi.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇬🇷&nbsp;Greece</td><td align="right" nowrap>166</td><td nowrap><code>https://iptv-org.github.io/epg/guides/gr.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇬🇱&nbsp;Greenland</td><td align="right" nowrap>65</td><td nowrap><code>https://iptv-org.github.io/epg/guides/gl.xml</code></td></tr>
@ -105,55 +105,55 @@ To load a program guide, all you need to do is copy the link to one or more of t
<tr><td valign="top" rowspan="1">🇬🇺&nbsp;Guam</td><td align="right" nowrap>73</td><td nowrap><code>https://iptv-org.github.io/epg/guides/gu.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇬🇹&nbsp;Guatemala</td><td align="right" nowrap>206</td><td nowrap><code>https://iptv-org.github.io/epg/guides/gt.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇬🇬&nbsp;Guernsey</td><td align="right" nowrap>59</td><td nowrap><code>https://iptv-org.github.io/epg/guides/gg.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇬🇳&nbsp;Guinea</td><td align="right" nowrap>119</td><td nowrap><code>https://iptv-org.github.io/epg/guides/gn.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇬🇼&nbsp;Guinea-Bissau</td><td align="right" nowrap>113</td><td nowrap><code>https://iptv-org.github.io/epg/guides/gw.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇬🇳&nbsp;Guinea</td><td align="right" nowrap>118</td><td nowrap><code>https://iptv-org.github.io/epg/guides/gn.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇬🇼&nbsp;Guinea-Bissau</td><td align="right" nowrap>112</td><td nowrap><code>https://iptv-org.github.io/epg/guides/gw.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇬🇾&nbsp;Guyana</td><td align="right" nowrap>58</td><td nowrap><code>https://iptv-org.github.io/epg/guides/gy.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇭🇹&nbsp;Haiti</td><td align="right" nowrap>96</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ht.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇭🇲&nbsp;Heard Island and McDonald Islands</td><td align="right" nowrap>56</td><td nowrap><code>https://iptv-org.github.io/epg/guides/hm.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇭🇳&nbsp;Honduras</td><td align="right" nowrap>209</td><td nowrap><code>https://iptv-org.github.io/epg/guides/hn.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇭🇰&nbsp;Hong Kong</td><td align="right" nowrap>155</td><td nowrap><code>https://iptv-org.github.io/epg/guides/hk.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇭🇺&nbsp;Hungary</td><td align="right" nowrap>212</td><td nowrap><code>https://iptv-org.github.io/epg/guides/hu.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇮🇸&nbsp;Iceland</td><td align="right" nowrap>104</td><td nowrap><code>https://iptv-org.github.io/epg/guides/is.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇮🇸&nbsp;Iceland</td><td align="right" nowrap>103</td><td nowrap><code>https://iptv-org.github.io/epg/guides/is.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇮🇳&nbsp;India</td><td align="right" nowrap>420</td><td nowrap><code>https://iptv-org.github.io/epg/guides/in.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇮🇩&nbsp;Indonesia</td><td align="right" nowrap>211</td><td nowrap><code>https://iptv-org.github.io/epg/guides/id.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇮🇷&nbsp;Iran</td><td align="right" nowrap>85</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ir.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇮🇶&nbsp;Iraq</td><td align="right" nowrap>94</td><td nowrap><code>https://iptv-org.github.io/epg/guides/iq.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇮🇩&nbsp;Indonesia</td><td align="right" nowrap>213</td><td nowrap><code>https://iptv-org.github.io/epg/guides/id.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇮🇷&nbsp;Iran</td><td align="right" nowrap>75</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ir.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇮🇶&nbsp;Iraq</td><td align="right" nowrap>92</td><td nowrap><code>https://iptv-org.github.io/epg/guides/iq.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇮🇪&nbsp;Ireland</td><td align="right" nowrap>158</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ie.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇮🇲&nbsp;Isle of Man</td><td align="right" nowrap>56</td><td nowrap><code>https://iptv-org.github.io/epg/guides/im.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇮🇱&nbsp;Israel</td><td align="right" nowrap>76</td><td nowrap><code>https://iptv-org.github.io/epg/guides/il.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇮🇱&nbsp;Israel</td><td align="right" nowrap>74</td><td nowrap><code>https://iptv-org.github.io/epg/guides/il.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇮🇹&nbsp;Italy</td><td align="right" nowrap>251</td><td nowrap><code>https://iptv-org.github.io/epg/guides/it.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇨🇮&nbsp;Ivory Coast</td><td align="right" nowrap>125</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ci.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇨🇮&nbsp;Ivory Coast</td><td align="right" nowrap>124</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ci.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇯🇲&nbsp;Jamaica</td><td align="right" nowrap>70</td><td nowrap><code>https://iptv-org.github.io/epg/guides/jm.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇯🇵&nbsp;Japan</td><td align="right" nowrap>191</td><td nowrap><code>https://iptv-org.github.io/epg/guides/jp.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇯🇪&nbsp;Jersey</td><td align="right" nowrap>58</td><td nowrap><code>https://iptv-org.github.io/epg/guides/je.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇯🇴&nbsp;Jordan</td><td align="right" nowrap>92</td><td nowrap><code>https://iptv-org.github.io/epg/guides/jo.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇯🇴&nbsp;Jordan</td><td align="right" nowrap>90</td><td nowrap><code>https://iptv-org.github.io/epg/guides/jo.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇰🇿&nbsp;Kazakhstan</td><td align="right" nowrap>102</td><td nowrap><code>https://iptv-org.github.io/epg/guides/kz.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇰🇪&nbsp;Kenya</td><td align="right" nowrap>107</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ke.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇰🇪&nbsp;Kenya</td><td align="right" nowrap>106</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ke.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇰🇮&nbsp;Kiribati</td><td align="right" nowrap>67</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ki.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇽🇰&nbsp;Kosovo</td><td align="right" nowrap>81</td><td nowrap><code>https://iptv-org.github.io/epg/guides/xk.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇰🇼&nbsp;Kuwait</td><td align="right" nowrap>95</td><td nowrap><code>https://iptv-org.github.io/epg/guides/kw.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇰🇼&nbsp;Kuwait</td><td align="right" nowrap>93</td><td nowrap><code>https://iptv-org.github.io/epg/guides/kw.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇰🇬&nbsp;Kyrgyzstan</td><td align="right" nowrap>65</td><td nowrap><code>https://iptv-org.github.io/epg/guides/kg.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇱🇦&nbsp;Laos</td><td align="right" nowrap>109</td><td nowrap><code>https://iptv-org.github.io/epg/guides/la.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇱🇦&nbsp;Laos</td><td align="right" nowrap>111</td><td nowrap><code>https://iptv-org.github.io/epg/guides/la.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇱🇻&nbsp;Latvia</td><td align="right" nowrap>104</td><td nowrap><code>https://iptv-org.github.io/epg/guides/lv.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇱🇧&nbsp;Lebanon</td><td align="right" nowrap>98</td><td nowrap><code>https://iptv-org.github.io/epg/guides/lb.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇱🇸&nbsp;Lesotho</td><td align="right" nowrap>107</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ls.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇱🇷&nbsp;Liberia</td><td align="right" nowrap>106</td><td nowrap><code>https://iptv-org.github.io/epg/guides/lr.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇱🇾&nbsp;Libya</td><td align="right" nowrap>122</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ly.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇱🇧&nbsp;Lebanon</td><td align="right" nowrap>96</td><td nowrap><code>https://iptv-org.github.io/epg/guides/lb.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇱🇸&nbsp;Lesotho</td><td align="right" nowrap>106</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ls.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇱🇷&nbsp;Liberia</td><td align="right" nowrap>105</td><td nowrap><code>https://iptv-org.github.io/epg/guides/lr.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇱🇾&nbsp;Libya</td><td align="right" nowrap>121</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ly.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇱🇮&nbsp;Liechtenstein</td><td align="right" nowrap>99</td><td nowrap><code>https://iptv-org.github.io/epg/guides/li.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇱🇹&nbsp;Lithuania</td><td align="right" nowrap>117</td><td nowrap><code>https://iptv-org.github.io/epg/guides/lt.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇱🇺&nbsp;Luxembourg</td><td align="right" nowrap>116</td><td nowrap><code>https://iptv-org.github.io/epg/guides/lu.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇲🇴&nbsp;Macao</td><td align="right" nowrap>62</td><td nowrap><code>https://iptv-org.github.io/epg/guides/mo.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇲🇬&nbsp;Madagascar</td><td align="right" nowrap>122</td><td nowrap><code>https://iptv-org.github.io/epg/guides/mg.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇲🇼&nbsp;Malawi</td><td align="right" nowrap>106</td><td nowrap><code>https://iptv-org.github.io/epg/guides/mw.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇲🇾&nbsp;Malaysia</td><td align="right" nowrap>175</td><td nowrap><code>https://iptv-org.github.io/epg/guides/my.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇲🇬&nbsp;Madagascar</td><td align="right" nowrap>121</td><td nowrap><code>https://iptv-org.github.io/epg/guides/mg.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇲🇼&nbsp;Malawi</td><td align="right" nowrap>105</td><td nowrap><code>https://iptv-org.github.io/epg/guides/mw.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇲🇾&nbsp;Malaysia</td><td align="right" nowrap>177</td><td nowrap><code>https://iptv-org.github.io/epg/guides/my.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇲🇻&nbsp;Maldives</td><td align="right" nowrap>73</td><td nowrap><code>https://iptv-org.github.io/epg/guides/mv.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇲🇱&nbsp;Mali</td><td align="right" nowrap>122</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ml.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇲🇱&nbsp;Mali</td><td align="right" nowrap>121</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ml.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇲🇹&nbsp;Malta</td><td align="right" nowrap>117</td><td nowrap><code>https://iptv-org.github.io/epg/guides/mt.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇲🇭&nbsp;Marshall Islands</td><td align="right" nowrap>67</td><td nowrap><code>https://iptv-org.github.io/epg/guides/mh.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇲🇶&nbsp;Martinique</td><td align="right" nowrap>89</td><td nowrap><code>https://iptv-org.github.io/epg/guides/mq.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇲🇷&nbsp;Mauritania</td><td align="right" nowrap>122</td><td nowrap><code>https://iptv-org.github.io/epg/guides/mr.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇲🇺&nbsp;Mauritius</td><td align="right" nowrap>115</td><td nowrap><code>https://iptv-org.github.io/epg/guides/mu.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇾🇹&nbsp;Mayotte</td><td align="right" nowrap>107</td><td nowrap><code>https://iptv-org.github.io/epg/guides/yt.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇲🇷&nbsp;Mauritania</td><td align="right" nowrap>121</td><td nowrap><code>https://iptv-org.github.io/epg/guides/mr.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇲🇺&nbsp;Mauritius</td><td align="right" nowrap>114</td><td nowrap><code>https://iptv-org.github.io/epg/guides/mu.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇾🇹&nbsp;Mayotte</td><td align="right" nowrap>106</td><td nowrap><code>https://iptv-org.github.io/epg/guides/yt.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇲🇽&nbsp;Mexico</td><td align="right" nowrap>259</td><td nowrap><code>https://iptv-org.github.io/epg/guides/mx.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇫🇲&nbsp;Micronesia</td><td align="right" nowrap>67</td><td nowrap><code>https://iptv-org.github.io/epg/guides/fm.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇲🇩&nbsp;Moldova</td><td align="right" nowrap>99</td><td nowrap><code>https://iptv-org.github.io/epg/guides/md.xml</code></td></tr>
@ -161,45 +161,45 @@ To load a program guide, all you need to do is copy the link to one or more of t
<tr><td valign="top" rowspan="1">🇲🇳&nbsp;Mongolia</td><td align="right" nowrap>65</td><td nowrap><code>https://iptv-org.github.io/epg/guides/mn.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇲🇪&nbsp;Montenegro</td><td align="right" nowrap>102</td><td nowrap><code>https://iptv-org.github.io/epg/guides/me.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇲🇸&nbsp;Montserrat</td><td align="right" nowrap>68</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ms.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇲🇦&nbsp;Morocco</td><td align="right" nowrap>124</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ma.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇲🇿&nbsp;Mozambique</td><td align="right" nowrap>122</td><td nowrap><code>https://iptv-org.github.io/epg/guides/mz.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇲🇲&nbsp;Myanmar (Burma)</td><td align="right" nowrap>109</td><td nowrap><code>https://iptv-org.github.io/epg/guides/mm.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇳🇦&nbsp;Namibia</td><td align="right" nowrap>107</td><td nowrap><code>https://iptv-org.github.io/epg/guides/na.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇲🇦&nbsp;Morocco</td><td align="right" nowrap>123</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ma.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇲🇿&nbsp;Mozambique</td><td align="right" nowrap>121</td><td nowrap><code>https://iptv-org.github.io/epg/guides/mz.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇲🇲&nbsp;Myanmar (Burma)</td><td align="right" nowrap>111</td><td nowrap><code>https://iptv-org.github.io/epg/guides/mm.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇳🇦&nbsp;Namibia</td><td align="right" nowrap>106</td><td nowrap><code>https://iptv-org.github.io/epg/guides/na.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇳🇷&nbsp;Nauru</td><td align="right" nowrap>67</td><td nowrap><code>https://iptv-org.github.io/epg/guides/nr.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇳🇵&nbsp;Nepal</td><td align="right" nowrap>76</td><td nowrap><code>https://iptv-org.github.io/epg/guides/np.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇳🇱&nbsp;Netherlands</td><td align="right" nowrap>265</td><td nowrap><code>https://iptv-org.github.io/epg/guides/nl.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇳🇨&nbsp;New Caledonia</td><td align="right" nowrap>70</td><td nowrap><code>https://iptv-org.github.io/epg/guides/nc.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇳🇿&nbsp;New Zealand</td><td align="right" nowrap>150</td><td nowrap><code>https://iptv-org.github.io/epg/guides/nz.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇳🇮&nbsp;Nicaragua</td><td align="right" nowrap>199</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ni.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇳🇪&nbsp;Niger</td><td align="right" nowrap>116</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ne.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇳🇬&nbsp;Nigeria</td><td align="right" nowrap>142</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ng.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇳🇪&nbsp;Niger</td><td align="right" nowrap>115</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ne.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇳🇬&nbsp;Nigeria</td><td align="right" nowrap>140</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ng.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇳🇺&nbsp;Niue</td><td align="right" nowrap>67</td><td nowrap><code>https://iptv-org.github.io/epg/guides/nu.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇳🇫&nbsp;Norfolk Island</td><td align="right" nowrap>67</td><td nowrap><code>https://iptv-org.github.io/epg/guides/nf.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇰🇵&nbsp;North Korea</td><td align="right" nowrap>65</td><td nowrap><code>https://iptv-org.github.io/epg/guides/kp.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇲🇰&nbsp;North Macedonia</td><td align="right" nowrap>112</td><td nowrap><code>https://iptv-org.github.io/epg/guides/mk.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇲🇵&nbsp;Northern Mariana Islands</td><td align="right" nowrap>67</td><td nowrap><code>https://iptv-org.github.io/epg/guides/mp.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇳🇴&nbsp;Norway</td><td align="right" nowrap>122</td><td nowrap><code>https://iptv-org.github.io/epg/guides/no.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇴🇲&nbsp;Oman</td><td align="right" nowrap>91</td><td nowrap><code>https://iptv-org.github.io/epg/guides/om.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇴🇲&nbsp;Oman</td><td align="right" nowrap>89</td><td nowrap><code>https://iptv-org.github.io/epg/guides/om.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇵🇰&nbsp;Pakistan</td><td align="right" nowrap>76</td><td nowrap><code>https://iptv-org.github.io/epg/guides/pk.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇵🇼&nbsp;Palau</td><td align="right" nowrap>67</td><td nowrap><code>https://iptv-org.github.io/epg/guides/pw.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇵🇸&nbsp;Palestine</td><td align="right" nowrap>92</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ps.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇵🇸&nbsp;Palestine</td><td align="right" nowrap>90</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ps.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇵🇦&nbsp;Panama</td><td align="right" nowrap>202</td><td nowrap><code>https://iptv-org.github.io/epg/guides/pa.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇵🇬&nbsp;Papua New Guinea</td><td align="right" nowrap>67</td><td nowrap><code>https://iptv-org.github.io/epg/guides/pg.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇵🇾&nbsp;Paraguay</td><td align="right" nowrap>217</td><td nowrap><code>https://iptv-org.github.io/epg/guides/py.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇵🇾&nbsp;Paraguay</td><td align="right" nowrap>218</td><td nowrap><code>https://iptv-org.github.io/epg/guides/py.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇵🇪&nbsp;Peru</td><td align="right" nowrap>233</td><td nowrap><code>https://iptv-org.github.io/epg/guides/pe.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇵🇭&nbsp;Philippines</td><td align="right" nowrap>161</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ph.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇵🇭&nbsp;Philippines</td><td align="right" nowrap>147</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ph.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇵🇳&nbsp;Pitcairn Islands</td><td align="right" nowrap>67</td><td nowrap><code>https://iptv-org.github.io/epg/guides/pn.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇵🇱&nbsp;Poland</td><td align="right" nowrap>265</td><td nowrap><code>https://iptv-org.github.io/epg/guides/pl.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇵🇹&nbsp;Portugal</td><td align="right" nowrap>181</td><td nowrap><code>https://iptv-org.github.io/epg/guides/pt.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇵🇹&nbsp;Portugal</td><td align="right" nowrap>182</td><td nowrap><code>https://iptv-org.github.io/epg/guides/pt.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇵🇷&nbsp;Puerto Rico</td><td align="right" nowrap>196</td><td nowrap><code>https://iptv-org.github.io/epg/guides/pr.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇶🇦&nbsp;Qatar</td><td align="right" nowrap>136</td><td nowrap><code>https://iptv-org.github.io/epg/guides/qa.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇨🇬&nbsp;Republic of the Congo</td><td align="right" nowrap>120</td><td nowrap><code>https://iptv-org.github.io/epg/guides/cg.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇶🇦&nbsp;Qatar</td><td align="right" nowrap>134</td><td nowrap><code>https://iptv-org.github.io/epg/guides/qa.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇨🇬&nbsp;Republic of the Congo</td><td align="right" nowrap>119</td><td nowrap><code>https://iptv-org.github.io/epg/guides/cg.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇷🇴&nbsp;Romania</td><td align="right" nowrap>201</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ro.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇷🇺&nbsp;Russia</td><td align="right" nowrap>327</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ru.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇷🇼&nbsp;Rwanda</td><td align="right" nowrap>123</td><td nowrap><code>https://iptv-org.github.io/epg/guides/rw.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇷🇪&nbsp;Réunion</td><td align="right" nowrap>108</td><td nowrap><code>https://iptv-org.github.io/epg/guides/re.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇷🇺&nbsp;Russia</td><td align="right" nowrap>325</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ru.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇷🇼&nbsp;Rwanda</td><td align="right" nowrap>122</td><td nowrap><code>https://iptv-org.github.io/epg/guides/rw.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇷🇪&nbsp;Réunion</td><td align="right" nowrap>107</td><td nowrap><code>https://iptv-org.github.io/epg/guides/re.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇧🇱&nbsp;Saint Barthélemy</td><td align="right" nowrap>83</td><td nowrap><code>https://iptv-org.github.io/epg/guides/bl.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇸🇭&nbsp;Saint Helena</td><td align="right" nowrap>100</td><td nowrap><code>https://iptv-org.github.io/epg/guides/sh.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇸🇭&nbsp;Saint Helena</td><td align="right" nowrap>99</td><td nowrap><code>https://iptv-org.github.io/epg/guides/sh.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇰🇳&nbsp;Saint Kitts and Nevis</td><td align="right" nowrap>68</td><td nowrap><code>https://iptv-org.github.io/epg/guides/kn.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇱🇨&nbsp;Saint Lucia</td><td align="right" nowrap>68</td><td nowrap><code>https://iptv-org.github.io/epg/guides/lc.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇲🇫&nbsp;Saint Martin</td><td align="right" nowrap>83</td><td nowrap><code>https://iptv-org.github.io/epg/guides/mf.xml</code></td></tr>
@ -207,49 +207,49 @@ To load a program guide, all you need to do is copy the link to one or more of t
<tr><td valign="top" rowspan="1">🇻🇨&nbsp;Saint Vincent and the Grenadines</td><td align="right" nowrap>68</td><td nowrap><code>https://iptv-org.github.io/epg/guides/vc.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇼🇸&nbsp;Samoa</td><td align="right" nowrap>67</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ws.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇸🇲&nbsp;San Marino</td><td align="right" nowrap>92</td><td nowrap><code>https://iptv-org.github.io/epg/guides/sm.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇸🇦&nbsp;Saudi Arabia</td><td align="right" nowrap>109</td><td nowrap><code>https://iptv-org.github.io/epg/guides/sa.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇸🇳&nbsp;Senegal</td><td align="right" nowrap>126</td><td nowrap><code>https://iptv-org.github.io/epg/guides/sn.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇸🇦&nbsp;Saudi Arabia</td><td align="right" nowrap>107</td><td nowrap><code>https://iptv-org.github.io/epg/guides/sa.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇸🇳&nbsp;Senegal</td><td align="right" nowrap>125</td><td nowrap><code>https://iptv-org.github.io/epg/guides/sn.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇷🇸&nbsp;Serbia</td><td align="right" nowrap>310</td><td nowrap><code>https://iptv-org.github.io/epg/guides/rs.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇸🇨&nbsp;Seychelles</td><td align="right" nowrap>113</td><td nowrap><code>https://iptv-org.github.io/epg/guides/sc.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇸🇱&nbsp;Sierra Leone</td><td align="right" nowrap>106</td><td nowrap><code>https://iptv-org.github.io/epg/guides/sl.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇸🇨&nbsp;Seychelles</td><td align="right" nowrap>112</td><td nowrap><code>https://iptv-org.github.io/epg/guides/sc.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇸🇱&nbsp;Sierra Leone</td><td align="right" nowrap>105</td><td nowrap><code>https://iptv-org.github.io/epg/guides/sl.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇸🇬&nbsp;Singapore</td><td align="right" nowrap>154</td><td nowrap><code>https://iptv-org.github.io/epg/guides/sg.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇸🇽&nbsp;Sint Maarten</td><td align="right" nowrap>77</td><td nowrap><code>https://iptv-org.github.io/epg/guides/sx.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇸🇰&nbsp;Slovakia</td><td align="right" nowrap>180</td><td nowrap><code>https://iptv-org.github.io/epg/guides/sk.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇸🇮&nbsp;Slovenia</td><td align="right" nowrap>156</td><td nowrap><code>https://iptv-org.github.io/epg/guides/si.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇸🇧&nbsp;Solomon Islands</td><td align="right" nowrap>67</td><td nowrap><code>https://iptv-org.github.io/epg/guides/sb.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇸🇴&nbsp;Somalia</td><td align="right" nowrap>122</td><td nowrap><code>https://iptv-org.github.io/epg/guides/so.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇸🇴&nbsp;Somalia</td><td align="right" nowrap>121</td><td nowrap><code>https://iptv-org.github.io/epg/guides/so.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇿🇦&nbsp;South Africa</td><td align="right" nowrap>185</td><td nowrap><code>https://iptv-org.github.io/epg/guides/za.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇬🇸&nbsp;South Georgia and the South Sandwich Islands</td><td align="right" nowrap>58</td><td nowrap><code>https://iptv-org.github.io/epg/guides/gs.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇰🇷&nbsp;South Korea</td><td align="right" nowrap>143</td><td nowrap><code>https://iptv-org.github.io/epg/guides/kr.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇸🇸&nbsp;South Sudan</td><td align="right" nowrap>106</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ss.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇸🇸&nbsp;South Sudan</td><td align="right" nowrap>105</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ss.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇪🇸&nbsp;Spain</td><td align="right" nowrap>253</td><td nowrap><code>https://iptv-org.github.io/epg/guides/es.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇱🇰&nbsp;Sri Lanka</td><td align="right" nowrap>73</td><td nowrap><code>https://iptv-org.github.io/epg/guides/lk.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇸🇩&nbsp;Sudan</td><td align="right" nowrap>127</td><td nowrap><code>https://iptv-org.github.io/epg/guides/sd.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇸🇩&nbsp;Sudan</td><td align="right" nowrap>126</td><td nowrap><code>https://iptv-org.github.io/epg/guides/sd.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇸🇷&nbsp;Suriname</td><td align="right" nowrap>62</td><td nowrap><code>https://iptv-org.github.io/epg/guides/sr.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇸🇯&nbsp;Svalbard and Jan Mayen</td><td align="right" nowrap>56</td><td nowrap><code>https://iptv-org.github.io/epg/guides/sj.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇸🇿&nbsp;Swaziland</td><td align="right" nowrap>106</td><td nowrap><code>https://iptv-org.github.io/epg/guides/sz.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇸🇪&nbsp;Sweden</td><td align="right" nowrap>184</td><td nowrap><code>https://iptv-org.github.io/epg/guides/se.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇨🇭&nbsp;Switzerland</td><td align="right" nowrap>240</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ch.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇸🇾&nbsp;Syria</td><td align="right" nowrap>93</td><td nowrap><code>https://iptv-org.github.io/epg/guides/sy.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇸🇹&nbsp;São Tomé and Príncipe</td><td align="right" nowrap>113</td><td nowrap><code>https://iptv-org.github.io/epg/guides/st.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇸🇿&nbsp;Swaziland</td><td align="right" nowrap>105</td><td nowrap><code>https://iptv-org.github.io/epg/guides/sz.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇸🇪&nbsp;Sweden</td><td align="right" nowrap>183</td><td nowrap><code>https://iptv-org.github.io/epg/guides/se.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇨🇭&nbsp;Switzerland</td><td align="right" nowrap>234</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ch.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇸🇾&nbsp;Syria</td><td align="right" nowrap>91</td><td nowrap><code>https://iptv-org.github.io/epg/guides/sy.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇸🇹&nbsp;São Tomé and Príncipe</td><td align="right" nowrap>112</td><td nowrap><code>https://iptv-org.github.io/epg/guides/st.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇹🇼&nbsp;Taiwan</td><td align="right" nowrap>72</td><td nowrap><code>https://iptv-org.github.io/epg/guides/tw.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇹🇯&nbsp;Tajikistan</td><td align="right" nowrap>64</td><td nowrap><code>https://iptv-org.github.io/epg/guides/tj.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇹🇿&nbsp;Tanzania</td><td align="right" nowrap>110</td><td nowrap><code>https://iptv-org.github.io/epg/guides/tz.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇹🇭&nbsp;Thailand</td><td align="right" nowrap>164</td><td nowrap><code>https://iptv-org.github.io/epg/guides/th.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇹🇬&nbsp;Togo</td><td align="right" nowrap>117</td><td nowrap><code>https://iptv-org.github.io/epg/guides/tg.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇹🇿&nbsp;Tanzania</td><td align="right" nowrap>109</td><td nowrap><code>https://iptv-org.github.io/epg/guides/tz.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇹🇭&nbsp;Thailand</td><td align="right" nowrap>167</td><td nowrap><code>https://iptv-org.github.io/epg/guides/th.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇹🇬&nbsp;Togo</td><td align="right" nowrap>116</td><td nowrap><code>https://iptv-org.github.io/epg/guides/tg.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇹🇰&nbsp;Tokelau</td><td align="right" nowrap>67</td><td nowrap><code>https://iptv-org.github.io/epg/guides/tk.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇹🇴&nbsp;Tonga</td><td align="right" nowrap>67</td><td nowrap><code>https://iptv-org.github.io/epg/guides/to.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇹🇹&nbsp;Trinidad and Tobago</td><td align="right" nowrap>68</td><td nowrap><code>https://iptv-org.github.io/epg/guides/tt.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇹🇳&nbsp;Tunisia</td><td align="right" nowrap>125</td><td nowrap><code>https://iptv-org.github.io/epg/guides/tn.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇹🇷&nbsp;Turkey</td><td align="right" nowrap>250</td><td nowrap><code>https://iptv-org.github.io/epg/guides/tr.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇹🇳&nbsp;Tunisia</td><td align="right" nowrap>124</td><td nowrap><code>https://iptv-org.github.io/epg/guides/tn.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇹🇷&nbsp;Turkey</td><td align="right" nowrap>247</td><td nowrap><code>https://iptv-org.github.io/epg/guides/tr.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇹🇲&nbsp;Turkmenistan</td><td align="right" nowrap>60</td><td nowrap><code>https://iptv-org.github.io/epg/guides/tm.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇹🇨&nbsp;Turks and Caicos Islands</td><td align="right" nowrap>68</td><td nowrap><code>https://iptv-org.github.io/epg/guides/tc.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇹🇻&nbsp;Tuvalu</td><td align="right" nowrap>67</td><td nowrap><code>https://iptv-org.github.io/epg/guides/tv.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇺🇲&nbsp;U.S. Minor Outlying Islands</td><td align="right" nowrap>56</td><td nowrap><code>https://iptv-org.github.io/epg/guides/um.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇻🇮&nbsp;U.S. Virgin Islands</td><td align="right" nowrap>68</td><td nowrap><code>https://iptv-org.github.io/epg/guides/vi.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇺🇬&nbsp;Uganda</td><td align="right" nowrap>107</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ug.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇺🇬&nbsp;Uganda</td><td align="right" nowrap>106</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ug.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇺🇦&nbsp;Ukraine</td><td align="right" nowrap>91</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ua.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇦🇪&nbsp;United Arab Emirates</td><td align="right" nowrap>110</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ae.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇦🇪&nbsp;United Arab Emirates</td><td align="right" nowrap>105</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ae.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇬🇧&nbsp;United Kingdom</td><td align="right" nowrap>423</td><td nowrap><code>https://iptv-org.github.io/epg/guides/uk.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇺🇸&nbsp;United States</td><td align="right" nowrap>1400</td><td nowrap><code>https://iptv-org.github.io/epg/guides/us.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇺🇾&nbsp;Uruguay</td><td align="right" nowrap>225</td><td nowrap><code>https://iptv-org.github.io/epg/guides/uy.xml</code></td></tr>
@ -257,12 +257,12 @@ To load a program guide, all you need to do is copy the link to one or more of t
<tr><td valign="top" rowspan="1">🇻🇺&nbsp;Vanuatu</td><td align="right" nowrap>69</td><td nowrap><code>https://iptv-org.github.io/epg/guides/vu.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇻🇦&nbsp;Vatican City</td><td align="right" nowrap>92</td><td nowrap><code>https://iptv-org.github.io/epg/guides/va.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇻🇪&nbsp;Venezuela</td><td align="right" nowrap>214</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ve.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇻🇳&nbsp;Vietnam</td><td align="right" nowrap>111</td><td nowrap><code>https://iptv-org.github.io/epg/guides/vn.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇻🇳&nbsp;Vietnam</td><td align="right" nowrap>113</td><td nowrap><code>https://iptv-org.github.io/epg/guides/vn.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇼🇫&nbsp;Wallis and Futuna</td><td align="right" nowrap>69</td><td nowrap><code>https://iptv-org.github.io/epg/guides/wf.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇪🇭&nbsp;Western Sahara</td><td align="right" nowrap>111</td><td nowrap><code>https://iptv-org.github.io/epg/guides/eh.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇾🇪&nbsp;Yemen</td><td align="right" nowrap>91</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ye.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇿🇲&nbsp;Zambia</td><td align="right" nowrap>110</td><td nowrap><code>https://iptv-org.github.io/epg/guides/zm.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇿🇼&nbsp;Zimbabwe</td><td align="right" nowrap>106</td><td nowrap><code>https://iptv-org.github.io/epg/guides/zw.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇪🇭&nbsp;Western Sahara</td><td align="right" nowrap>110</td><td nowrap><code>https://iptv-org.github.io/epg/guides/eh.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇾🇪&nbsp;Yemen</td><td align="right" nowrap>89</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ye.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇿🇲&nbsp;Zambia</td><td align="right" nowrap>109</td><td nowrap><code>https://iptv-org.github.io/epg/guides/zm.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇿🇼&nbsp;Zimbabwe</td><td align="right" nowrap>105</td><td nowrap><code>https://iptv-org.github.io/epg/guides/zw.xml</code></td></tr>
<tr><td valign="top" rowspan="1">🇦🇽&nbsp;Åland</td><td align="right" nowrap>63</td><td nowrap><code>https://iptv-org.github.io/epg/guides/ax.xml</code></td></tr>
</tbody>
</table>

View file

@ -10,7 +10,6 @@
"programs:load": "node scripts/commands/programs/load.js",
"programs:save": "node scripts/commands/programs/save.js",
"guides:update": "NODE_OPTIONS=--max-old-space-size=5120 node scripts/commands/guides/update.js",
"guides:update_legacy": "node scripts/commands/guides/update_legacy.js",
"api:load": "./scripts/commands/api/load.sh",
"api:update": "node scripts/commands/api/update.js",
"readme:update": "node scripts/commands/readme/update.js",

View file

@ -1,7 +1,7 @@
#!/bin/bash
mkdir -p scripts/data
curl -L -o scripts/data/channels.json https://iptv-org.github.io/api/channels.json
curl -L -o scripts/data/countries.json https://iptv-org.github.io/api/countries.json
curl -L -o scripts/data/regions.json https://iptv-org.github.io/api/regions.json
mkdir -p scripts/data
curl -L -o scripts/data/channels.json https://iptv-org.github.io/api/channels.json
curl -L -o scripts/data/countries.json https://iptv-org.github.io/api/countries.json
curl -L -o scripts/data/regions.json https://iptv-org.github.io/api/regions.json
curl -L -o scripts/data/subdivisions.json https://iptv-org.github.io/api/subdivisions.json

View file

@ -12,14 +12,18 @@ const logPath = `${LOGS_DIR}/guides/update.log`
let api_channels = []
let channels_dic = {}
let db_programs = []
let guides = []
async function main() {
logger.info(`starting...`)
logger.info('loading API data...')
logger.info('loading data/countries.json...')
await api.countries.load()
logger.info('loading data/channels.json...')
await api.channels.load()
logger.info('loading data/regions.json...')
await api.regions.load()
logger.info('loading data/subdivisions.json...')
await api.subdivisions.load()
api_channels = await api.channels.all()
@ -49,6 +53,11 @@ async function main() {
await generateByCountry()
await generateBySource()
logger.info(`creating ${logPath}...`)
await file.create(logPath, guides.map(g => JSON.stringify(g)).join('\r\n'))
await makeReport()
}
main()
@ -66,15 +75,13 @@ async function generateBySource() {
let { channels } = await save(filename, programs)
for (let channel of channels) {
let result = {
guides.push({
groupedBy: 'site+lang',
lang: channel.lang,
site: channel.site,
channel: channel.id,
filename
}
await file.append(logPath, JSON.stringify(result) + '\r\n')
})
}
}
}
@ -132,16 +139,14 @@ async function generateByCountry() {
let { channels } = await save(filename, programs)
for (let channel of channels) {
let result = {
guides.push({
groupedBy: 'country',
country: country.code,
lang: channel.lang,
site: channel.site,
channel: channel.id,
filename
}
await file.append(logPath, JSON.stringify(result) + '\r\n')
})
}
}
}
@ -222,3 +227,20 @@ function calcScore(program) {
return score
}
async function makeReport() {
const errors = []
let programs = _.uniqBy(db_programs, p => p.site + p.channel)
for (let program of programs) {
if (!guides.find(g => g.channel === program.channel)) {
const channel = await api.channels.find({ id: program.channel })
errors.push({ type: 'no_guide', ...program, ...channel })
}
}
console.log()
logger.info(`report:`)
console.table(errors, ['type', 'site', 'lang', 'channel', 'broadcast_area', 'languages'])
logger.error(`found ${errors.length} error(s)`)
}

View file

@ -2,4 +2,4 @@
{"groupedBy":"country","country":"UK","lang":"en","site":"virginmedia.com","channel":"BBCNews.uk","filename":"uk"}
{"groupedBy":"site+lang","lang":"da","site":"allente.se","channel":"6eren.dk","filename":"allente.se/da"}
{"groupedBy":"site+lang","lang":"en","site":"virginmedia.com","channel":"BBCNews.uk","filename":"virginmedia.com/en"}
{"groupedBy":"site+lang","lang":"en","site":"sky.com","channel":"BBCNews.uk","filename":"sky.com/en"}
{"groupedBy":"site+lang","lang":"en","site":"sky.com","channel":"BBCNews.uk","filename":"sky.com/en"}

View file

@ -53,5 +53,22 @@
"logo": "https://rndcdn.dstv.com/dstvcms/2020/08/31/M-Net_Movies_2_Logo_4-3_lightbackground_xlrg.png"
},
{"id":"6eren.dk","name":"6'eren","alt_names":[],"network":null,"owners":["Warner Bros. Discovery EMEA"],"country":"DK","subdivision":null,"city":null,"broadcast_area":["c/DK"],"languages":["dan"],"categories":[],"is_nsfw":false,"launched":"2009-01-01","closed":null,"replaced_by":null,"website":"http://www.6-eren.dk/","logo":"https://upload.wikimedia.org/wikipedia/commons/6/64/6%27eren_2015.png"},
{"id":"BBCNews.uk","name":"BBC News","alt_names":[],"network":null,"owners":[],"country":"UK","subdivision":null,"city":null,"broadcast_area":["c/UK"],"languages":["eng"],"categories":["news"],"is_nsfw":false,"launched":null,"closed":null,"replaced_by":null,"website":"http://news.bbc.co.uk/","logo":"https://i.imgur.com/rPzH88J.png"}
{"id":"BBCNews.uk","name":"BBC News","alt_names":[],"network":null,"owners":[],"country":"UK","subdivision":null,"city":null,"broadcast_area":["c/UK"],"languages":["eng"],"categories":["news"],"is_nsfw":false,"launched":null,"closed":null,"replaced_by":null,"website":"http://news.bbc.co.uk/","logo":"https://i.imgur.com/rPzH88J.png"},
{
"id": "CNN.us",
"name": "CNN",
"network": null,
"country": "US",
"subdivision": null,
"city": null,
"broadcast_area": [
"c/US"
],
"languages": [
"eng"
],
"categories": [],
"is_nsfw": false,
"logo": "https://www.directv.com/images/logos/channels/dark/large/579.png"
}
]

View file

@ -1,4 +1,5 @@
{"site":"allente.se","channel":"6eren.dk","titles":[{"value":"Diners, Drive-Ins and Dives","lang":"da"}],"sub_titles":[],"descriptions":[{"value":"Underholdning","lang":"da"}],"icon":{"src":"https://viasatps.api.comspace.se/PS/channeldate/image/viasat.ps/487/2022-10-24/se.cs.6eren.event.B_0254194276971024040000.jpg?size=2560x1440"},"episodeNumbers":[{"system":"xmltv_ns","value":"23.5.0/1"},{"system":"onscreen","value":"S24E06"}],"date":null,"start":1666584000000,"stop":1666585500000,"urls":[],"ratings":[],"categories":[{"value":"series","lang":"da"}],"directors":[],"actors":[],"writers":[],"adapters":[],"producers":[],"composers":[],"editors":[],"presenters":[],"commentators":[],"guests":[],"_qid":"f6cxSM73LfZ8TdYz","_id":"HxsrTRTFj1z05TAK"}
{"site":"allente.se","channel":"6eren.dk","titles":[{"value":"Diners, Drive-Ins and Dives","lang":"da"}],"sub_titles":[],"descriptions":[{"value":"Underholdning","lang":"da"}],"icon":{"src":"https://viasatps.api.comspace.se/PS/channeldate/image/viasat.ps/487/2022-10-24/se.cs.6eren.event.B_0254194276971024040000.jpg?size=2560x1440"},"episodeNumbers":[{"system":"xmltv_ns","value":"23.5.0/1"},{"system":"onscreen","value":"S24E06"}],"date":null,"start":1666584000000,"stop":1666585500000,"urls":[],"ratings":[],"categories":[{"value":"series","lang":"da"}],"directors":[],"actors":[],"writers":[],"adapters":[],"producers":[],"composers":[],"editors":[],"presenters":[],"commentators":[],"guests":[],"_qid":"f6cxTM73LfZ8TdYz","_id":"HxsrBRTFj1z05TAK"}
{"site":"virginmedia.com","channel":"BBCNews.uk","titles":[{"value":"BBC News at One","lang":"en"}],"sub_titles":[],"descriptions":[{"value":"The latest national and international news, followed by weather.","lang":"en"}],"icon":{"src":""},"episodeNumbers":[{"system":"xmltv_ns","value":"96839999.145799123.0/1"},{"system":"onscreen","value":"S96840000E145799124"}],"date":null,"start":1666872000000,"stop":1666873800000,"urls":[],"ratings":[],"categories":[{"value":"News","lang":"en"}],"directors":[],"actors":[],"writers":[],"adapters":[],"producers":[],"composers":[],"editors":[],"presenters":[],"commentators":[],"guests":[],"_qid":"lNXh3lBnb4n1DBzs","_id":"quKCInjZV98xFUAf"}
{"site":"sky.com","channel":"BBCNews.uk","titles":[{"value":"BBC News at One","lang":"en"}],"sub_titles":[],"descriptions":[{"value":"The latest national and international news from the BBC. [S,SL]","lang":"en"}],"icon":{"src":"http://epgstatic.sky.com/epgdata/1.0/paimage/46/1/lisa/5.2.2/linear/channel/ca247bc8-6be0-48f9-88d1-865f87f7680e/2011"},"episodeNumbers":[],"date":null,"start":1666872000000,"stop":1666873800000,"urls":[],"ratings":[],"categories":[],"directors":[],"actors":[],"writers":[],"adapters":[],"producers":[],"composers":[],"editors":[],"presenters":[],"commentators":[],"guests":[],"_qid":"36duI92slofEXlSa","_id":"ryzed0Bqda1QtE7i"}
{"site":"sky.com","channel":"BBCNews.uk","titles":[{"value":"BBC News at One","lang":"en"}],"sub_titles":[],"descriptions":[{"value":"The latest national and international news from the BBC. [S,SL]","lang":"en"}],"icon":{"src":"http://epgstatic.sky.com/epgdata/1.0/paimage/46/1/lisa/5.2.2/linear/channel/ca247bc8-6be0-48f9-88d1-865f87f7680e/2011"},"episodeNumbers":[],"date":null,"start":1666872000000,"stop":1666873800000,"urls":[],"ratings":[],"categories":[],"directors":[],"actors":[],"writers":[],"adapters":[],"producers":[],"composers":[],"editors":[],"presenters":[],"commentators":[],"guests":[],"_qid":"36duI92slofEXlSa","_id":"ryzed0Bqda1QtE7i"}
{"site":"sky.com","channel":"CNN.us","titles":[{"value":"French title","lang":"fr"}],"sub_titles":[],"descriptions":[],"icon":{},"episodeNumbers":[],"date":null,"start":1666872000000,"stop":1666873800000,"urls":[],"ratings":[],"categories":[],"directors":[],"actors":[],"writers":[],"adapters":[],"producers":[],"composers":[],"editors":[],"presenters":[],"commentators":[],"guests":[],"_qid":"37duI92slofEXlSa","_id":"rxzed0Bqda1QtE7i"}

View file

@ -9,14 +9,44 @@ beforeEach(() => {
'tests/__data__/input/database/update-guides/programs.db',
'tests/__data__/output/programs.db'
)
})
it('can generate /guides', () => {
const stdout = execSync(
'DB_DIR=tests/__data__/output LOGS_DIR=tests/__data__/output/logs DATA_DIR=tests/__data__/input/data PUBLIC_DIR=tests/__data__/output CURR_DATE=2022-10-20 npm run guides:update',
{ encoding: 'utf8' }
)
})
it('can generate /guides', () => {
expect(stdout).toBe(
`
> guides:update
> NODE_OPTIONS=--max-old-space-size=5120 node scripts/commands/guides/update.js
starting...
loading data/countries.json...
loading data/channels.json...
loading data/regions.json...
loading data/subdivisions.json...
loading database/programs.db...
found 5 programs
creating tests/__data__/output/guides/dk.xml...
creating tests/__data__/output/guides/dk.xml.gz...
creating tests/__data__/output/guides/dk.json...
creating tests/__data__/output/guides/uk.xml...
creating tests/__data__/output/guides/uk.xml.gz...
creating tests/__data__/output/guides/uk.json...
creating tests/__data__/output/logs/guides/update.log...
report:
(index) type site lang channel broadcast_area languages
0 'no_guide' 'sky.com' 'fr' 'CNN.us' [ 'c/US' ] [ 'eng' ]
found 1 error(s)
`
)
const uncompressed = glob
.sync('tests/__data__/expected/guides/*.xml')
.map(f => f.replace('tests/__data__/expected/', ''))