2011-02-16 18 views
5

का उपयोग कर एमपी 3 डाउनलोड के एएसआईएन प्राप्त करने के लिए अमेज़ॅन उत्पाद एपीआई पूछताछ मैं अमेज़ॅन के उत्पाद विज्ञापन API का उपयोग कर नया हूं, और इसके साथ अपनी पहली परियोजना के लिए, मैं एक विशेष गीत के एमपी 3 डाउनलोड उत्पाद के एएसआईएन को प्राप्त करने की कोशिश कर रहा हूं , कलाकार और शीर्षक के आधार पर। मैं अंततः Amazon MP3 Clips Widget को पॉप्युलेट करने के लिए इन एएसआईएन का उपयोग करूँगा।कलाकार और शीर्षक

मैं शुरू करने के लिए PHP class from CodeDiesel.com का उपयोग कर रहा हूं। यह ठीक काम करता है, और मैंने निम्नलिखित फ़ंक्शन जोड़ा है:

public function searchMusic($artist, $title) { 
     $parameters = array("Operation"  => "ItemSearch", 
          "Artist"  => $artist, 
          "Title"   => $title, 
          "SearchIndex" => "Music", 
          "ResponseGroup" => "Medium"); 
     $xml_response=$this->queryAmazon($parameters); 
     return $xml_response; 
    } 

अब, समस्या यह है कि मैं केवल इस तरह से एल्बम प्राप्त कर सकता हूं। उदाहरण के लिए, यदि मैं कलाकार के लिए "रॉबर्ट रैंडोल्फ" और शीर्षक के लिए "कलरब्लिंड" डालता हूं, तो मुझे रॉबर्ट रैंडोल्फ़ और फैमिली बैंड का कलरब्लिंड एल्बम मिलता है। अगर मैं किसी विशेष ट्रैक की खोज करता हूं, जैसे "थ्रिल ऑफ इट", अमेज़ॅन कुछ भी नहीं ढूंढ सकता है।

तो मुझे क्या करना है यह पता लगाने के लिए पहले ट्रैक शीर्षक के लिए क्वेरी कैसे बनाएं। तो मुझे यह पता लगाने की ज़रूरत है कि मेरे परिणामों को केवल एमपी 3 डाउनलोड में सीमित कैसे करें। मैं यह कैसे कर सकता हूँ?

यदि विषय पर दस्तावेज़ीकरण है, तो क्या आप मुझे सही दिशा में इंगित कर सकते हैं? मैं reading through it रहा हूं, लेकिन जो भी मैं चाहता हूं उसके लिए कोई पैरामीटर नहीं देख रहा हूं।

आपके समय के लिए धन्यवाद।

उत्तर

9

प्रलेखन विचित्र रूप से व्यवस्थित है, और मुझे प्रासंगिक जानकारी खोजने में कठिनाई होती है।

एमपी 3 देखने के लिए, आपको '0Downloads' पर अपना SearchIndex पैरामीटर बदलना होगा। फिर, "कलाकार" और "ट्रैक" का उपयोग करने के बजाय, आपको "कीवर्ड" का उपयोग करना होगा। "कीवर्ड" संपत्ति मान के लिए कलाकार को एक स्ट्रिंग में कलाकारों को ट्रैक करें और मूल्यों को ट्रैक करें। साथ ही, SearchIndex के लिए "MusicTracks" आज़माएं, क्योंकि आपको वहां भी अलग-अलग परिणाम मिल सकते हैं।

यह एक कामकाजी प्रणाली से एक स्निपेट है जो मेरे पास एक समान प्रकार का लुकअप करता है।

$params = Array(
     "Operation"=>'ItemSearch', 
     "SearchIndex"=>'MP3Downloads', 
     "ResponseGroup"=>'ItemAttributes,Tracks,Images', 
     "Keywords"=>$track['title'].' '.$artist['name'] 
    ); 
+0

बहुत बढ़िया, जो खूबसूरती से काम करता था! अनेक अनेक धन्यवाद। – Brad

2

यह मेरी समस्या भी थी। मैंने उसी उदाहरण से काम किया जिसे मैंने भारी रूप से संशोधित किया और कक्षाओं के पूरे संग्रह में शामिल किया जिसे मैंने मैशप से बाहर कर दिया। मैं वास्तव में क्या चाहता हूं अमेज़ॅन के पूर्वावलोकन एक कलाकार और एल्बम शीर्षक दिया गया है। मैं इस पर काम करने जा रहा हूं, अब मेरे पास अभी भी मेरे हाथों पर बहुत अधिक समय है। मेरे मैशप codebase यहाँ है:

My Mashup's and codebase

मैं इस सवाल से रेफरल मिल रही है, मेरी समाधान मूल रूप से क्रिस के रूप में ही है, मैं दो तरीकों/कार्य है कि मेरे कोड में ऐसा है:

 /** 
    * Return the tracks found on an album, have to page to get them all which this method does not do. 
    * 
    * @param string $albumTitle 
    * @param string $artist 
    * @return mixed simpleXML object 
    */ 
    public function getMP3sForAlbumByArtist($albumTitle, $artist) 
    { 
     $searchTerm = $albumTitle . ' ' . $artist; 
     $parameters = array("Operation" => "ItemSearch", 
          "Keywords" => $searchTerm, 
          "SearchIndex" => AmazonProductAPI::CATEGORY_MP3_DOWNLOADS, 
          "ResponseGroup" => AmazonProductAPI::RESPONSE_GROUP_TRACKS); 

     $xml_response = $this->queryAmazon($parameters); 

     return $xml_response; 
    } 



    /** 
    * Return the tracks found on a song title and artist 
    * 
    * @param string $songTitle 
    * @param string $artist 
    * @return mixed simpleXML object 
    */ 
    public function getMP3ForSongByArtist($songTitle, $artist) 
    { 
     $searchTerm = $songTitle . ' ' . $artist; 
     $parameters = array("Operation" => "ItemSearch", 
          "Keywords" => $searchTerm, 
          "SearchIndex" => AmazonProductAPI::CATEGORY_MP3_DOWNLOADS, 
          "ResponseGroup" => AmazonProductAPI::RESPONSE_GROUP_TRACKS); 

     $xml_response = $this->queryAmazon($parameters); 

     return $xml_response; 
    } 

मेरा कोड उपरोक्त लिंक से डाउनलोड करने योग्य है या गिटहब में है, यह पुराने कोड उदाहरणों पर आधारित है जो मैंने अपडेट किया है। यह मेरे मेजबान पर ठीक चल रहा है, लेकिन आईट्यून्स गाने के पूर्वावलोकन के लिए बेहतर है।

+0

HI। केवल मूल ट्रैक पर कैसे खोजें? – Zl3n

+0

मैंने वर्षों में उस एपीआई के साथ काम नहीं किया है। अमेज़ॅन, Google, और अन्य एपीआई बदलते हैं और क्या अनुमति है। मुझे यह भी यकीन नहीं है कि मूल ट्रैक, संपूर्ण गीत से आपका क्या मतलब है? अमेज़ॅन आपको पूरे गीत तक पहुंचने नहीं देगा, वे पूर्वावलोकन तक पहुंचने के लिए लगभग असंभव बनाते हैं। आपके उत्तर के लिए – Muskie

+0

Thks। मैंने आपकी पोस्ट में सुधार किया है, उत्तर ने संस्करण को 2013 में बदल दिया है ... और यह पूरी तरह से काम करता है;)।मूल रूप से, मैं "आधिकारिक रिलीज" कहना चाहूंगा, जैसे कि इसे संगीतब्राइज़ या डिस्कोग्स php api में नामित किया गया है। – Zl3n

संबंधित मुद्दे