Содержание

Yandex Search Engine Results API

{
  "search_metadata": {
    "id": "5e3d845259603db4392078f5",
    "status": "Success",
    "json_endpoint": "https://serpapi.com/searches/d7a266c1bb0fa60c/5e3d845259603db4392078f5.json",
    "created_at": "2020-02-07 15:37:54 UTC",
    "processed_at": "2020-02-07 15:37:54 UTC",
    "yandex_url": "https://yandex.com/search/?text=coffee",
    "raw_html_file": "https://serpapi.com/searches/d7a266c1bb0fa60c/5e3d845259603db4392078f5.html",
    "total_time_taken": 5.4
  },
  "search_parameters": {
    "text": "coffee",
    "engine": "yandex"
  },
  "search_information": {
    "organic_results_state": "Results for exact spelling",
    "total_results": " 2 million results found",
    "query_displayed": "coffee"
  },
  "organic_results": [
    {
      "position": 1,
      "title": "Coffee - Wikipedia",
      "link": "https://en.wikipedia.org/wiki/Coffee",
      "displayed_link": "en.wikipedia.org›Coffee",
      "snippet": "Coffee is a brewed drink prepared from roasted coffee beans, the seeds of berries from certain Coffea species.
The genus Coffea is native to tropical Africa (specifically having its origin in Ethiopia and Sudan) and Madagascar, the Comoros, Mauritius, and Réunion in the Indian Ocean. Coffee plants are now cultivated in over 70 countries, primarily in the equatorial regions of the Americas, Southeast Asia, Indian subcontinent, and Africa. The two most commonly grown are C. arabica and C. robusta. Once... Hide" }, { "position": 2, "title": "List of coffee companies - Wikipedia", "link": "https://en.wikipedia.org/wiki/List_of_coffee_companies", "displayed_link": "en.wikipedia.org›List of coffee companies", "snippet": "This is a worldwide list of coffee companies that roast or distribute coffee. List of coffeehouse chains. Coffee companies at Curlie." }, { "position": 3, "title": "Home - Coffee Factory and Cafe", "link": "https://www.coffeefactoryandcafe.com/", "displayed_link": "coffeefactoryandcafe.com", "snippet": "Waters and 2 coffees.
Coffee was great, not very pretty like a latte should be but, it ... Over all. The coffee was good. Whoever was working today (i will erase his name, no need to..." }, { "position": 4, "title": "H&C Coffee - Premium Coffee", "link": "http://www.hccoffee.com/", "displayed_link": "hccoffee.com", "snippet": "Coffee Storage. Local Services. Coffee Delivery Service." }, { "position": 5, "title": "Coffee Company Lancaster PA | Coffee Shop & Cafe Food...", "link": "https://www.coffeecocafe.com/", "displayed_link": "coffeecocafe.com", "snippet": "Coffee Co offers ambiance with no pretense, friendly baristas, delicious homemade food and of course, our legendary coffee. We believe in what a cup of coffee can do to enrich..." }, { "position": 6, "title": "Coffee - Buy Coffee Beans Online", "link": "https://www.coffeecompany.com.au/", "displayed_link": "coffeecompany.com.au", "snippet": "Coffee Subscription.
View the full range of coffee Looking for a unique present for someone special?" }, { "position": 7, "title": "coffee - Wiktionary", "link": "https://en.wiktionary.org/wiki/coffee", "displayed_link": "en.wiktionary.org›wiki/coffee", "snippet": "From Dutch koffie (“coffee”) [from 1582], from Italian caffè (“coffee”), from Ottoman Turkish قهوه‎ (kahve, “coffee”), from Arabic قَهْوَة‎ (qahwa, “coffee, a brew”). The Arabic word originally referred to wine..." }, { "position": 8, "title": "Coffee | The Coffee Wiki | Fandom", "link": "https://coffee.fandom.com/wiki/Coffee", "displayed_link": "coffee.fandom.com›wiki/Coffee", "snippet": "Coffee is a caffeinated beverage brewed from roasted coffee beans extracted from the \"cherry\" of a coffee tree. Upon brewing, coffee is a dark, often black beverage, but brown if cream or milk is added." }, { "position": 9, "title": "US Coffee - Office Coffee Service & Delivery - NY, NJ, Tri-State", "link": "https://uscoffee.
com/", "displayed_link": "uscoffee.com", "snippet": "The leading office coffee service for the tri-state area since 1972. Providing full-service office refreshment, water cooler services and next day delivery." }, { "position": 10, "title": "HOME | Tōv Coffee", "link": "https://www.tovcoffee.com/", "displayed_link": "tovcoffee.com", "snippet": "\"Tov Coffee is certainly not your average coffee shop, in fact it's not a shop at all, it's a double decker bus specializing in Egyptian coffee. Tov makes all their syrups in house..." }, { "position": 11, "title": "Coffee - Отели – Выгодные цены без комиссий!", "link": "https://yabs.yandex.ru/count/Q9XSoiXvCBC507a24808CLQ4FLu00000EFG3G0H80c2y26W4SEBOmv01W07cYzxV1eW1xi3_koMG0RoAm9yVc07gilAf8BW1jgJLiHJ00GBO0RBn-GxW0Q2EfWNe0h3W0kYtd07O0WBm0eMHW_q7-0AGyOBcfSQurUK1c0Ftvoce0ngm0mIu1Fy1m0Jc0kW4zY3u1D3528W5qCK8a0Nzq4gW1RoI0wW5l983i0MyaWEu1T2x6y05_T1Ao0NGknlW1GNm1G6O1eBGhFCEe0Qe0QW6g0711bQGaAOIvgOioGPMa92c4kQcBDa60000CFi0002f1-zSeCDWpjm5i0U0W9Wyq0S2u0Ua3_47YBnPdD-yHRBu1m60207G29I2W870W826W07W2FIRJe0A0S4A00000000y3_O2WBW2e29UgeB4DiSbSFlN000Ye-EBFwT1G3P2-zSeCDWpjm5w0lGnGZm2mQ83EZkthu1w0mZu0q1YGx3zIXSZyArFv0Em8Gzc0xMeCAqgiAvqooW3i24FTWE1Q4Fm_KeN8_2jJ_P3m0000000F0_u0y1W12YdwuDa12Fki6yf83YtEe1cX094G0000000F0_o10C-10DW14FY141a141eh500000003mFwWHm8Gzi141-X4P3G00000L000001q000009G00000j000008WI0P0I0QaI5xt6pdwPLp_m4WU84mAO4m704____________m7Q4me80100600W02W0u1FGknkW5D2x6wWK_T1Ao1G4q1J___________y1s1JGbxB91T0Lq9UooGNO5S6AzkoZZxpyO_0LmOhsxAEFlFnZ", "displayed_link": "booking.
com", "snippet": "Бронируйте отели в Coffee · Подлинные отзывы. Широкий выбор. 0% комиссии. Без посредников" } ], "knowledge_graph": {}, "inline_images": [ { "title": "Wallpaper Coffee Grain Cup Food Drinks 3840x2400", "image": "https://sun9-45.userapi.com/c857624/v857624666/150101/Sg1hLj3htvw.jpg", "alternative_images": [ "https://s1.1zoom.me/b5050/773/Drinks_Coffee_Grain_Cup_484502_3840x2400.jpg" ], "thumbnail": "https://im0-tub-com.yandex.net/i?id=6a3a8d465e609c015ac882cb258b1f00&n=13", "url": "https://yandex.com/images/search?text=coffee&img_url=https%3A%2F%2Fsun9-45.userapi.com%2Fc857624%2Fv857624666%2F150101%2FSg1hLj3htvw.jpg&pos=0&rpt=simage&stype=image&lr=21772&parent-reqid=1581089878253956-176627422372175119500111-vla1-2993&source=wiz" }, { "title": "User john alroqee - Stack Overflow", "image": "https://sun9-68.userapi.com/c857028/v857028441/a76c0/LUSMz13oiWc.jpg", "alternative_images": [ "https://i.
stack.imgur.com/FHEyM.jpg?s=136&g=1" ], "thumbnail": "https://im0-tub-com.yandex.net/i?id=2bb4ab0e9911b223c5a49f8a123727b4&n=13", "url": "https://yandex.com/images/search?text=coffee&img_url=https%3A%2F%2Fsun9-68.userapi.com%2Fc857028%2Fv857028441%2Fa76c0%2FLUSMz13oiWc.jpg&pos=1&rpt=simage&stype=image&lr=21772&parent-reqid=1581089878253956-176627422372175119500111-vla1-2993&source=wiz" }, { "title": "Desktop Wallpapers Coffee Grain Cup Food Vapor Saucer 2560x1", "image": "https://s1.1zoom.me/big3/785/350874-admin.jpg", "alternative_images": [ "https://s1.1zoom.me/big7/785/Drinks_Coffee_Grain_Cup_350874.jpg" ], "thumbnail": "https://im0-tub-com.yandex.net/i?id=c727d96b4b707009a33f3dd17da9eaa2&n=13", "url": "https://yandex.com/images/search?text=coffee&img_url=https%3A%2F%2Fs1.1zoom.me%2Fbig3%2F785%2F350874-admin.jpg&pos=2&rpt=simage&stype=image&lr=21772&parent-reqid=1581089878253956-176627422372175119500111-vla1-2993&source=wiz" }, { "title": "Скачать обои зерна, кофе, кружки, кофейные зерна, деревянная", "image": "https://static6.
depositphotos.com/1144352/636/i/950/depositphotos_6362396-stock-photo-coffee-beans-and-coffee.jpg", "alternative_images": [ "https://wallbox.ru/wallpapers/main2/201729/zerna-kofe-kruzki.jpg" ], "thumbnail": "https://im0-tub-com.yandex.net/i?id=cbcbab343d5fc4fcbf2c5f7ee22ecb06&n=13", "url": "https://yandex.com/images/search?text=coffee&img_url=https%3A%2F%2Fstatic6.depositphotos.com%2F1144352%2F636%2Fi%2F950%2Fdepositphotos_6362396-stock-photo-coffee-beans-and-coffee.jpg&pos=3&rpt=simage&stype=image&lr=21772&parent-reqid=1581089878253956-176627422372175119500111-vla1-2993&source=wiz" }, { "title": "Specialty "Coffee": Intro to Cupping $35 - The Food District", "image": "https://i.ebayimg.com/00/s/MTEwMVgxNjAw/z/CiYAAOSwuxFY0t~n/$_57.JPG?set_id=8800005007", "alternative_images": [ "https://shopfooddistrict.com/wp-content/uploads/2019/04/Coffee-Cupping.gif" ] }, { "title": "1920x1080 free high resolution wallpaper coffee JPG 354 kB F", "image": "https://ae01.
alicdn.com/kf/HTB1pNCkmuuSBuNjy1Xcq6AYjFXaB/16-adet-Cappuccino-ikolata-Shaker-Kahve-Un-Elek-eker-Shaker-Paslanmaz-elik-Tuz-Da-t-c.jpg", "alternative_images": [ "https://www.tokkoro.com/picsup/1088513-coffee.jpg" ] }, { "title": "Coffee LGDF Wholesale", "image": "https://www.lgdf.ca/wp-content/uploads/2015/08/istock_000019749073medium.jpg", "alternative_images": [ "https://www.lgdf.ca/wp-content/uploads/2015/08/istock_000019749073medium.jpg" ] }, { "title": "hkh Я люблю кофе!!! Postila", "image": "https://sun9-27.userapi.com/c636628/v636628989/219e7/GuA-HAWBACo.jpg", "alternative_images": [ "https://img11.postila.io/data/d3/3e/9a/b9/d33e9ab9a493189990e33d82d47cd42581915d1748cbb16004357403bab9617a.jpg" ] }, { "title": "20 things I’d tell you over coffee. (Or more likely, queso.)", "image": "https://images.pexels.com/photos/2059/restaurant-red-beans-coffee.jpg?auto=compress&cs=tinysrgb&h=350", "alternative_images": [ "https://acuff. me/wp-content/uploads/2019/01/coffee-171653_1920.jpg" ] }, { "title": "Coffee Collection 5964 - file.army", "image": "https://st.depositphotos.com/2045405/2015/i/950/depositphotos_20159497-stock-photo-coffee.jpg", "alternative_images": [ "https://404store.com/2017/11/15/CoffeeCollection-5964.jpg" ] }, { "title": "Can Chocolate, Tea, Coffee And Zinc Help Make You More Healt", "image": "https://superbekala.com/wp-content/uploads/2019/04/Dollarphotoclub_59335540.jpg", "alternative_images": [ "https://ilovemychiropractor.org/?image=10043" ] }, { "title": "Coffee Terms "Defined": Beans, Brews, and Barista Speak So You", "image": "https://st2.depositphotos.com/2632165/9267/i/950/depositphotos_92676178-stock-photo-cup-of-coffee-and-coffee.jpg", "alternative_images": [ "https://img1.cookinglight.timeinc.net/sites/default/files/image/1605w-getty-coffee-beans-cup.jpg" ] }, { "title": "Is Coffee Making You Fat?", "image": "https://st. depositphotos.com/1020804/1263/i/950/depositphotos_12638853-stock-photo-coffee-cup-and-beans.jpg", "alternative_images": [ "https://www.meghantelpner.com/wp-content/uploads/2014/09/shutterstock_111999368.jpg" ] }, { "title": "1920x1080 drink, foam, Coffee, heart, cup, steam, grains Mac", "image": "https://sun9-55.userapi.com/c853424/v853424363/1cdc4a/1jZaC_auiJc.jpg", "alternative_images": [ "https://www.tokkoro.com/picsup/6061170-drink-foam-coffee-heart-cup-steam-grains.jpg" ] }, { "title": "Wallpaper Coffee Grain Food 2560x1600", "image": "https://images-wixmp-ed30a86b8c4ca887773594c2.wixmp.com/f/ab371d58-f694-4953-a2e5-c79acedd9f56/dcuwa1o-33c88fd0-6aa8-431a-8e38-14b9a973e4d6.png/v1/fill/w_1192,h_670,q_70,strp/background_310_by_llexandro_dcuwa1o-pre.jpg?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1cm46YXBwOjdlMGQxODg5ODIyNjQzNzNhNWYwZDQxNWVhMGQyNmUwIiwiaXNzIjoidXJuOmFwcDo3ZTBkMTg4OTgyMjY0MzczYTVmMGQ0MTVlYTBkMjZlMCIsIm9iaiI6W1t7ImhlaWdodCI6Ijw9MTQ0MCIsInBhdGgiOiJcL2ZcL2FiMzcxZDU4LWY2OTQtNDk1My1hMmU1LWM3OWFjZWRkOWY1NlwvZGN1d2Exby0zM2M4OGZkMC02YWE4LTQzMWEtOGUzOC0xNGI5YTk3M2U0ZDYucG5nIiwid2lkdGgiOiI8PTI1NjAifV1dLCJhdWQiOlsidXJuOnNlcnZpY2U6aW1hZ2Uub3BlcmF0aW9ucyJdfQ. IA28OJrX4mFYP5blUjGsm5dC6JDKsD-TovhWlA5ciow", "alternative_images": [ "https://s1.1zoom.me/big3/178/408894-sepik.jpg" ] }, { "title": "The Start of Coffee - Addis Coffee - Arabica coffee beans fr", "image": "https://img2.goodfon.com/original/5050x3370/6/e4/kofe-pena-zerna-serdce-chashka.jpg", "alternative_images": [ "https://addiscoffee.com.au/wp-content/uploads/2016/02/G11.jpg" ] }, { "title": "A Cup of Coffee and Bagel with Ivan Frank - Squirrel Hill Ur", "image": "https://www.tokkoro.com/picsup/5248291-coffee-latte-espresso-flatlay-wood-cafe-mug-table-cappuccino-java-mocha-creative-artistic-hipster-hippie-joe-brew-starbuck-expresso-coffee-bean-creative-commons-images.jpg", "alternative_images": [ "https://shuc.org/wp-content/uploads/2016/09/coffee-983955.jpg" ] }, { "title": "5 причин выпить кофе", "image": "https://st.depositphotos.com/2632165/3143/i/950/depositphotos_31435437-stock-photo-coffee. jpg", "alternative_images": [ "https://akky.su/upload/medialibrary/9ff/9ffb7c547a80c2d3927fc3f28572bfc6.jpg" ] }, { "title": "Wallpaper 4k Coffee Art artist wallpapers, beans wallpapers,", "image": "https://www.tokkoro.com/picsup/1388463-coffee.jpg", "alternative_images": [ "https://www.pixel4k.com/preview.php?src=https://www.pixel4k.com/wp-content/uploads/2018/10/coffee-art_1540748177.jpg" ] }, { "title": "#3348189 Coffee, Coffee beans, Spices, Beverage wallpaper an", "image": "https://404store.com/2017/04/03/DeliciousFoodWallpapers165.jpg", "alternative_images": [ "https://www.tokkoro.com/picsup/3348189-coffee-coffee-beans-spices-beverage.jpg" ] } ], "inline_video": [ { "title": "Craft Coffee", "link": "https://yandex.com/video/search?text=coffee&path=wizard&parent-reqid=1581089878253956-176627422372175119500111-vla1-2993&noreask=1&autoplay=1&filmId=4151714475789157047", "source": { "name": "vimeo. com", "link": "http://vimeo.com/45990802" }, "thumbnail": "https://avatars.mds.yandex.net/get-vthumb/2089623/574e32d175c8bf461ab2b9507e19bc94/168x95" }, { "title": ""Coffeecompany": The Coffee Story (EN)", "link": "https://yandex.com/video/search?text=coffee&path=wizard&parent-reqid=1581089878253956-176627422372175119500111-vla1-2993&noreask=1&autoplay=1&filmId=7627040588496300298", "source": { "name": "vimeo.com", "link": "http://vimeo.com/87163631" }, "thumbnail": "https://avatars.mds.yandex.net/get-vthumb/222490/0ed3f21e204e757e6e14c0589abcaf90/168x95" }, { "title": "Coffee "Coffee": A Specialty Coffee Documentary", "link": "https://yandex.com/video/search?text=coffee&path=wizard&parent-reqid=1581089878253956-176627422372175119500111-vla1-2993&noreask=1&autoplay=1&filmId=11085285509500565975", "source": { "name": "vimeo.com", "link": "http://vimeo. com/133624241" }, "thumbnail": "https://avatars.mds.yandex.net/get-vthumb/2099966/8b045f31df8dc79ea6e91b49950df2ba/168x95" }, { "title": "'Coffee Time'", "link": "https://yandex.com/video/search?text=coffee&path=wizard&parent-reqid=1581089878253956-176627422372175119500111-vla1-2993&noreask=1&autoplay=1&filmId=15759789561527005288", "source": { "name": "vimeo.com", "link": "http://vimeo.com/138402717" }, "thumbnail": "https://avatars.mds.yandex.net/get-vthumb/1734583/878df9229d108a54c4ea00afa7c9022e/168x95" }, { "title": "Stumptown Coffee Roasters.", "link": "https://yandex.com/video/search?text=coffee&path=wizard&parent-reqid=1581089878253956-176627422372175119500111-vla1-2993&noreask=1&autoplay=1&filmId=1305175487555494267", "source": { "name": "vimeo.com", "link": "http://vimeo.com/57430932" } }, { "title": "How To Make The Perfect Jameson Irish Coffee", "link": "https://yandex. com/video/search?text=coffee&path=wizard&parent-reqid=1581089878253956-176627422372175119500111-vla1-2993&noreask=1&autoplay=1&filmId=5940155405026333740", "source": { "name": "youtube.com", "link": "http://www.youtube.com/watch?v=E8gP35w-o5U" } }, { "title": "Crave Coffee Roastery and Espresso Bar", "link": "https://yandex.com/video/search?text=coffee&path=wizard&parent-reqid=1581089878253956-176627422372175119500111-vla1-2993&noreask=1&autoplay=1&filmId=9939498197168220537", "source": { "name": "vimeo.com", "link": "http://vimeo.com/122376948" } }, { "title": "Vintage Coffee", "link": "https://yandex.com/video/search?text=coffee&path=wizard&parent-reqid=1581089878253956-176627422372175119500111-vla1-2993&noreask=1&autoplay=1&filmId=13962380897409010211", "source": { "name": "vimeo.com", "link": "http://vimeo.com/151380532" } }, { "title": "Coffee is not a drug – new case", "link": "https://yandex. com/video/search?text=coffee&path=wizard&parent-reqid=1581089878253956-176627422372175119500111-vla1-2993&noreask=1&autoplay=1&filmId=11772832462222367727", "source": { "name": "vimeo.com", "link": "http://vimeo.com/195424336" } }, { "title": "Coffee Maker Destruction", "link": "https://yandex.com/video/search?text=coffee&path=wizard&parent-reqid=1581089878253956-176627422372175119500111-vla1-2993&noreask=1&autoplay=1&filmId=13917975897069701172", "source": { "name": "youtube.com", "link": "http://www.youtube.com/watch?v=Fj65M_tyRsI" } }, { "title": "Coffee Virgin", "link": "https://yandex.com/video/search?text=coffee&path=wizard&parent-reqid=1581089878253956-176627422372175119500111-vla1-2993&noreask=1&autoplay=1&filmId=2860414124453025325", "source": { "name": "vimeo.com", "link": "http://vimeo.com/150603479" } }, { "title": "Coffee Bar", "link": "https://yandex. com/video/search?text=coffee&path=wizard&parent-reqid=1581089878253956-176627422372175119500111-vla1-2993&noreask=1&autoplay=1&filmId=4523478549669871838", "source": { "name": "vimeo.com", "link": "http://vimeo.com/39286333" } }, { "title": "Coffee Installation", "link": "https://yandex.com/video/search?text=coffee&path=wizard&parent-reqid=1581089878253956-176627422372175119500111-vla1-2993&noreask=1&autoplay=1&filmId=12033620648993854005", "source": { "name": "vimeo.com", "link": "http://vimeo.com/27838096" } }, { "title": "BOON Coffee Roasters, The Hague.", "link": "https://yandex.com/video/search?text=coffee&path=wizard&parent-reqid=1581089878253956-176627422372175119500111-vla1-2993&noreask=1&autoplay=1&filmId=13389209156662617921", "source": { "name": "vimeo.com", "link": "http://vimeo.com/66081274" } }, { "title": "Inside "Coffee": Specialty Coffee Roasting 101. ..", "link": "https://yandex.com/video/search?text=coffee&path=wizard&parent-reqid=1581089878253956-176627422372175119500111-vla1-2993&noreask=1&autoplay=1&filmId=326267986663064725", "source": { "name": "vimeo.com", "link": "http://vimeo.com/152264714" } }, { "link": "https://yandex.com/video/search?text=coffee&path=wizard&parent-reqid=1581089878253956-176627422372175119500111-vla1-2993&noreask=1&autoplay=1" } ] }

Yandex Music API

Back to top

Toggle table of contents sidebar

Yandex Music API

Делаю то, что по определённым причинам не сделала компания Yandex.

⚠️ Это неофициальная библиотека.

Сообщество разработчиков общаются и помогают друг другу в Telegram чате, присоединяйтесь!

Содержание

  • Введение

    1. Доступ к вашим данным Яндекс. Музыка

  • Установка

  • Начало работы

    1. Изучение по примерам

    2. Особенности использования асинхронного клиента

    3. Логирование

    4. Документация

  • Получение помощи

  • Список изменений

  • Реализации на других языках

    1. C#

    2. PHP

    3. JavaScript

  • Разработанные проекты

    1. Плагин для Kodi

    2. Telegram бот-клиент

  • Благодарность

  • Внесение своего вклада в проект

  • Лицензия

Введение

Эта библиотека предоставляется Python интерфейс для никем незадокументированного и сделанного только для себя API Яндекс Музыки.

Она совместима с версиями Python 3.7+ и поддерживает работу как с синхронном, так и асинхронным (asyncio) кодом.

В дополнение к реализации чистого API данная библиотека имеет ряд классов-обёрток объектов высокого уровня дабы сделать разработку клиентов и скриптов простой и понятной. Вся документация была написана с нуля исходя из логического анализа в ходе обратной разработки (reverse engineering) API.

Доступ к вашим данным Яндекс.Музыка

Начиная с версии 2.0.0 библиотека больше не предоставляет интерфейсы для работы с OAuth Яндекс и Яндекс.Паспорт. Задача по получению токена для доступа к данным на плечах разработчиков использующих данную библиотеку.

Установка

Вы можете установить или обновить Yandex Music API при помощи:

pip install yandex-music --upgrade

Или Вы можете установить из исходного кода с помощью:

git clone https://github.com/MarshalX/yandex-music-api
cd yandex-music-api
python setup.py install

Начало работы

Приступив к работе первым делом необходимо создать экземпляр клиента.

Инициализация синхронного клиента:

from yandex_music import Client
client = Client()
client.init()
# или
client = Client().init()

Инициализация асинхронного клиента:

from yandex_music import ClientAsync
client = ClientAsync()
await client. init()
# или
client = await Client().init()

Вызов init() необходим для получение информации для упрощения будущих запросов.

Работа без авторизации ограничена. Так, например, для загрузки будут доступны только первые 30 секунд аудиофайла. Для понимания всех ограничений зайдите на сайт Яндекс.Музыка под инкогнито и воспользуйтесь сервисом.

Для доступа к своим личным данным следует авторизоваться. Это осуществляется через токен аккаунта Яндекс.Музыка.

Авторизация:

from yandex_music import Client
client = Client('token').init()

После успешного создания клиента Вы вольны в выборе необходимого метода из API. Все они доступны у объекта класса Client. Подробнее в методах клиента в документации.

Пример получения первого трека из плейлиста “Мне нравится” и его загрузка:

from yandex_music import Client
client = Client('token').init()
client.users_likes_tracks()[0].fetch_track().download('example.mp3')

В примере выше клиент получает список треков которые были отмечены как понравившиеся. API возвращает объект TracksList в котором содержится список с треками класса TrackShort. Данный класс содержит наиважнейшую информацию о треке и никаких подробностей, поэтому для получения полной версии трека со всей информацией необходимо обратиться к методу fetch_track(). Затем можно скачать трек методом download().

Пример получения треков по ID:

from yandex_music import Client
client = Client().init()
client.tracks(['10994777:1193829', '40133452:5206873', '48966383:6693286', '51385674:7163467'])

В качестве ID трека выступает его уникальный номер и номер альбома. Первым треком из примера является следующий трек: music.yandex.ru/album/1193829/track/10994777

Выполнение запросов с использование прокси в синхронной версии:

from yandex_music.utils.request import Request
from yandex_music import Client
request = Request(proxy_url='socks5://user:password@host:port')
client = Client(request=request). init()

Примеры proxy url:

  • socks5://user:password@host:port

  • http://host:port

  • https://host:port

  • http://user:password@host

Больше примеров тут: proxies — advanced usage — requests

Выполнение запросов с использование прокси в асинхронной версии:

from yandex_music.utils.request_async import Request
from yandex_music import ClientAsync
request = Request(proxy_url='http://user:[email protected]')
client = await ClientAsync(request=request).init()

Socks прокси не поддерживаются в асинхронной версии.

Про поддерживаемые прокси тут: proxy support — advanced usage — aiohttp

Изучение по примерам

Вот несколько примеров для обзора. Даже если это не Ваш подход к обучению, пожалуйста, возьмите и бегло просмотрите их.

Код примеров опубликован в открытом доступе, поэтому Вы можете взять его и начать писать вокруг своё.

Посетите эту страницу чтобы изучить официальные примеры.

Особенности использования асинхронного клиента

При работе с асинхронной версией библиотеке стоит всегда помнить следующие особенности:

Пояснение ко второму пункту:

from yandex_music import ClientAsync
client = await ClientAsync('token').init()
liked_short_track = (await client.users_likes_tracks())[0]
# правильно
full_track = await liked_short_track.fetch_track_async()
await full_track.download_async()
# НЕПРАВИЛЬНО
full_track = await liked_short_track.fetch_track()
await full_track.download()

Логирование

Данная библиотека использует logging модуль. Чтобы настроить логирование на стандартный вывод, поместите

import logging
logging.basicConfig(level=logging.DEBUG,
                    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')

в начало вашего скрипта.

Вы также можете использовать логирование в вашем приложении, вызвав logging.getLogger() и установить уровень какой Вы хотите:

logger = logging. getLogger()
logger.setLevel(logging.INFO)

Если Вы хотите DEBUG логирование:

logger.setLevel(logging.DEBUG)

Документация

Документация yandex-music-api расположена на readthedocs.io. Вашей отправной точкой должен быть класс Client, а точнее его методы. Именно они выполняют все запросы на API и возвращают Вам готовые объекты. Класс Client на readthedocs.io.

Получение помощи

Получить помощь можно несколькими путями:

  • Задать вопрос в Telegram чате, где мы помогаем друг другу, присоединяйтесь!

  • Сообщить о баге можно создав Bug Report.

  • Предложить новую фичу или задать вопрос можно создав discussion.

  • Найти ответ на вопрос в документации библиотеки.

Список изменений

Весь список изменений ведётся в файле CHANGES.rst.

Реализации на других языках

C#

Реализация с совершенно другим подходом, так как используется API для frontend’a, а не мобильных и десктопных приложений: Winster332/Yandex. Music.Api.

@Winster332 не сильно проявляет активность, но существует форк, который продолжил начатое. Эндпоинты изменены с фронтовых на мобильные: K1llMan/Yandex.Music.Api.

PHP

Частично переписанная текущая библиотека на PHP: LuckyWins/yandex-music-api.

JavaScript

API wrapper на Node.JS. Не обновлялся больше двух лет: itsmepetrov/yandex-music-api. Продолжение разработки заброшенной библиотеки: kontsevoye/ym-api.

Разработанные проекты

Плагин для Kodi

Плагин может проигрывать пользовательские плейлисты и плейлисты Яндекса, поиск по Яндекс Музыке, радио.

Сайт проекта: ymkodi.ru. Исходный код: kodi.plugin.yandex-music. Автор: @Angel777d.

Telegram бот-клиент

Неофициальный бот. Умные и ваши плейлисты, понравившиеся треки. Лайки, дизлайки, текста песен, поиск, распознавание песен, похожие треки! Полноценный клиент на базе мессенджера.

Сайт проекта: music-yandex-bot.ru. Бот в Telegram: @music_yandex_bot. Автор: @MarshalX.

Статья на habr.com с описанием реализации: Под капотом бота-клиента Яндекс.Музыки.

Благодарность

Спасибо разработчикам python-telegram-bot. Выбрал Вас в качестве примера.

Внесение своего вклада в проект

Внесение своего вклада максимально приветствуется! Есть перечень пунктов, который стоит соблюдать. Каждый пункт перечня расписан в CONTRIBUTING.md.

Вы можете помочь и сообщив о баге или о новом поле пришедшем от API.

Лицензия

Вы можете копировать, распространять и модифицировать программное обеспечение при условии, что модификации описаны и лицензированы бесплатно в соответствии с LGPL-3. Произведения производных (включая модификации или что-либо статически связанное с библиотекой) могут распространяться только в соответствии с LGPL-3, но приложения, которые используют библиотеку, необязательно.

Парсинг и API Yandex

Время прочтения: 3 мин.

Довольно часто IT-специалисты для сбора информации занимаются парсингом сайтов. На этот раз перед нами встала задача по парсингу объявлений, размещенных на сайте о продаже объектов недвижимости с целью изучения клиентского опыта и функциональных возможностей сайта. Но при выполнении задания мы столкнулись с тем что, количество выводимых страниц ограничено, при этом всех объявлений значительно больше.

Так, к примеру, по городу Сочи количество объявлений о продаже составило 27 тысяч, а количество объявлений, которое выдает сайт для просмотра, ограничивается 200-ми страницами и объявлений получается всего 2 тысячи.

Так как задача перед нами стояла более глобального масштаба, получить данные по объявлениям по всей России, а это более 2 млн объявлений, пришлось немного поразмыслить. Поиск объявлений на данном сайте происходит с привязкой к геолокации, т.е. каждое объявление имеет точку на карте, а в адресной строке есть явная привязка к координатам:

ne=43.902806%2C40.057251&sw=43.496797%2C39.241516

Поэтому в качестве решения данной задачи решили воспользоваться сервисом  Yandex API, который позволяет использовать картографические данные. Первым делом мы идем на сайт Yandex.Карт и получаем ключ, который нам понадобится для работы с Yandex API, проблем с получением возникнуть не должно.

#Глобальные переменные
step=0.5                                  #Шаг сетки
API='*******-****-****-****-************' #apikey Yandex Map

Присвоим переменной step размер сетки по координатам. Пример 0,5 для города это нормально, а вот для страны это будет много, поэтому шаг необходимо будет уменьшить, например, до 0,3.  В переменную API сохраняем ключ, полученный от Yandex.  Посмотрев документацию, я составил простой запрос на получение данных, в запросе должно быть минимум три параметра, это geocode, apikey, format.

https://geocode-maps.yandex.ru/1.x?geocode=”Сочи”&apikey=5b61a80d-****-****-****-dfda****d641&format=json

Geocode – в этот параметр можем вставить любые данные (город, улица, страна).

Apikey – наш API ключ, полученный по почте.

Format – формат в котором мы хотим получить ответ.

Правильно составленный запрос, вернет данные в json формате, там будет вся информация, которую Yandex знает об объекте. Нам необходима лишь малая ее часть, это точки геолокации, они обозначают края объекта (в данном случае города Сочи).

Точки всего две:

‘lowerCorner’ – обозначает долготу и широту нижней левой точки.

‘upperCorner’ – обозначает долготу и широту правой верхней точки.

Если протянуть на карте прямоугольник между данными точками, то мы увидим, что в этом прямоугольнике размещается город Сочи.             Теперь давайте напишем функцию, которая будет принимать на вход наименование города и получать данные точки.

#Функция получает геопозицию города
def getGeoCode(address):   #Получаем геопозиции города
    global API
    url = 'https://geocode-maps.yandex.ru/1.x?geocode="'+address+'"&apikey='+API+'&format=json'
    resp = requests.get(url)
    resp = resp.json()['response']['GeoObjectCollection']['featureMember']
    if len(resp) > 0:
        return resp[0]['GeoObject']['boundedBy']['Envelope']
    else:
        print('NOT FOUND! --> ' + address)
        return '- -'

При вызове функции с параметром «Сочи» # getGeoCode(«Сочи»), мы получим массив с координатами:

{'lowerCorner': '39. 149676 43.395064', 'upperCorner': '40.010388 44.029938'}

И сравнив ее с адресной строкой мы увидим, что есть совпадения

sw=43.395064%2C39.149676&ne=44.029938%2C40.010388

Осталось написать функцию, которая будет делить наш большой прямоугольник на несколько маленьких таким образом, чтобы в поле поиска помещалось менее 2000 объявлений, и мы могли спарсить страницу простым путем.

#Функция принимает на вход координаты из функции getGeoCode
#и делит на сектора и возвращает массив из координат для создания ссылки
def parse_city(Corner):   #Делим город по секторам
    global step           #Шаг сетки
    current_num_sector=0  #Текущий сектор в обработке
    #LON от слова lontitude - долгота
    LON={'lower':float(Corner['lowerCorner'].split(' ')[0]),'upper':float(Corner['upperCorner'].split(' ')[0])}
    #LAT от слова latitude - широта
    LAT={'lower':float(Corner['lowerCorner'].split(' ')[1]),'upper':float(Corner['upperCorner'].split(' ')[1])}
    count_sector=math. ceil(((LON['upper']-LON['lower'])/step)+1)*math.ceil(((LAT['upper']-LAT['lower'])/step)+1)
                               
    print('Кол-во секторов:',count_sector)
    time.sleep(1)
    LON_current=LON['lower']
    LAT_current=LAT['lower']
    result={}
    while current_num_sector<=count_sector:
        result[current_num_sector]={
            'lower_LON':LON_current,
            'upper_LON':(LON_current+step),
            'lower_LAT':LAT_current,
            'upper_LAT':(LAT_current+step)
        }
        LON_current+=step
        current_num_sector+=1
        if LON_current>LON['upper']:
            LAT_current+=step
            LON_current=LON['lower']
#         if current_num_sector>9:
#             return result            
    return result

Данный подход позволил нам справиться с задачей по парсингу 100% объявлений сайта. Надеемся данный «лайфхак» поможет вам при сборе информации.

Ссылка на git-репозиторий

API поиска Яндекса

API поиска Яндекса
  • Авторизоваться
  • Панель пользователя
  • Связаться с отделом продаж
  • Подписаться

SERP API

Данные поиска Яндекса, доставляемые в режиме реального времени в масштабе

  • Получайте реальные результаты пользователей из любого места в формате HTML
  • Легко обрабатывает большие объемы запросов API
  • Бесплатная игровая площадка для создания и отработки поиска для зарегистрированных пользователей.
Начать бесплатную пробную версию

99,99% Время работы сети

млрд. Средних ежемесячных запросов

99,99%. уровень города)

  • Совместимость с несколькими устройствами
  • Поддерживается нумерация страниц
  • Как предприятия используют API поиска Яндекса

    Отслеживание рейтинга ключевых слов

    Отображение рейтинга компании по различным ключевым словам в разных местах

    Защита бренда

    Отслеживание лучших результатов по брендам и товарным знакам компаний

    Сравнение цен

    Поиск товаров на веб-сайтах интернет-магазинов и сравнение цен разных поставщиков

    Исследование рынка

    Сбор информации о компаниях, контактах, местоположении и т. д.

    Выявление нарушений авторских прав

    Обратный поиск изображений и обнаружение другого контента, защищенного авторскими правами

    Ad Intelligence

    Просмотр объявлений, которые показываются по ключевым словам в разных странах, включая (двойной щелчок и рекламные службы Google)

    Совместимость

    с несколькими устройствами

    стран, включая таргетинг на город

    Полная совместимость

    и запатентовано

    Что делает Yandex Search API 2 лучшим в отрасли

    049

    100% Точность Точность определения местоположения

    Получите точное представление о том, что видит реальный пользователь в 195 странах с точным таргетингом на города

    Результаты в режиме реального времени

    Получайте точные данные поисковой выдачи Яндекса в режиме реального времени

    Индивидуальная доставка данных

    Данные экспортируются в HTML или JSON

    Скорость

    Исключительное время отклика менее 5 секунд

    Вы

    Оплата в случае успеха

    будет платить только за успешные запросы

    Снижение затрат

    Экономия денег на инженерах по извлечению данных и ИТ-специалистах, не беспокоясь об обслуживании серверов

    Лучшее обслуживание клиентов в отрасли

    «Bright Data — это фантастика с точки зрения качества данных, а также скорости их сбора. Без Bright Data мы не смогли бы разрабатывать стратегию так же эффективно, как сегодня».

    Alessio CantoroCMO Immobiliare.it

    «Мы перепробовали множество различных платформ для сбора данных, но никто не предложил «полный пакет». Мне также очень понравилось, что Bright Data серьезно относится к этике, поскольку она соответствует ценностям нашей компании».

    Питер КлерборнПартнер-основатель, подробная информация онлайн

    «Благодаря партнерству с Bright Data мы, по сути, получаем готовую возможность собирать общедоступные веб-данные вместо создания собственной технической команды. Это позволяет нам сосредоточиться на том, что мы делаем лучше всего».

    Марк О’ХараОснователь, Thrift

    «Сборщик данных очень ценен, и Bright Data очень быстро реагирует на добавление функций в продукт».

    Эдан КролевичОснователь, ExactBuyer

    «Наши клиенты должны быть в курсе последних изменений цен… Data Collector предлагает нам гибкость для доступа к веб-данным по всему миру и динамизм для изменения наших параметров в соответствии с запросами наших клиентов».

    Дори ШтайнCEO, Fornova