Shabinder / SpotiFlyer

Kotlin Multiplatform Music Downloader, Supports Spotify / Gaana / Youtube Music / Jio Saavn / SoundCloud.
https://soundbound.app
GNU General Public License v3.0
10.29k stars 770 forks source link

[BUG] : Trying to download from Spotify fails #654

Closed Hallohannes123 closed 2 years ago

Hallohannes123 commented 2 years ago

All downloads fail. I am running the newest version

Media Links Used: https://open.spotify.com/playlist/5bmSJgFmBjQWpOw1ImERp7

Expected behavior Download songs

StackTrace:

DownloadLinkFetchFailed(errorTrace=Find Link for Sinister Kid 

Fetching From Saavn Failed:DownloadLinkFetchFailed(errorTrace=No SAAVN Match Found for Sinister Kid)
    at com.shabinder.common.providers.saavn.requests.JioSaavnRequests$DefaultImpls.findBestSongDownloadURL(JioSaavnRequests.kt:19)
    at com.shabinder.common.providers.saavn.requests.JioSaavnRequests$findBestSongDownloadURL$1.invokeSuspend(Unknown Source:10)
    at q7.a.resumeWith(ContinuationImpl.kt:3)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:10)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:3)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:1)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:3)
    at q7.a.resumeWith(ContinuationImpl.kt:9)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:10)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:3)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:1)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:3)
    at q7.a.resumeWith(ContinuationImpl.kt:9)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:10)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:3)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:1)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:3)
    at q7.a.resumeWith(ContinuationImpl.kt:9)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:10)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:3)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:1)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:3)
    at q7.a.resumeWith(ContinuationImpl.kt:9)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:10)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:3)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:1)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:3)
    at q7.a.resumeWith(ContinuationImpl.kt:9)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:18)
    at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:1)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:4)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:4)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:1)

Fetching From YT-Music Failed:io.ktor.client.features.ServerResponseException: Server error(https://yt1s.com/api/ajaxSearch/index: 503 Service Temporarily Unavailable. Text: "<!DOCTYPE HTML>
<html lang="en-US">
<head>
  <meta charset="UTF-8" />
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" />
  <meta name="robots" content="noindex, nofollow" />
  <meta name="viewport" content="width=device-width,initial-scale=1" />
  <title>Just a moment...</title>
  <style type="text/css">
    html, body {width: 100%; height: 100%; margin: 0; padding: 0;}
    body {background-color: #ffffff; color: #000000; font-family:-apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, "Helvetica Neue",Arial, sans-serif; font-size: 16px; line-height: 1.7em;-webkit-font-smoothing: antialiased;}
    h1 { text-align: center; font-weight:700; margin: 16px 0; font-size: 32px; color:#000000; line-height: 1.25;}
    p {font-size: 20px; font-weight: 400; margin: 8px 0;}
    p, .attribution, {text-align: center;}
    #spinner {margin: 0 auto 30px auto; display: block;}
    .attribution {margin-top: 32px;}
    @keyframes fader     { 0% {opacity: 0.2;} 50% {opacity: 1.0;} 100% {opacity: 0.2;} }
    @-webkit-keyframes fader { 0% {opacity: 0.2;} 50% {opacity: 1.0;} 100% {opacity: 0.2;} }
    #cf-bubbles > .bubbles { animation: fader 1.6s infinite;}
    #cf-bubbles > .bubbles:nth-child(2) { animation-delay: .2s;}
    #cf-bubbles > .bubbles:nth-child(3) { animation-delay: .4s;}
    .bubbles { background-color: #f58220; width:20px; height: 20px; margin:2px; border-radius:100%; display:inline-block; }
    a { color: #2c7cb0; text-decoration: none; -moz-transition: color 0.15s ease; -o-transition: color 0.15s ease; -webkit-transition: color 0.15s ease; transition: color 0.15s ease; }
    a:hover{color: #f4a15d}
    .attribution{font-size: 16px; line-height: 1.5;}
    .ray_id{display: block; margin-top: 8px;}
    #cf-wrapper #challenge-form { padding-top:25px; padding-bottom:25px; }
    #cf-hcaptcha-container { text-align:center;}
    #cf-hcaptcha-container iframe { display: inline-block;}
  </style>

      <meta http-equiv="refresh" content="35">
  <script type="text/javascript">
    //<![CDATA[
    (function(){

      window._cf_chl_opt={
        cvId: "2",
        cType: "non-interactive",
        cNounce: "14415",
        cRay: "69a179cc8e3805f1",
        cHash: "c60ea3c95bfab48",
        cFPWv: "g",
        cTTimeMs: "1000",
        cRq: {
          ru: "aHR0cHM6Ly95dDFzLmNvbS9hcGkvYWpheFNlYXJjaC9pbmRleA==",
          ra: "S3RvciBjbGllbnQ=",
          rm: "UE9TVA==",
          d: "M19YuQBoC3sX/Jo1LYW8nOxe+W200eyZC/vB8s4E1zubYUEkcGY8lTq1tqhaXagS16r4U63cWlOZ1GPHlUMVnXydp8JLZHIK85yNPwRqjyTCHtOo3ShV/rX2D7UOUoLAdi+e7mducpllO373rsP+SQ1rXjXGuuhNmXr90QA+RyRLf3VYg1tdQHWlKRthAP49QAxciltXzTw/i8NHQriNvDbysR3oi35SCPtmbxAz+xZnc+4waSkSB6wKcHHLEZM9ML7IK0Idfcz08DD3GErNjwLut1WBUzeld0kpP22c1xtBj8mZJ/phoWUYzIBww8ZXImDFB85A7eQw1fNAM+N466x8xluF25239xb1MuIkSs45QxYcsi/OgCUpa0z5o7960Fh2UuvJSo1Po3TbY7JtcM0pPG1H+OjXENAaEmbadCwoxJXbK3cy425YuLnGBPpmsrdwBfkLnTEA8mjxabomWuFGgNZufTlCyLq/NjWkVQWEtbH9cVgxap705oTsw1YgOsSmQZsh5PcvuuyvTrVLpg==",
          t: "MTYzMzU1MDQyNS4wNDcwMDA=",
          m: "QhT/gYSmnvj9BtZLXIdndfbZ1WnR0k0+JgJxL/Ir17k=",
          i1: "I7uHycoMsjzwLbU523Jn9A==",
          i2: "XTiQJaL20iO3IMWdczEZBw==",
          zh: "slbOGnEscRNxFiOnTsX0AKh1TuDl2qbz+DoFMtxCWD8=",
          uh: "oz7OrxkrnxacOh3btzIq4iwAY0NK/hCkZ0LN2B2nTlI=",
          hh: "LBSS74KkcrNPPaDUVSmWQv8ZxJLhGAngcURUX8gX1AQ=",
        }
      }
      window._cf_chl_enter = function(){window._cf_chl_opt.p=1};

    })();
    //]]>
  </script>

</head>
<body>
  <table width="100%" height="100%" cellpadding="20">
    <tr>
      <td align="center" valign="middle">
          <div class="cf-browser-verification cf-im-under-attack">
  <noscript>
    <h1 data-translate="turn_on_js" style="color:#bd2426;">Please turn JavaScript on and reload the page.</h1>
  </noscript>
  <div id="cf-content" style="display:none">

    <div id="cf-bubbles">
      <div class="bubbles"></div>
      <div class="bubbles"></div>
      <div class="bubbles"></div>
    </div>
    <h1><span data-translate="checking_browser">Checking your browser before accessing</span> yt1s.com.</h1>

    <div id="no-cookie-warning" class="cookie-warning" data-translate="turn_on_cookies" style="display:none">
      <p data-translate="turn_on_cookies" style="color:#bd2426;">Please enable Cookies and reload the page.</p>
    </div>
    <p data-translate="process_is_automatic">This process is automatic. Your browser will redirect to your requested content shortly.</p>
    <p data-translate="allow_5_secs" id="cf-spinner-allow-5-secs" >Please allow up to 5 seconds&hellip;</p>
    <p data-translate="redirecting" id="cf-spinner-redirecting" style="display:none">Redirecting&hellip;</p>
  </div>

  <form class="challenge-form" id="challenge-form" action="/api/ajaxSearch/index?__cf_chl_jschl_tk__=pmd_1Qg15BNcKC8jAA6dSqUMnGPqhrjXRuBFVkPtgOLS4_g-1633550425-0-gqNtZGzNAiWjcnBszQgR" method="POST" enctype="application/x-www-form-urlencoded">
    <input type="hidden" name="md" value="KuSQOFacz8XnjNpj53.F7BNlcT7dMayPrMkJ2OTaODE-1633550425-0-AZRdNtorRx5k9OdTdYP6tXgqozd_hInriiN2rrghE-2Hb_miz91uD9ovnSg0dpzujD1p51j-rZc8wVfXplJ54M33rYim4d4J1_WClk9Wi0n5UtvUdZADxmpzl2zlTj2Kj5sYYf4HY7niAsl3stLeHVhHKFwfDjIRDJLMNYULTmpQmr5O2NeEn4LKMjQXeNn_zwbK-LurvRnoCRY9HZexvwlpCGrbJb3gQkGalp-yzBnp7dUglJInP_E7RnyS_khUCrptKBL5xbo8_ijv_zPYAowKmCckr7xVZ5olxlBms-ac_luYVd953KlI83NXUnf2MY9j7AwlPkGb2hIC96S3zSmkDW59IuK-IoJj5Lbm0NXLBET6YXTbzcyDaoLp5bCHnmtJW2cs6wIxXRG1mf3OZfnyz0W1KmhTQHWT84tuDboMky8z22nif8dN8a1KzHZAqNpE7N9UmbxNTctabRtkGkvMQzGOYow3o9-YG3p-WEB3" />
    <input type="hidden" name="r" value="nYDTgX_GL4fC1bRZ8nhJMyCZ5DdFe49VievDPGqfJh4-1633550425-0-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"/>
    <input type="hidden" value="ddee95a5ef55596a579760f9582897cb" id="jschl-vc" name="jschl_vc"/>
    <!-- <input type="hidden" value="" id="jschl-vc" name="jschl_vc"/> -->
    <input type="hidden" name="pass" value="1633550426.047-7+pLJ3zHlD"/>
    <input type="hidden" id="jschl-answer" name="jschl_answer"/>
  </form>

    <script type="text/javascript">
      //<![CDATA[
      (function(){
          var a = document.getElementById('cf-content');
          a.style.display = 'block';
          var isIE = /(MSIE|Trident\/|Edge\/)/i.test(window.navigator.userAgent);
          var trkjs = isIE ? new Image() : document.createElement('img');
          trkjs.setAttribute("src", "/cdn-cgi/images/trace/jschal/js/transparent.gif?ray=69a179cc8e3805f1");
          trkjs.id = "trk_jschal_js";
          trkjs.setAttribute("alt", "");
          document.body.appendChild(trkjs);
          var cpo=document.createElement('script');
          cpo.type='text/javascript';
          cpo.src="/cdn-cgi/challenge-platform/h/g/orchestrate/jsch/v1?ray=69a179cc8e3805f1";
          document.getElementsByTagName('head')[0].appendChild(cpo);
        }());
      //]]>
    </script>

  <div id="trk_jschal_nojs" style="background-image:url('/cdn-cgi/images/trace/jschal/nojs/transparent.gif?ray=69a179cc8e3805f1')"> </div>
</div>

          <div class="attribution">
            DDoS protection by <a rel="noopener noreferrer" href="https://www.cloudflare.com/5xx-error-landing/" target="_blank">Cloudflare</a>
            <br />
            <span class="ray_id">Ray ID: <code>69a179cc8e3805f1</code></span>
          </div>
      </td>

    </tr>
  </table>
</body>
</html>
"
    at io.ktor.client.features.DefaultResponseValidationKt$addDefaultResponseValidation$1$1.invokeSuspend(DefaultResponseValidation.kt:15)
    at q7.a.resumeWith(ContinuationImpl.kt:3)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:18)
    at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:1)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:4)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:4)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:1)

)
    at com.shabinder.common.providers.FetchPlatformQueryResult.findBestDownloadLink(FetchPlatformQueryResult.kt:59)
    at com.shabinder.common.providers.FetchPlatformQueryResult$findBestDownloadLink$1.invokeSuspend(Unknown Source:12)
    at q7.a.resumeWith(ContinuationImpl.kt:3)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:12)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$resumeRootWith(SuspendFunctionGun.kt:1)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:2)
    at q7.a.resumeWith(ContinuationImpl.kt:9)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:12)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$resumeRootWith(SuspendFunctionGun.kt:1)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:2)
    at q7.a.resumeWith(ContinuationImpl.kt:9)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:12)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$resumeRootWith(SuspendFunctionGun.kt:1)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:2)
    at q7.a.resumeWith(ContinuationImpl.kt:9)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:18)
    at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:1)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:4)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:4)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:1)

Device Info (please complete the following information):

EstebanOD commented 2 years ago

Same for me!

I tried to download this Spotify playlist: https://open.spotify.com/playlist/37i9dQZF1DX4aYNO8X5RpR?si=xVoFBgo7Tdq4cRvFBXsQ4g&utm_source=copy-link&dl_branch=1

Only 32 out of 172 has actually been downloaded, the 140 left all failed. :/

RadegasTCZ commented 2 years ago

same problem here

`DownloadLinkFetchFailed(errorTrace=Find Link for А-я-яй

Fetching From Saavn Failed:DownloadLinkFetchFailed(errorTrace=No SAAVN Match Found for А-я-яй) at com.shabinder.common.providers.saavn.requests.JioSaavnRequests$DefaultImpls.findBestSongDownloadURL(JioSaavnRequests.kt:37) at com.shabinder.common.providers.saavn.requests.JioSaavnRequests$findBestSongDownloadURL$1.invokeSuspend(JioSaavnRequests.kt) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191) at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147) at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15) at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191) at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147) at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15) at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191) at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147) at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15) at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191) at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147) at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15) at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191) at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147) at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15) at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)

Fetching From YT-Music Failed:NoMatchFound(trackName=А-я-яй, message=А-я-яй : NO Match Found!) at com.shabinder.common.providers.youtube_music.YoutubeMusic.getYTIDBestMatch(YoutubeMusic.kt:87) at com.shabinder.common.providers.youtube_music.YoutubeMusic.access$getYTIDBestMatch(YoutubeMusic.kt:37) at com.shabinder.common.providers.youtube_music.YoutubeMusic$getYTIDBestMatch$1.invokeSuspend(YoutubeMusic.kt) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191) at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147) at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15) at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191) at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147) at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15) at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191) at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147) at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15) at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)

) at com.shabinder.common.providers.FetchPlatformQueryResult.findBestDownloadLink(FetchPlatformQueryResult.kt:172) at com.shabinder.common.providers.FetchPlatformQueryResult$findBestDownloadLink$1.invokeSuspend(FetchPlatformQueryResult.kt) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191) at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147) at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15) at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191) at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147) at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15) at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191) at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147) at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:15) at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:93) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665) `

Shabinder commented 2 years ago

@Hallohannes123 can you try using a vpn to US / India etc

mikwee commented 2 years ago

Tried a VPN to USA, still produces the same error.

JoeMcNuggets commented 2 years ago

@Shabinder, it's because of Cloudflare DDoS protection. Browser Integrity Check at the API routes will cause (and it really causes right now -- most of the issues in the repo are with the same failure of this check) a lot of failures for the Spotiflyer client.

yt1s.com should not use BIC for the API -- it is the official recommendation from Cloudflare. You can find it (and all the recommendations of API setup with DDoS Protection) here: https://support.cloudflare.com/hc/en-us/articles/200504045

Shabinder commented 2 years ago

@Shabinder, it's because of Cloudflare DDoS protection. Browser Integrity Check at the API routes will cause (and it really causes right now -- most of the issues in the repo are with the same failure of this check) a lot of failures for the Spotiflyer client.

yt1s.com should not use BIC for the API -- it is the official recommendation from Cloudflare. You can find it (and all the recommendations of API setup with DDoS Protection) here: https://support.cloudflare.com/hc/en-us/articles/200504045

Thanks for this info. So now the time has again come to host one myself or include an alternate in client, will see.

JoeMcNuggets commented 2 years ago

@Shabinder, if you'll decide to host your own one and the sources of the yt1s.com are open, it could be great if you'll add support of configuration dl host in the app -- this setting can make the app more decentralized. Also, if you'll like my idea, configuration could have support of the Basic Auth for those, who don't like to expose their downloader

Shabinder commented 2 years ago

@JoeMcNuggets what do you mean by configuration dl host & where would you like Basic Authfeature exactly?

Shabinder commented 2 years ago

We will be falling back on Manual Extraction when Yt1s Fail, whatever the reason may be.

Release will be soon

Shabinder commented 2 years ago

Can u try again with v3.5.0

mikwee commented 2 years ago

Tried, doesn't work

Shabinder commented 2 years ago

what was the error ?

mikwee commented 2 years ago
DownloadLinkFetchFailed(errorTrace=Find Link for גמד 

Fetching From Saavn Failed:DownloadLinkFetchFailed(errorTrace=No SAAVN Match Found for גמד)
    at com.shabinder.common.providers.saavn.requests.JioSaavnRequests$DefaultImpls.findBestSongDownloadURL(JioSaavnRequests.kt:19)
    at com.shabinder.common.providers.saavn.requests.JioSaavnRequests$findBestSongDownloadURL$1.invokeSuspend(Unknown Source:10)
    at u.v.j.a.a.resumeWith(ContinuationImpl.kt:3)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:10)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:3)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:1)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:3)
    at u.v.j.a.a.resumeWith(ContinuationImpl.kt:9)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:10)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:3)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:1)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:3)
    at u.v.j.a.a.resumeWith(ContinuationImpl.kt:9)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:10)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:3)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:1)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:3)
    at u.v.j.a.a.resumeWith(ContinuationImpl.kt:9)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:10)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:3)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:1)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:3)
    at u.v.j.a.a.resumeWith(ContinuationImpl.kt:9)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:10)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:3)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:1)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:3)
    at u.v.j.a.a.resumeWith(ContinuationImpl.kt:9)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:18)
    at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:1)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:4)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:4)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:1)

Fetching From YT Failed:NoMatchFound(trackName=גמד, message=גמד : NO Match Found!)
    at com.shabinder.common.providers.youtube_music.YoutubeMusic.getYTIDBestMatch(YoutubeMusic.kt:13)
    at com.shabinder.common.providers.youtube_music.YoutubeMusic.access$getYTIDBestMatch(YoutubeMusic.kt:1)
    at com.shabinder.common.providers.youtube_music.YoutubeMusic$getYTIDBestMatch$1.invokeSuspend(Unknown Source:12)
    at u.v.j.a.a.resumeWith(ContinuationImpl.kt:3)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:10)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:3)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:1)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:3)
    at u.v.j.a.a.resumeWith(ContinuationImpl.kt:9)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:10)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:3)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:1)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:3)
    at u.v.j.a.a.resumeWith(ContinuationImpl.kt:9)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:10)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:3)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:1)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:3)
    at u.v.j.a.a.resumeWith(ContinuationImpl.kt:9)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:18)
    at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:1)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:4)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:4)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:1)

)
    at com.shabinder.common.providers.FetchPlatformQueryResult.findBestDownloadLink(FetchPlatformQueryResult.kt:84)
    at com.shabinder.common.providers.FetchPlatformQueryResult$findBestDownloadLink$1.invokeSuspend(Unknown Source:12)
    at u.v.j.a.a.resumeWith(ContinuationImpl.kt:3)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:10)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:3)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:1)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:3)
    at u.v.j.a.a.resumeWith(ContinuationImpl.kt:9)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:10)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:3)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:1)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:3)
    at u.v.j.a.a.resumeWith(ContinuationImpl.kt:9)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:10)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:3)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:1)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:3)
    at u.v.j.a.a.resumeWith(ContinuationImpl.kt:9)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:18)
    at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:1)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:4)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:4)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:1)