العثور على عنوان URL لأغذية البودكاست من معرف iTunes. (ITMS API)

StackOverflow https://stackoverflow.com/questions/2306470

  •  21-09-2019
  •  | 
  •  

سؤال

أنا أنظر إلى طريقة لتحويل معرف بودكاست iTunes إلى موجز RSS الذي يقدمه منتج البودكاست.

أنا على علم مولد RSS, ، والتي يمكن استخدامها لإنشاء تغذية من الروابط للبودكاست ، ولكن هذه الروابط هي صفحات HTML.

إذا تم فتح iTunes ، فيمكنك تصدير قائمة Podcast يدويًا عن طريق التصدير إلى OPML ، حتى نتمكن من التمسك بأن iTunes يعرف في النهاية كيفية فك تشفيرها (أي أنها لا تمر حصريًا بمضيف ITMS).

لقد نظرت إلى وثيقة API التابعة لها الذي يمنحك بعض الظهر اللطيف. هذا يمنحك ملف collectionViewUrl وهو نفس تلك الواردة في مولد RSS ، وبالمناسبة ، مولد رابط iTunes. كما أنه يعطيك id, ، وحمل كامل من الأشياء الأخرى بما في ذلك ملف صوتي معاينة لم يتم استضافته على Phobos.

في هذه المرحلة ، أبحث عن أي شيء من شأنه أن يساعدني في حل هذا السؤال ، بما في ذلك أي لغة ، غير رسمية أم لا.

(في الواقع ، أفضل شيء مدعوم بشكل غامض ، وفي جافا ، لم يتضمن تجريف HTML).

هل كانت مفيدة؟

المحلول

من خلال مجموعة من الإجابات من هؤلاء اثنين أسئلة ، لقد وجدت طريقة لفعل ما أريد.

مثال على العثور على البودكاست

أولاً: احصل على قائمة من البودكاست من iTunes ، باستخدام مولد RSS. لست متأكدًا من كيفية عمل معلمات الاستعلام حتى الآن ، ولكن هنا موجز RSS لأعلى صوتيات تقنية في الولايات المتحدة.

http://ax.itunes.apple.com/WebObjects/MZStoreServices.woa/ws/RSS/toppodcasts/sf=143441/limit=25/genre=1318/xml
  • sf يتعلق بالبلد ، وهو اختياري. أظن أن هذا الافتراضيات للعالم إذا كان غائبا.
  • genre يتعلق بالنوع ، وهو اختياري. أظن أن هذا الافتراضات على "جميع الأنواع" غائبة.
  • limit اختياري ، ويبدو أنه افتراضي إلى 9.

هذا يمنحك تغذية ذرة للبودكاست. ستحتاج إلى القيام ببعض sperlunking مع XPath للوصول إلى معرف ITMS من البودكاست ، لكنك تبحث عن معرف رقمي موجود في عنوان URL الموجود في XPath التالي:

/atom:feed/atom:entry/atom:link[@rel='alernate']/@href

على سبيل المثال ، يحتوي Javaposse الممتاز على معرف 81157308.

الجواب على السؤال

بمجرد حصولك على هذا المعرف ، يمكنك الحصول على مستند آخر سيخبرك بالحلقة الأخيرة ، وعنوان URL الأصلي للتغذية. الصيد هنا هو أنك تحتاج إلى استخدام وكيل مستخدم iTunes للحصول على هذا المستند.

على سبيل المثال

wget --user-agent iTunes/7.4.1 \
     --no-check-certificate \ 
     "https://buy.itunes.apple.com/WebObjects/MZFinance.woa/wa/com.apple.jingle.app.finance.DirectAction/subscribePodcast?id=81157308&wasWarnedAboutPodcasts=true"

هذا هو plist يحتوي على بعض البيانات الوصفية حول البودكاست ، بما في ذلك عنوان URL للتغذية.

<key>feedURL</key><string>http://feeds.feedburner.com/javaposse</string>

يمكن أن يكون XPath لهذا الأمر مثل:

//key[@text='feedURL']/following-sibling::string/text()

تنصل

لست متأكدًا تمامًا من مدى استقرار أي من هذا ، أو كم هو قانوني. ymmv.

نصائح أخرى

بمجرد أن يكون لديك المعرف الذي يمكنك استخدامه في البحث كما هو محدد في

https://www.apple.com/itunes/affiliates/resources/documentation/itunes-store-web-service-search-api.html

يجب أن تحصل على ما تحتاجه عن طريق تحليل الاستجابة مع JSON

لتوضيح إجابة @juhariis ، إليك أساسيات استخراج عنوان URL للتغذية من JSON (Python3):

from urllib.request import urlopen
from urllib.parse import urlparse
import codecs
import json

podcast_url = 'https://itunes.apple.com/us/podcast/grow-big-always/id1060318873'
ITUNES_URL = 'https://itunes.apple.com/lookup?id='
parsed = urlparse(podcast_url)
id = parsed.path.split('/')[-1][2:]
reader = codecs.getreader('utf-8')
with urlopen(ITUNES_URL + id) as response:
    feed = json.load(reader(response))['results'][0]['feedUrl']
print(feed)

إليك نص/وحدة نمطية قمت بها ، والتي تستخدم هذا: https://gist.github.com/theychx/f9fad123bef27bebac665847c784cd9

لقد بحثت لفترة طويلة لتفكيك موجز iTunes البودكاست. إنه plist يحتوي على بيانات meta ، واحدة منها هي موجز RSS. منشور مدونتي كيفية الاشتراك في بودكاست iTunes على Android لديه روابط إلى التعليمات البرمجية في PHP وفي JavaScript لاستخراج عنوان URL إلى تغذية RSS من رابط iTunes الفردي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top