2016-03-19 11 views
5

Sto cercando di integrare Media blogging in un'app mostrando alcune schede con immagini di post e collegamenti alla pubblicazione originale di Medium.Come recuperare storie medie per un utente dall'API?

Da documenti API medi posso vedere come recuperare pubblicazioni e creare post, ma non menziona il recupero di post. Il recupero di post/storie per un utente è attualmente possibile utilizzando l'API di Medium?

+2

non sembra possibile per ora. Apparentemente puoi solo elencare pubblicazioni e aggiungere un post a una pubblicazione. (ma non puoi nemmeno cambiare un post dopo averlo creato e l'endpoint POST non restituisce un'intestazione Location con l'url al post appena creato.) – njzk2

risposta

13

L'API è di sola scrittura e non è destinato a recuperare i messaggi (personale Media mi ha detto)

Si può semplicemente utilizzare il feed RSS in quanto tale:

https://medium.com/feed/@your_profile 

Si può semplicemente ottenere il RSS feed via GET, quindi se ne hai bisogno in formato JSON basta usare un modulo NPM come rss-to-json e sei a posto.

+1

Ho creato un wrapper microservice per il pacchetto rss-to-json che Antonio ha menzionato sopra che rende anche facile tira giù quei dati: https: // clay.eseguire/servizi/nicoslepicos/rss-to-JSON. Se si volesse parametrizzarlo in modo che l'endpoint tiri sempre verso il basso un feed specifico, forzi questo endpoint con 'clay fork nicoslepicos/rss-to-json' e poi inserisci il feed hardcoded che vuoi che ritorni sempre. In alternativa, c'è questo altro microservizio: https://clay.run/services/nicoslepicos/medium-get-users-posts, che utilizza specificamente il feed RSS medio. – nicoslepicos

+0

È possibile ottenere storie in prima pagina di media con RSS o qualcosa del genere? –

3

Con tale metodo REST si farebbe questo: GET https://api.medium.com/v1/users/{{userId}}/publications e questo restituirebbe il titolo, l'immagine e l'URL dell'elemento. Ulteriori dettagli: https://github.com/Medium/medium-api-docs#32-publications.

È inoltre possibile aggiungere "? Format = json" alla fine di qualsiasi URL in Medio e ottenere di nuovo i dati utili.

+0

è difficile ma quando dicono "pubblicazioni" non significano "post dell'utente". Come dice Antonio, l'unico modo per accedere ai post degli utenti è tramite RSS. [Vedere questo problema] (https://github.com/Medium/medium-api-docs/issues/51) – damko

1

Ho creato una funzione di base utilizzando AWS Lambda e AWS API Gateway se qualcuno è interessato. Una spiegazione dettagliata si trova su this blog post here e il repository per la funzione Lambda realizzata con Node.js si trova qui su Github. Spero che qualcuno qui lo trovi utile.

+0

Avvolto che AWS Lambda hai creato in un microservizio di Clay. Inoltre, a titolo di heads up ho provato a mandarti una mail per dirti qualcosa ma sembra che l'email sul tuo sito sia rimbalzata :) – nicoslepicos

4

controllare questo si otterrà tutte le informazioni circa il proprio messaggio ........

mediumController.getBlogs = (req, res) => { 
    parser('https://medium.com/feed/@profileName', function (err, rss) { 
     if (err) { 
      console.log(err); 
     } 

     var stories = []; 

     for (var i = rss.length - 1; i >= 0; i--) { 

      var new_story = {}; 

      new_story.title = rss[i].title; 
      new_story.description = rss[i].description; 
      new_story.date = rss[i].date; 
      new_story.link = rss[i].link; 
      new_story.author = rss[i].author; 
      new_story.comments = rss[i].comments; 

      stories.push(new_story); 
     } 
     console.log('stories:'); 
     console.dir(stories); 
     res.json(200, { 
      Data: stories 
     }) 
    }); 

} 
1

(Aggiornamento del JS violino e la funzione di Clay che spiega come abbiamo aggiornato la funzione sintassi per essere più pulita)

ho avvolto il Github pacchetto @ mark-Fasel è stata ricordare di seguito in un Microservice argilla che consente di fare esattamente questo:

semplificata Formato di ritorno: https://www.clay.run/services/nicoslepicos/medium-get-user-posts-new/code

Ho messo insieme un po 'di violino, dal momento che un utente chiedeva come utilizzare l'endpoint in HTML per ottenere i titoli per i loro ultimi 3 messaggi: https://jsfiddle.net/h405m3ma/3/

È possibile chiamare l'API come:

curl -i -H "Content-Type: application/json" -X POST -d '{"username":"nicolaerusan"}' https://clay.run/services/nicoslepicos/medium-get-users-posts-simple 

è inoltre possibile utilizzare facilmente nel codice nodo utilizzando il pacchetto NPM argilla-client e solo scrivere:

Clay.run('nicoslepicos/medium-get-user-posts-new', {"profile":"profileValue"}) 
.then((result) => { 

    // Do what you want with returned result 
    console.log(result); 

}) 
.catch((error) => { 

    console.log(error); 

}); 

Speranza che è utile!

Problemi correlati