সাউন্ডক্লাউড এপিআই / স্ট্রিম এন্ডপয়েন্টটি 401 ত্রুটি দেয়


13

আমি একটি প্রতিক্রিয়া নেটিভ অ্যাপ্লিকেশন লেখার চেষ্টা করছি যা সাউন্ডক্লাউড থেকে কিছু ট্র্যাক প্রবাহিত করবে। একটি পরীক্ষা হিসাবে, আমি পাইথন ব্যবহার করে এপিআইয়ের সাথে খেলছি এবং আমি ইউআরএল সমাধান করার জন্য প্লেলিস্টগুলি / ট্র্যাকগুলি টানতে এবং আমার যা যা প্রয়োজন প্রয়োজন সবগুলি অনুরোধ করতে সক্ষম হয়েছি।

এই বলে যে কোনও প্রদত্ত ট্র্যাকের স্ট্রিম_আরএলকে অনুরোধ করার সময় আমি একটি 401 ত্রুটি পেয়েছি।

প্রশ্নে বর্তমান ইউআরএল হ'ল: https://api.soundcloud.com/tracks/699691660/stream?client_id=PGBAyVqBYXvDBjeaz3kSsHAMnr1fndq1

আমি ক্লায়েন্ট_আইডি ... না করে চেষ্টা করেছি? & এর সাথে, আমি অন্য ক্লায়েন্ট_আইডি পাওয়ার চেষ্টা করেছি, আমি এটিকে অনুমতি ও সংজ্ঞা সহ সত্য এবং মিথ্যা উভয় হিসাবে চেষ্টা করেছি, তবে কিছুই কাজ করছে বলে মনে হচ্ছে না। কোন সাহায্যের ব্যাপকভাবে প্রশংসা হবে।

প্রতিটি ট্র্যাকের স্ট্রিমেবল সম্পত্তিটি সত্য, সুতরাং এটি কোনও অনুমতির সমস্যা হওয়া উচিত নয়।

সম্পাদনা:

কিছুটা গবেষণা করার পরে আমি একটি আধা-সফল কাজের সন্ধান পেয়েছি। API এর / স্ট্রিম এন্ডপয়েন্টটি এখনও কাজ করছে না, তবে আপনি যদি আপনার গন্তব্য শেষ পয়েন্টটি http://feeds.soundcloud.com/users/soundcloud:users : /sounds.rss এ পরিবর্তন করেন তবে এটি আপনাকে আরএসএস ফিড দেবে (বেশিরভাগ ক্ষেত্রে) ট্র্যাক বা প্লেলিস্টগুলির এপিআই শেষ পয়েন্ট ব্যবহার করে আপনি যা পাবেন তা একই।

এতে থাকা লিঙ্কটি স্ট্রিম করা যায়।


1
আমি কিছু সময়ের জন্য এপিআই ব্যবহার করছি, আমি সম্প্রতি 401 ত্রুটিটি পেয়েছি, এটি কেবল আপনিই নয়।
r3verse

জাভাস্ক্রিপ্ট নিয়ে আমার ক্ষেত্রে, এপিআই এখন কয়েক দিন ধরে কাজ করছে না।
ড্যানিয়েল

আমি যে অ্যাপ্লিকেশনগুলিতে হিট সাউন্ডক্লাউড এপিআই ব্যবহার করি সেগুলি এখন কয়েক সপ্তাহ ধরে বন্ধ রয়েছে। মনে হচ্ছে সাউন্ডক্লাউড তৃতীয় পক্ষের বিকাশকে ত্যাগ করেছে যা সত্যই
সফল হয়

উত্তর:


7

ঠিক আছে, আমি মনে করি আমি একটি সাধারণ সমাধান পেয়েছি যা বেশিরভাগ লোকের পক্ষে কাজ করবে। আমি আশা করি এটি আরও সহজ হত তবে এটি এখনও সাদামাটা জিনিস।

  1. ব্যবহারকারীর কাছ থেকে ট্র্যাকগুলি টানতে এপিআই ব্যবহার করুন। আপনি সমস্ত কিছু সংগ্রহ করতে লিংকড পার্টিশন এবং নেক্সট_হ্রেফ সম্পত্তি ব্যবহার করতে পারেন কারণ কলটিতে সর্বাধিক 200 ট্র্যাকের সীমা রয়েছে।

  2. JSON এ টানা ডেটা ব্যবহার করে, আপনি ব্রাউজারে টাইপ করবেন একই জিনিসটি পেতে আপনি permalink_url কী ব্যবহার করতে পারেন।

  3. Permalink_url এ একটি অনুরোধ করুন এবং এইচটিএমএল অ্যাক্সেস করুন। আপনাকে কিছু বিশ্লেষণ করতে হবে, তবে আপনি যে ইউআরএলটি চাইবেন তা এর কিছুটা কার্যকর হবে:

    " https://api-v2.soundcloud.com/media/soundcloud:tracks:488625309/c0d9b93d-4a34-4ccf-8e16-7a87cfaa9f79/stream/progressive "

    আপনি সম্ভবত এটি সহজেই পার্স করার জন্য একটি রেজেক্স ব্যবহার করতে পারেন।

  4. ক্লায়েন্ট_আইডি = ... যুক্ত করে এই ইউআরএলটিতে একটি অনুরোধ করুন এবং এটি আপনাকে তার রিটার্নে জেসসনে অন্য কোনও url দেবে।

  5. পূর্ববর্তী পদক্ষেপটি থেকে ফিরে আসা ইউআরএল ব্যবহার করে আপনি ব্রাউজারে সরাসরি এটির সাথে লিঙ্ক করতে পারেন এবং এটি আপনাকে আপনার ট্র্যাকের সামগ্রীতে নিয়ে যাবে। আমি লিঙ্কটি ইনপুট করে ভিএলসি-তে পরীক্ষা করেছি এবং এটি সঠিকভাবে প্রবাহিত হয়েছে।

আশা করি এটি আপনার কিছুটিকে আপনার বিকাশে সাহায্য করবে।


1
আপনি কি কখনও v2 এপিআই ব্যবহার করে বিবেচনা করেছেন? দেখে মনে হচ্ছে তারা api-v2.soundcloud.com/tracks?id=<song_id>&client_id= তারা যে লিঙ্কটি ব্যবহার করেছে
ব্যবহারকারী 208685

এটা ভাল সিদ্ধান্ত। আপনি যখন সরাসরি স্ট্রিম URL পেয়ে যান এবং এটি প্লে করার চেষ্টা করেন, তখন সাউন্ডক্লাউডের নাটকের কাউন্টারটি এই প্লেটিকে গণনা করবে।
অ্যালেক্স

6

যেহেতু আমার একই সমস্যা রয়েছে তাই @ ডিফল্টের উত্তর আমাকে সমাধান খুঁজতে উত্সাহিত করেছিল। তবে আমি permalink_url 2 এবং 3 পদক্ষেপের সাথে একত্রে কাজটি বুঝতে পারি নি এর সহজ সমাধানটি হতে পারে:

  1. উদাহরণস্বরূপ ব্যবহারকারীর ট্র্যাকের জন্য এ জাতীয় api-v2পয়েন্ট ব্যবহার করে পছন্দ করুন:
https://api-v2.soundcloud.com/users/<user_id>/track_likes?client_id=<client_id>
  1. প্রতিক্রিয়াতে আমরা তার উত্তরটিতে @ ডিফল্ট থেকে বর্ণিত প্রয়োজনীয় URL খুঁজে পেতে পারি:
collection: [
   {
      track: {
         media: {
            transcodings:[
                   ...
                  {
                     url: "https://api-v2.soundcloud.com/media/soundcloud:tracks:713339251/0ab1d60e-e417-4918-b10f-81d572b862dd/stream/progressive"
                  ...
                  }
               ]
            }

         }
...
]
  1. এই ইউআরএলে client_idএকটি ক্যোয়ারী পরম হিসাবে অনুরোধ করুন এবং আপনি ট্র্যাকটি স্ট্রিম / ডাউনলোড করতে পারবেন তার সাথে অন্য একটি URL পাবেন get

মনে রাখবেন যে এটি api-v2এখনও সর্বজনীন নয় এবং আপনার ক্লায়েন্টের অনুরোধটি সম্ভবত সিওআরএস দ্বারা অবরুদ্ধ করা হবে।


3
ব্যবহারকারীর ট্র্যাকগুলি হ'ল: / ব্যবহারকারী / <ব্যবহারকারীর / আইডি> / ট্র্যাকগুলি ব্যবহারকারীর কাছ থেকে পছন্দগুলি: / ব্যবহারকারী / <ব্যবহারকারী / আইডি> / ট্র্যাক_লাইক কেবল একটি ট্র্যাক: / ট্র্যাকস / <ট্র্যাক_আইডি>
r3verse

@ r3verse ডান, আমার উত্তর সম্পাদনা করেছে, তবে বিভিন্ন শেষ পয়েন্টগুলির জন্য ট্র্যাকের উপস্থাপনাটি একই হওয়া উচিত
সের্গ

হ্যাঁ প্রায়, @ সার্গ, একটি একক ট্র্যাকের জন্য আপনার নেস্টড কালেকশন অবজেক্ট নেই, তবে ট্র্যাকের উপস্থাপনাটি একই। খুব সুন্দর হয়।
r3verse

5

@ ব্যবহারকারী208685 দ্বারা উল্লিখিত হিসাবে সমাধানটি সাউন্ডক্লাউড এপিআই ভি 2 ব্যবহার করে কিছুটা সহজ হতে পারে:

  1. ট্র্যাক আইডি (যেমন https://developers.soundcloud.com/docs এ পাবলিক এপিআই ব্যবহার করে ) পান
  2. Https://api-v2.soundcloud.com/tracks/TRACK_ID?client_id=CLIENT_ID থেকে JSON পান
  3. জেএসএন পার্স এমপি 3 প্রগতিশীল স্ট্রিম URL থেকে
  4. স্ট্রিম URL থেকে এমপি 3 ফাইলের URL পান URL
  5. এমপি 3 ফাইল ইউআরএল থেকে মিডিয়া প্লে করুন

দ্রষ্টব্য : এই লিঙ্কটি কেবলমাত্র সীমিত পরিমাণের জন্য বৈধ এবং 3 থেকে 5 পদক্ষেপ পুনরাবৃত্তি করে পুনরায় জেনারেট করা যেতে পারে।

node(সহ node-fetch) উদাহরণ :

const clientId = 'YOUR_CLIENT_ID';

(async () => {
  let response = await fetch(`https://api.soundcloud.com/resolve?url=https://soundcloud.com/d-o-lestrade/gabriel-ananda-maceo-plex-solitary-daze-original-mix&client_id=${clientId}`);
  const track = await response.json();
  const trackId = track.id;

  response = await fetch(`https://api-v2.soundcloud.com/tracks/${trackId}?client_id=${clientId}`);
  const trackV2 = await response.json();
  const streamUrl = trackV2.media.transcodings.filter(
    transcoding => transcoding.format.protocol === 'progressive'
  )[0].url;

  response = await fetch(`${streamUrl}?client_id=${clientId}`);
  const stream = await response.json();
  const mp3Url = stream.url;

  console.log(mp3Url);
})();

পাইথনে অনুরূপ সমাধানের জন্য, এই গিটহাব ইস্যুটি দেখুন: https://github.com/soundcloud/soundcloud-python/issues/87

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.