1 2 3 4 5 6 7<!DOCTYPE html> 8<!--[if IE 8]> 9<html class="no-js lt-ie9"> <![endif]--> 10<!--[if gt IE 8]><!--> 11<html class="no-js"> <!--<![endif]--> 12<head itemscope itemtype="http://schema.org/WebSite"> 13
13<script> 14 15 !function (f, b, e, v, n, t, s) { 16 if (f.fbq) return; 17 n = f.fbq = function () { 18 n.callMethod ? 19 n.callMethod.apply(n, arguments) : n.queue.push(arguments) 20 }; 21 if (!f._fbq) f._fbq = n; 22 n.push = n; 23 n.loaded = !0; 24 n.version = '2.0'; 25 n.queue = []; 26 t = b.createElement(e); 27 t.async = !0; 28 t.src = v; 29 s = b.getElementsByTagName(e)[0]; 30 s.parentNode.insertBefore(t, s) 31 }(window, document, 'script', 32 'https://connect.facebook.net/en_US/fbevents.js'); 33 34 let key = '1239771019520398'; 35 fbq('init', key); 36 fbq('track', 'PageView'); 37</script>
37 38<noscript><img height="1" width="1" style="display:none" 39 src="https://www.facebook.com/tr?id=1239771019520398&ev=PageView&noscript=1" 40/></noscript> 41 42 <meta charset="utf-8"/> 43 <meta http-equiv="X-UA-Compatible" content="IE=edge"/> 44 <title itemprop='name'> 45 East Coast Radio App | Download | East Coast Radio 46 </title> 47 48 49 <link rel="canonical" href="https://www.ecr.co.za/east-coast-radio-app/" itemprop="url"> 50 51 52 <meta name="keywords" content=" 53 54 55 "> 56 <meta name="description" content=" 57 58 59 Celebrate 3 decades of East Coast Radio with our new Radio Streaming App! Download today to tune in and stream great music, news and features."/> 60 61 <meta name="viewport" content="width=device-width, initial-scale=1"/> 62 63 64 65 <!-- Global site tag (gtag.js) - Google Analytics -->
vendor: 64 bytes, lines 65-66
65 66<script async src="https://www.googletagmanager.com/gtag/js?id=
66G-M4391TSB60
vendor: 12 bytes, line 66
66"></script>
67<script> 68
vendor: 144 bytes, lines 68-75
68window.dataLayer = window.dataLayer || []; 69 70 function gtag() { 71 dataLayer.push(arguments); 72 } 73 74 gtag('js', new Date()); 75 gtag('config', '
75G-M4391TSB60
vendor: 4 bytes, line 75
75');
76</script>
76 77 78 79 80<!-- Google Tag Manager -->
81<script>
vendor: 327 bytes, lines 81-85
81(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 82new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 83j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 84'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 85})(window,document,'script','dataLayer','
85GTM-PBN8S6P
vendor: 3 bytes, line 85
85');
85</script>
85 86<!-- End Google Tag Manager --> 87 88 89
89<script> 90 var googletag = googletag || {}; 91 googletag.cmd = googletag.cmd || []; 92 </script>
92 93 94
94<script async="async" src="https://www.googletagservices.com/tag/js/gpt.js"></script>
94 95 96 97
97<script type="application/ld+json"> 98 { 99 "@context": "http://schema.org", 100 "@type": "Organization", 101 "url": "https://www.ecr.co.za/", 102 "logo": "https://turntable.kagiso.io/core/images/ecr/logo_md_2017.svg", 103 "sameAs": [ 104 "https://www.facebook.com/eastcoastradio", 105 "https://www.instagram.com/eastcoastradio/", 106 "https://twitter.com/Ecr9495", 107 "https://www.youtube.com/user/ecronair" 108 ], 109 "contactPoint": [{ 110 "@type": "ContactPoint", 111 "telephone": "+27 31 570 9495", 112 "contactType": "customer service" 113 }] 114 } 115</script>
115 116 117 118 119 120 121 122<meta property="og:locale" content="en_GB"/> 123<meta property="og:type" content="website"/> 124<meta property="og:title" content="East Coast Radio App | Download | East Coast Radio"/> 125<meta property="og:description" content="Celebrate 3 decades of East Coast Radio with our new Radio Streaming App! Download today to tune in and stream great music, news and features."/> 126<meta property="og:url" content="https://m.ecr.co.za/east-coast-radio-app/"/> 127<meta property="og:site_name" content="ECR"/> 128 129 130 <meta property="og:image" content=""/> 131 132 133 134 135 <meta property="fb:app_id" content="669961536436763" /> 136 137 138 139
139<script>!function (s, e, t, r) { 140 var a = e.createElement("script"); 141 a.async = !0; 142 a.src = "https://app.masslytics.io/masslytics.js"; 143 var c = e.getElementsByTagName("script")[0]; 144 c.parentNode.insertBefore(a, c); 145 s.masslyticsApiSubdomain = "app"; 146 s.masslyticsBrandId = "ML-231622"; 147 }(window, document);</script>
147 148 149 150 151 <link rel="stylesheet" type="text/css" href="https://turntable.kagiso.io/core/css/main-ecr.css"> 152 153 154 155 <style> 156 .block-image { 157 padding: 0 15px; 158 } 159 </style> 160 161 162 163 <link rel="apple-touch-icon" sizes="152x152" href="https://turntable.kagiso.io/core/images/ecr/apple-touch-icon.png"> 164 165 166 <link rel="shortcut icon" href="https://turntable.kagiso.io/core/images/ecr/favicon.ico"> 167 168 169 <link href="//fonts.googleapis.com/css?family=Open+Sans:300,400,700" type="text/css"> 170 <link rel="stylesheet" href="https://turntable.kagiso.io/core/vendor/owlCarousel/dist/assets/owl.carousel.min.css" type="text/css"> 171 172
172<script>
vendor: 115 bytes, lines 172-175
172 173 (function(h,o,t,j,a,r){ 174 h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; 175 h._hjSettings={hjid:
175329868
vendor: 239 bytes, lines 175-181
175,hjsv:5 176 }; 177 a=o.getElementsByTagName('head')[0]; 178 r=o.createElement('script');r.async=1; 179 r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; 180 a.appendChild(r); 181 })(window,document,'//static.hotjar.com/c/hotjar-','.js?sv=');
182</script>
182 183 184
184<script async="async" src="https://www.googletagservices.com/tag/js/gpt.js"></script>
184 185 186 187 188 189</head> 190 191<body class=""> 192 193 194 <!-- Google Tag Manager (noscript) -->
vendor: 75 bytes, lines 194-196
194 195 <noscript> 196 <iframe src="https://www.googletagmanager.com/ns.html?id=
196GTM-PBN8S6P
vendor: 100 bytes, lines 196-199
196" 197 height="0" width="0" style="display:none;visibility:hidden"></iframe> 198 </noscript> 199
199<!-- End Google Tag Manager (noscript) --> 200 201 202 203 204<div class="spinner-container"> 205 <div class="lds-ripple"> 206 <div></div> 207 <div></div> 208 </div> 209</div> 210 211 212 213 214<style> 215 216</style> 217<header class="header"> 218 <div class="container"> 219 <div class="nav--right-pan"> 220 <a href="#" class="nav-drawer--trigger"> 221 <span class="icon-bars"></span> 222 </a> 223 <a href="/" class="header--logo"></a> 224 225<div class="dropdown dropdown-ll"> 226 <a href="/listen-live/" 227 title="Click here to listen live" 228 229 class="btn-listen-live" 230 target="listen_live" 231 > 232 <span class="icon-listen-live"></span> 233 234 Stream ECR 235 236 </a> 237 238 239</div> 240 241 242 <a href="/ecr-gold-listen-live" target="listen_live" 243 class="btn-listen-live listen-live-gold" 244 title="Click here for East Coast Gold listen live"> 245 <span class="icon-play-gold"> <img src="https://turntable.kagiso.io/core/images/ecr/icon_listen_live_gold.png" alt=""></span> 246 Stream EC Gold 247 </a> 248 <a href="https://www.ecr.co.za/big-favour-donate/" class="btn-listen-live btn-upload" title="Click here to donate"> 249 Donate 250 </a> 251 252 253 254 255<a href="/weather/" class="btn-listen-live btn-upload weather_page_menu_item" title="Weather"><span 256 class="weather-text">Weather</span></a> 257 258 </div> 259 260 <ul class="header--links"> 261 <li><div class="nav-search"> 262 <form action="/search/" method="get" class="nav-search--form"> 263 <input 264 type="text" 265 name="query" 266 class="search--input" 267 placeholder="Search..." 268 value=""> 269 <span class="icon-search"></span> 270 <input type="submit" value="Search" class="search--icon"> 271 </form> 272</div> 273</li> 274 <li class="nav-social-icons"> 275 276<div class="icons-social icons-social--no-margin"> 277 <a href="https://www.facebook.com/eastcoastradio" target="_blank"><span class="icon-facebook"></span></a> 278 <a href="https://twitter.com/Ecr9495" target="_blank"> 279 <img src="https://turntable.kagiso.io/core/images/icons/x-twitter.svg" alt="" width="17" style="padding-bottom: 8px"> 280 </a> 281 <a href="https://www.instagram.com/eastcoastradio/" target="_blank"><span class="icon-instagram"></span></a> 282 <a href=" https://www.tiktok.com/@eastcoastradiokzn" target="_blank"> 283 <img src="https://turntable.kagiso.io/core/images/icons/tiktok-icon.svg" alt="" width="15" style="padding-bottom: 8px"> 284 </a> 285 286 <a href="https://www.youtube.com/user/ecronair" target="_blank"> 287 <span class="icon-youtube-play"></span> 288 </a> 289 290 <a href="/contact-us"> 291 <span class="icon-envelope"></span> 292 </a> 293</div> 294</li> 295 </ul> 296 </div> 297 <!-- Todo: Refactor, make this more simple --> 298 299 300 301 302 303 304 305 306 <style> 307 .dropdown:hover .dropdown-menu { 308 display: block; 309 margin-top: 0; 310 } 311 312 .dropdown:focus { 313 background-color: #0d0d0d; 314 } 315 316 .dropdown-menu { 317 margin-top: -3px; 318 border: none; 319 } 320 .dropdown-backdrop{ 321 z-index: -100 !important; 322 } 323 324 .nav--list a:hover, .nav--list .dropdown:hover { 325 background-color: #494949 !important; 326 } 327 </style> 328 329 330<div class="sidebar-blackout"></div> 331 332<nav class="nav"> 333 <div class="container"> 334 <div class="nav--items"> 335 <a href="#0" class="mobile-nav-close"><span class="icon-times"></span>Close</a> 336 <!-- Todo: remove and use append --> 337 <ul class="nav--links"> 338 <li> 339 340 341<div class="dropdown dropdown-ll"> 342 <a href="/listen-live/" 343 title="Click here to listen live" 344 345 class="btn-listen-live" 346 target="listen_live" 347 > 348 <span class="icon-listen-live"></span> 349 350 Stream ECR 351 352 </a> 353 354 355</div> 356 357 358 <a href="/ecr-gold-listen-live" target="listen_live" 359 class="btn-listen-live listen-live-gold" 360 title="Click here for East Coast Gold listen live"> 361 <span class="icon-play-gold"> <img src="https://turntable.kagiso.io/core/images/ecr/icon_listen_live_gold.png" alt=""></span> 362 Stream EC Gold 363 </a> 364 <a href="" class="btn-listen-live btn-upload" title="Click here to donate"> 365 Donate 366 </a> 367 368 369 370 371<a href="/weather/" class="btn-listen-live btn-upload weather_page_menu_item" title="Weather"><span 372 class="weather-text">Weather</span></a> 373 374 </li> 375 <li class="header--links--contact"> 376 <a href="/contact-us/contact-details/"><span class="icon-phone"></span>Contact Us</a> 377 </li> 378 <li><div class="nav-search"> 379 <form action="/search/" method="get" class="nav-search--form"> 380 <input 381 type="text" 382 name="query" 383 class="search--input" 384 placeholder="Search..." 385 value=""> 386 <span class="icon-search"></span> 387 <input type="submit" value="Search" class="search--icon"> 388 </form> 389</div> 390</li> 391 </ul> 392 <ul class="nav--list"> 393 394 395 <li class="home "> 396 <a href="/">Home</a> 397 398 399 <li class=" dropdown" style="position: relative"> 400 <a href="/shows/" onclick="window.location.href = /shows/" 401 data-toggle="dropdown"> 402 Shows</a> 403 404 405 <div class="sub-nav-mobile "> 406 <ul class="sub-nav-mobile--list"> 407 408 <li class=""> 409 <a href="/shows/how-to-listen/"> 410 How To Listen To East Coast Radio 411 </a> 412 </li> 413 414 <li class=""> 415 <a href="/shows/ecr-competition-scam-alert/"> 416 ECR COMPETITION SCAM ALERT 417 </a> 418 </li> 419 420 421 422 423 </ul> 424 </div> 425 </li> 426 427 428 429 <li class=" dropdown" style="position: relative"> 430 <a href="/news/" onclick="window.location.href = /news/" 431 data-toggle="dropdown"> 432 News & Traffic</a> 433 434 435 <div class="sub-nav-mobile "> 436 <ul class="sub-nav-mobile--list"> 437 438 <li class=""> 439 <a href="/news/news/"> 440 News 441 </a> 442 </li> 443 444 <li class=""> 445 <a href="/news/traffic/"> 446 Live ECR Traffic Updates 447 </a> 448 </li> 449 450 <li class=""> 451 <a href="/news/entertainment/"> 452 Entertainment 453 </a> 454 </li> 455 456 <li class=""> 457 <a href="/news/sport/"> 458 Sport 459 </a> 460 </li> 461 462 <li class=""> 463 <a href="/news/consumer-hacks/"> 464 Consumer Hacks 465 </a> 466 </li> 467 468 469 470 471 </ul> 472 </div> 473 </li> 474 475 476 477 478 <li class=" 479 "> 480 <a href="/comps/"> 481 Win 482 </a> 483 </li> 484 485 486 487 488 <li class=" dropdown" style="position: relative"> 489 <a href="/contact-us/" onclick="window.location.href = /contact-us/" 490 data-toggle="dropdown"> 491 Contact Us</a> 492 493 494 <div class="sub-nav-mobile "> 495 <ul class="sub-nav-mobile--list"> 496 497 <li class=""> 498 <a href="/contact-us/map-hq/"> 499 Map to HQ 500 </a> 501 </li> 502 503 <li class=""> 504 <a href="/contact-us/advertise-us-portal2025/"> 505 Advertise with us 506 </a> 507 </li> 508 509 510 511 512 </ul> 513 </div> 514 </li> 515 516 517 518 <li class=" dropdown" style="position: relative"> 519 <a href="/lifestyle/" onclick="window.location.href = /lifestyle/" 520 data-toggle="dropdown"> 521 Lifestyle</a> 522 523 524 <div class="sub-nav-mobile "> 525 <ul class="sub-nav-mobile--list"> 526 527 <li class=""> 528 <a href="/lifestyle/food/"> 529 Food 530 </a> 531 </li> 532 533 <li class=""> 534 <a href="/lifestyle/family/"> 535 Family 536 </a> 537 </li> 538 539 <li class=""> 540 <a href="/lifestyle/house-home/"> 541 House & Home 542 </a> 543 </li> 544 545 546 547 548 </ul> 549 </div> 550 </li> 551 552 553 554 555 <li class=" 556 "> 557 <a href="/podcasts/"> 558 Podcasts 559 </a> 560 </li> 561 562 563 564 565 <li class=" dropdown" style="position: relative"> 566 <a href="/big-favour-with-breakfast/" onclick="window.location.href = /big-favour-with-breakfast/" 567 data-toggle="dropdown"> 568 Big Favour</a> 569 570 571 <div class="sub-nav-mobile "> 572 <ul class="sub-nav-mobile--list"> 573 574 <li class=""> 575 <a href="/big-favour-with-breakfast/want-to-be-a-donor/"> 576 Big Favour Donate - Service 577 </a> 578 </li> 579 580 <li class=""> 581 <a href="/big-favour-with-breakfast/i-need-favour-form/"> 582 I need a Favour 583 </a> 584 </li> 585 586 <li class=""> 587 <a href="/big-favour-with-breakfast/big-favour-donate/"> 588 Big Favour Done- Cash 589 </a> 590 </li> 591 592 593 594 595 </ul> 596 </div> 597 </li> 598 599 600 601 602 <li class=" 603 "> 604 <a href="/ecr-events/"> 605 ECR Events 606 </a> 607 </li> 608 609 610 611 612 613 <li class=" 614 "> 615 <a href="/classic-hits/"> 616 Classic Hits 617 </a> 618 </li> 619 620 621 622 623 624 <li class=" 625 "> 626 <a href="/east-coast-radio-top-40/"> 627 ECR Top 40 628 </a> 629 </li> 630 631 632 633 634 635 <li class=" 636 "> 637 <a href="/kzn-future-50-season-3/"> 638 Future 50 Season 3 639 </a> 640 </li> 641 642 643 644 645 646 <li class=" 647 "> 648 <a href="/the-east-coast-radio-fugitive/"> 649 The East Coast Radio Fugitive 650 </a> 651 </li> 652 653 654 655 656 657 <li class=" 658 "> 659 <a href="/music-society/"> 660 Music Society 661 </a> 662 </li> 663 664 665 666 </li> 667 </ul> 668 </div> 669 </div> 670 671 672 673 674</nav> 675 676 677</header> 678 679 680 681<main class="main" role="main"> 682 683 684 685 686 687 <style> 688 .block-image { 689 padding: 0 15px; 690 } 691 </style> 692 693 694<div class="main-content has-no-padding" style="background-color: white"> 695 <header class="page-header"> 696 <div class="container"> 697 <h1 class="page-header--title">East Coast Radio App</h1> 698 </div> 699 </header> 700 <div class="container"> 701 <article class="post"> 702 <div class="row"> 703 <div class="post--body"> 704 <div class="block-image"><img alt="east coast radio app" height="210" src="https://turntable.kagiso.io/images/ecr-728x210.original.jpg" width="728"></div> 705<div class="block-html"><div> 706<a href="https://itunes.apple.com/za/app/east-coast-radio/id1121150571?mt=8" target="_blank"><img src="https://turntable.kagiso.io/core/images/button_app_store.png"></a> 707<a href="https://play.google.com/store/apps/details?id=com.kagiso.ecr&hl=en" target="_blank"><img src="https://turntable.kagiso.io/core/images/button_google_play.png"></a> 708</div></div> 709 </div> 710 </div> 711 </article> 712 </div> 713</div> 714 715 716 <!-- Todo: remove this once PR is merged in django_auth --> 717</main> 718 719 720 721 722 723 724 725<div class="ad-footer"> 726 <div class="ad-container"> 727 <div class="hidden-sm-down"> 728 <div id="DFP-ads-dfp-663" 729 class="dfp-ads" 730 data-lazy-load="no" 731 data-pos="btf" 732 data-slot="/7938/East_Coast_Radio-Web" 733 data-url="/ecr-home/east-coast-radio-app/"> 734 735 <div data-sizes="[[728, 90], [728, 210]]" 736 data-screen-width="980" 737 data-screen-height="200"></div> 738 739 <div data-sizes="[[320, 50],[300, 50]]" 740 data-screen-width="468" 741 data-screen-height="240"></div> 742 743 <div data-sizes="[[320, 50],[300, 50]]" 744 data-screen-width="320" 745 data-screen-height="60"></div> 746 747</div> 748 749 </div> 750 </div> 751</div> 752 753<footer class="footer" role="contentinfo"> 754 <div class="container"> 755 <div class="footer--lines"></div> 756 757 758<div class="footer--column"> 759 <div class="footer--column-title">Information</div> 760 <ul class="footer--column-list"> 761 <li><a href="/contact-us">Contact Us</a></li> 762 763 <li><a href="https://kagisomedia.mcidirecthire.com/Eastcoastradio/External/CurrentOpportunities" target="_blank">Careers</a> 764 </li> 765 <li><a href="https://turntable.kagiso.io/documents/PAIA+Manual_Final_June2025_ECR.pdf" 766 class="text
766-dark text-decoration-none" target="_blank">PAIA Manual</a></li> 767 768 <li><a href="https://turntable.kagiso.io/documents/PAIA+Form+2.pdf" class="text-dark text-decoration-none" 769 target="_blank">PAIA Request for Access to 770 Record</a></li> 771 772 <li><a href="/terms-of-use/">Terms Of Use</a></li> 773 774 <li><a href="/privacy-policy/">Privacy Policy</a></li> 775 776 <li><a href="/east-coast-radio-app/">East Coast Radio App</a></li> 777 778 </ul> 779</div> 780 781 782 <div class="footer--column column-2"> 783 784 <p><b>Contact our traffic hotline:</b> <br>(031) 570 9400</p> 785 786 <div class="footer--logos"> 787 <a href="http://www.iabsa.net/" target="_blank"> 788 <img src="https://turntable.kagiso.io/core/images/logo_iab.png" alt="IAB logo"> 789 </a> 790 <a href="https://kagisoconnect.co.za/" target="_blank"> 791 <img src="https://turntable.kagiso.io/core/images/kagiso-connect-logo.png" width="109" alt="Kagiso Connect logo"> 792 </a> 793 </div> 794 <div class="clear-fix"> </div> 795 </div> 796 797 <div class="footer--column column-3"> 798 799 800 801 802<div class="buttons-app-store"> 803 <a href="https://itunes.apple.com/za/app/east-coast-radio/id1121150571?mt=8" target="_blank"> 804 <img src="https://turntable.kagiso.io/core/images/button_app_store.png" alt="itunes app store button"> 805 </a> 806 <a href="https://play.google.com/store/apps/details?id=com.kagiso.ecr&hl=en" target="_blank"> 807 <img src="https://turntable.kagiso.io/core/images/button_google_play.png" alt="google play app store button"> 808 </a> 809 <a href="https://appgallery.huawei.com/app/C102807069" target="_blank" > 810 <img src="https://turntable.kagiso.io/core/images/button_app_gallery.png" width="125" alt="app gallery button"> 811 </a> 812</div> 813 814 815 816 817 <div style="display: flex; align-items: center;"> 818 <h6 style="margin-bottom: 2px">Connect with us</h6> 819 820 821<div class="icons-social icons-social--no-margin"> 822 <a href="https://www.facebook.com/eastcoastradio" target="_blank"><span class="icon-facebook"></span></a> 823 <a href="https://twitter.com/Ecr9495" target="_blank"> 824 <img src="https://turntable.kagiso.io/core/images/icons/x-twitter.svg" alt="" width="17" style="padding-bottom: 8px"> 825 </a> 826 <a href="https://www.instagram.com/eastcoastradio/" target="_blank"><span class="icon-instagram"></span></a> 827 <a href=" https://www.tiktok.com/@eastcoastradiokzn" target="_blank"> 828 <img src="https://turntable.kagiso.io/core/images/icons/tiktok-icon.svg" alt="" width="15" style="padding-bottom: 8px"> 829 </a> 830 831 <a href="https://www.youtube.com/user/ecronair" target="_blank"> 832 <span class="icon-youtube-play"></span> 833 </a> 834 835 <a href="/contact-us"> 836 <span class="icon-envelope"></span> 837 </a> 838</div> 839 840 </div> 841 </div> 842 </div> 843</footer> 844<div class="copyright"> 845 <div class="container"> 846 <p class="copyright--text">© 2026 Kagiso Media Ltd. All rights reserved.</p> 847 </div> 848</div> 849 850 851 852 853 854 855 856 857<!-- Todo: Insert correct crouton per site --> 858 859
860<script type="text/javascript"> 861 window.swfPath = "https://turntable.kagiso.io/core/swf/"; 862 window.streamURL = ""; 863 window.siteName = "ecr"; 864 window.parentRef = this; 865 window.page_id = "49221"; 866</script>
866 867 868
869<script charset="utf-8" src="https://cdn.pinpoll.com/global.js" async></script>
vendor: 1 bytes, line 869
869
870<script src="https://cdn.pinpoll.com/sdk.js" async></script>
vendor: 66 bytes, lines 870-872
870 871<script src="https://www.google.com/recaptcha/api.js"></script> 872
873<script charset="utf-8" src="//ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
vendor: 1 bytes, line 873
873
874<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
vendor: 1 bytes, line 874
874
875<script charset="utf-8" src="https://hammerjs.github.io/dist/hammer.js"></script>
875 876
877<script>window.jQuery || document.write('
877<script charset="utf-8" src="https://turntable.kagiso.io/core/vendor/jquery/jquery-2.2.0.min.js"><\/script>')</script>
vendor: 1 bytes, line 877
877
878<script charset="utf-8" src="//cdnjs.cloudflare.com/ajax/libs/gsap/1.19.0/TweenMax.min.js"></script>
vendor: 1 bytes, line 878
878
879<script charset="utf-8" src="//unpkg.com/[email protected]/dist/in-view.min.js"></script>
879 880 881<!-- AdsWizz scripts -->
882<script charset="utf-8" src="//synchrobox.adswizz.com/register2.php"></script>
vendor: 1 bytes, line 882
882
883<script charset="utf-8" src="//cdn.adswizz.com/adswizz/js/SynchroClient2.js"></script>
883 884 885<!-- IONOfm scripts -->
886<script defer charset="utf-8" src="//p2.iono.fm/bundle/0.13.1/player.js"></script>
886 887 888 889 <!-- Facebook Pixel Code --> 890
890<script>
vendor: 420 bytes, lines 890-897
890 891 !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod? 892 n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n; 893 n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; 894 t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, 895 document,'script','https://connect.facebook.net/en_US/fbevents.js'); 896 897 fbq('init', '
8971590266744622825
vendor: 36 bytes, lines 897-899
897'); 898 fbq('track', "PageView"); 899
899</script>
899 900 <noscript> 901 <img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=1590266744622825&ev=PageView&noscript=1" 902 /> 903 </noscript> 904 <!-- End Facebook Pixel Code --> 905 906 907 908 909
910<script type="text/javascript" src="https://turntable.kagiso.io/core/vendor/isotope/isotope.pkgd.min.js"></script>
vendor: 1 bytes, line 910
910
911<script type="text/javascript" src="https://turntable.kagiso.io/core/vendor/isotope/isotope.horiz.js"></script>
vendor: 1 bytes, line 911
911
912<script type="text/javascript" src="https://turntable.kagiso.io/core/vendor/isotope/imagesloaded.pkgd.min.js"></script>
vendor: 1 bytes, line 912
912
913<script type="text/javascript" src="https://turntable.kagiso.io/core/js/iframeResizer.min.js"></script>
vendor: 1 bytes, line 913
913
914<script src="https://turntable.kagiso.io/core/vendor/smartbanner/jquery.smartbanner.js"></script>
vendor: 1 bytes, line 914
914
915<script type="text/javascript" src="https://turntable.kagiso.io/core/js/dfp.js"></script>
vendor: 1 bytes, line 915
915
916<script type="text/javascript" src="https://turntable.kagiso.io/core/vendor/jwplayer/jwplayer.js"></script>
vendor: 1 bytes, line 916
916
917<script type="text/javascript" src="https://turntable.kagiso.io/core/js/main.js"></script>
vendor: 1 bytes, line 917
917
918<script type="text/javascript" src="https://turntable.kagiso.io/core/js/shop_results.js"></script>
vendor: 1 bytes, line 918
918
919<script type="text/javascript" src="https://turntable.kagiso.io/core/js/takeover_popup.js"></script>
vendor: 1 bytes, line 919
919
920<script type="text/javascript" src="https://turntable.kagiso.io/core/js/sportslocker.js"></script>
920 921 922 923<!--
923<script type="text/javascript" src="https://turntable.kagiso.io/core/js/main.es5.js"></script>
923 --> 924 925
926<script> 927 window.isFacebookLogin = false; 928 929 window.fbAsyncInit = function () { 930 FB.init({ 931 appId: 669961536436763, 932 xfbml: true, 933 version: 'v3.2' 934 }); 935 FB.AppEvents.logPageView(); 936 937 FB.getLoginStatus(function (response) { 938 if (response.status === 'connected') { 939 window.isFacebookLogin = true; 940 $('#leaderboard-fb-logout').css('display', 'block'); 941 } else { 942 const isSafari = navigator.vendor && navigator.vendor.indexOf('Apple') > -1 && 943 navigator.userAgent && 944 navigator.userAgent.indexOf('CriOS') === -1 && 945 navigator.userAgent.indexOf('FxiOS') === -1; 946 947 948 } 949 }); 950 }; 951 952 (function (d, s, id) { 953 var js, fjs = d.getElementsByTagName(s)[0]; 954 if (d.getElementById(id)) { 955 return; 956 } 957 js = d.createElement(s); 958 js.id = id; 959 js.src = "https://connect.facebook.net/en_US/sdk.js"; 960 fjs.parentNode.insertBefore(js, fjs); 961 }(document, 'script', 'facebook-jssdk')); 962</script>
962 963
964<script> 965 /** 966 * Fetch the latest daily weather icon from rainboo and append it to weather menu item. 967 */ 968 $(document).ready(function () { 969 970 let weatherIconTemplate = "<img src='{icon_url}' alt='weather_icon.png' class='weather_icon'/>" 971 let weather_icon_url = ''; 972 let el = $('.weather_page_menu_item'); 973 let stations = { 974 'jacaranda': 'https://api.rainboo.co.za/api/weather/forecast/ke7fy/8', 975 'ecr': 'https://api.rainboo.co.za/api/weather/forecast/kdwn4/8' 976 }; 977 978 $.get(stations[window.siteName], function (data) { 979 980 let item = data.weatherResults[0]; 981 982 var nightcode = item.isdaylight ? "" : "N"; 983 984 weather_icon_url = 'https://www.rainboo.co.za/images/icons/weather/' + item.pictocode + nightcode + '.png'; 985 986 weatherIconTemplate = weatherIconTemplate.replace('{icon_url}', weather_icon_url); 987 988 sessionStorage.setItem('weather_icon', weather_icon_url); 989 // Only show on desktop 990 if (window.innerWidth > 1024) { // Adjust breakpoint as needed 991 el.addClass('weather_button'); 992 el.prepend(weatherIconTemplate); 993 } 994 }) 995 996 }) 997</script>
997 998
999<script> 1000 $(document).ready(function () { 1001 $('input[name=query]').on('input', function () { 1002 $('input[name=query]').prop('value', this.value) 1003 }); 1004 }); 1005</script>
1005 1006
1007<script src="https://cdn.pinpoll.com/sdk.js" async></script>
vendor: 1 bytes, line 1007
1007
1008<script> 1009 $('.pinpoll-frame iframe').ready(() => { 1010 $('.close-pinpoll-button, .pinpoll-frame').css('display', 'block'); 1011 }); 1012 1013 window.addEventListener('load', async function() { 1014 const searchParamHid = 'hid'; 1015 const searchParamReferer = 'referer'; 1016 const searchReferer = 'colony'; 1017 1018 // polyfill for URLSearchParams (needed for IE 11) 1019 window.URLSearchParams = window.URLSearchParams || function(searchString) { 1020 var self = this; 1021 self.searchString = searchString; 1022 self.get = function(name) { 1023 var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(self.searchString); 1024 if (results == null) { 1025 return null; 1026 } else { 1027 return decodeURI(results[1]) || 0; 1028 } 1029 }; 1030 } 1031 const urlParams = new URLSearchParams(window.location.search); 1032 const hashedUserId = urlParams.get(searchParamHid); 1033 const referer = urlParams.get(searchParamReferer); 1034 const sdk = new PinpollSdk(); 1035 1036 if (hashedUserId && referer === searchReferer) { 1037 const attributes = { 1038 userId: hashedUserId, 1039 }; 1040 sdk.setAttributes(attributes); 1041 const sleep = (milliseconds) => new Promise(resolve => setTimeout(resolve, milliseconds)) 1042 let visitorFound = false; 1043 let tryCount = 0; 1044 const maxTries = 5; 1045 const sleepTime = 200; // ms 1046 1047 // check if visitor cookie is present 1048 do { 1049 tryCount = tryCount + 1; 1050 const response = await sdk.getAudiences(); 1051 // In case response object is not empty, we found a visitor 1052 if (! (Object.keys(response).length === 0)) { 1053 visitorFound = true; 1054 } 1055 // otherwise sleep for 200 ms and try it again for 5 times 1056 await sleep(sleepTime); 1057 } while (!visitorFound && tryCount < 5) 1058 1059 // send data only in case visitor was found 1060 if (visitorFound) { 1061 sdk.sendData(); 1062 } 1063 } 1064 }); 1065</script>
1065 1066
1067<script> 1068 /** 1069 * Terminate answered polls on visited pages. 1070 */ 1071 (($)=>{ 1072 $(document).ready(() => { 1073 const pinpollData = JSON.parse(localStorage.getItem('my_allVisitorVotes')); 1074 if (pinpollData !== null && typeof pinpollData === 'object') { 1075 pinpollData.map((item) => item.poll_id).forEach((id) => { 1076 $(`#${id}`).remove(); 1077 console.info(`#pinpoll-id-${id} answered and removed from DOM`); 1078 }); 1079 } 1080 }) 1081 })(jQuery); 1082 1083 function hideFrame(frameId, self){ 1084 var frame = document.getElementById(frameId); 1085 frame.classList.toggle('hidden'); 1086 $(self).toggleClass('closed'); 1087 $('.pinpoll-frame').toggleClass('close-parent'); 1088 1089 let pollData = JSON.parse(localStorage.getItem('my_allVisitorVotes')); 1090 if(pollData !== null){ 1091 pollData.push(JSON.stringify({"poll_id": frameId, "answer_id":0,"question_id":0})); 1092 } else { 1093 pollData = JSON.stringify([{"poll_id": frameId, "answer_id":0,"question_id":0}]); 1094 } 1095 localStorage.setItem('my_allVisitorVotes', pollData) 1096 } 1097</script>
1097 1098
1099<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"42b913acc8304d2f9204361bdaf99ce5","r":1,"spa":2}' crossorigin="anonymous"></script>
1099 1100</body> 1101</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.