Un outil pour surveiller les projets Kickstarter/Ulule

Comme au dessus, un gros merci pour ce logiciel fort pratique :slight_smile:

Argone dit :Comme au dessus, un gros merci pour ce logiciel fort pratique :)

Alors ça c'est vraiment pas cool, parce que j'ai entendu que ça a bippé, mais j'étais en jeu, donc impossible de pledger rapidement !

Encore une fois, content que ça puisse vous servir ! :)

Et encore un EB récupéré en 4 secondes, bande de coquins !

Il faut être rapide avec vous !

De mémoire, j’ai du rater 4 EB du 7th Continent pour 2 raisons, soit Battle.net avait lancé un téléchargement qui me bouffait la bande passante, sans que je le remarque, soit, et surtout ça, le fait devoir valider la connexion à mon compte sur KS qui me faisait perdre 2 secondes :smiley:

Yep: être préconnecté est indispensable !

Je viens de choper un EB 7th Continent grâce à toi ! angel
Merci beaucoup !

Je viens de relancer l’outil mais ça ne marche plus.
La version actuelle est bien la 1.5.1 ?

Salut,

Désolé pour ce problème de parse. Encore une fois, KS modifie régulièrement ses balises HTML, et sans API publique, je ne peux pas faire grand chose de plus. Désolé aussi de ne pas avoir tenu le programme à jour plus rapidement, je suis débordé, j’ai essayé de faire au plus vite !

Vous pouvez lancer la mise à jour auto, le patch est en ligne. Pour ceux qui n’arrivent pas à faire la maj, téléchargez le nouveau jar :
https://www.dropbox.com/s/yzwso6rgc9rb5rf/MoniteurKickstarter.jar?dl=0
Et remplacez votre version par 1.5.2 dans votre fichier currentVersion

Merci d’avoir signalé le problème en tout cas :slight_smile:

A plus tard

Helelo dit :Salut,

Désolé pour ce problème de parse. Encore une fois, KS modifie régulièrement ses balises HTML, et sans API publique, je ne peux pas faire grand chose de plus. Désolé aussi de ne pas avoir tenu le programme à jour plus rapidement, je suis débordé, j'ai essayé de faire au plus vite !

Vous pouvez lancer la mise à jour auto, le patch est en ligne. Pour ceux qui n'arrivent pas à faire la maj, téléchargez le nouveau jar :
https://www.dropbox.com/s/yzwso6rgc9rb5rf/MoniteurKickstarter.jar?dl=0
Et remplacez votre version par 1.5.2 dans votre fichier currentVersion

Merci d'avoir signalé le problème en tout cas :)

A plus tard

Tu utilises Xpath ou autre chose pour détecter les pledges ?

Helelo dit :Salut,

Désolé pour ce problème de parse. Encore une fois, KS modifie régulièrement ses balises HTML, et sans API publique, je ne peux pas faire grand chose de plus. Désolé aussi de ne pas avoir tenu le programme à jour plus rapidement, je suis débordé, j'ai essayé de faire au plus vite !

Vous pouvez lancer la mise à jour auto, le patch est en ligne. Pour ceux qui n'arrivent pas à faire la maj, téléchargez le nouveau jar :
https://www.dropbox.com/s/yzwso6rgc9rb5rf/MoniteurKickstarter.jar?dl=0
Et remplacez votre version par 1.5.2 dans votre fichier currentVersion

Merci d'avoir signalé le problème en tout cas :)

A plus tard

Tu n'as vraiment aucune raison d'être désolé. Tu fournis ce petit outil bien utile à la communauté, on ne va quand même pas considérer ça comme acquis ou -pire - dû.

Fais ça à ton rythme et on t'en remercie tous. 

Eolindel dit :
Helelo dit :Salut,

Désolé pour ce problème de parse. Encore une fois, KS modifie régulièrement ses balises HTML, et sans API publique, je ne peux pas faire grand chose de plus. Désolé aussi de ne pas avoir tenu le programme à jour plus rapidement, je suis débordé, j'ai essayé de faire au plus vite !

Vous pouvez lancer la mise à jour auto, le patch est en ligne. Pour ceux qui n'arrivent pas à faire la maj, téléchargez le nouveau jar :
https://www.dropbox.com/s/yzwso6rgc9rb5rf/MoniteurKickstarter.jar?dl=0
Et remplacez votre version par 1.5.2 dans votre fichier currentVersion

Merci d'avoir signalé le problème en tout cas :)

A plus tard

Tu utilises Xpath ou autre chose pour détecter les pledges ?

Salut,

J'utilise la biblio Jsoup qui est un parser HTML. Je ne vois pas comment je pourrais avoir une solution fiable et "universelle" pour pull les infos d'un pledge, même quand ils s'amusent à changer leur code tous les mois, sans API publique de leur part. Mais si tu t'y connais et que tu as une solution, je suis prêt à apprendre !
 

lerrianh dit :
Tu n'as vraiment aucune raison d'être désolé. Tu fournis ce petit outil bien utile à la communauté, on ne va quand même pas considérer ça comme acquis ou -pire - dû.

Fais ça à ton rythme et on t'en remercie tous. 
 

Je ne veux pas faire de la démagogie, mais si je m'engage à fournir un programme, je trouve ça normal d'être responsable de sa maintenance

En fait eolindel s’amuse aussi a parser les pages KS :) 

Perso pour avoir un peu parsé a une époque (FB) en gros la conclusion a été que on peut faire des trucs un poil intelligents qui vont détecter 50% des modifs, mais y’a toujours un moment ou ca montre ses limites…  :(

jmt-974 dit :En fait eolindel s'amuse aussi a parser les pages KS :) 

Perso pour avoir un peu parsé a une époque (FB) en gros la conclusion a été que on peut faire des trucs un poil intelligents qui vont détecter 50% des modifs, mais y'a toujours un moment ou ca montre ses limites..  :(

Tout à fait, le parse c'est super pratique, d'autant plus que le HTML est très simple à appréhender. Mais quand un site aussi gros que KS s'amuse à modifier ses balises tous les mois, sans proposer une API (ce que je trouve à la limite de la honte), il y a de quoi rager. Surtout que pour la modif d'hier, ils ont remplacé toutes les balises contenant "reward" par "pledge"...Wouhouuuuu

Merci Helelo pour la mise à jour.
Tu n’a pas a être désolé, c’est un programme que tu fournis à la communauté gratuitement. C’est déjà super bien.



Je poste à nouveau mes remerciements pour ce programme et me range du côté de ceux qui te disent que tu n’as pas à t’excuser.
Je dirais même que ce serait un comble : t’excuser de ne pas avoir mis à jour immédiatement un programme que tu fournis gratuitement et qui a déjà beaucoup rendu service à énormément de personnes.
Je trouve d’ailleurs ta rapidité à régler les problèmes pointés assez impressionnante, car tu n’as certainement pas que ça à faire.
Alors merci encore pour tout.

Helelo dit :
jmt-974 dit :En fait eolindel s'amuse aussi a parser les pages KS :) 

Perso pour avoir un peu parsé a une époque (FB) en gros la conclusion a été que on peut faire des trucs un poil intelligents qui vont détecter 50% des modifs, mais y'a toujours un moment ou ca montre ses limites..  :(

Tout à fait, le parse c'est super pratique, d'autant plus que le HTML est très simple à appréhender. Mais quand un site aussi gros que KS s'amuse à modifier ses balises tous les mois, sans proposer une API (ce que je trouve à la limite de la honte), il y a de quoi rager. Surtout que pour la modif d'hier, ils ont remplacé toutes les balises contenant "reward" par "pledge"...Wouhouuuuu

Je suis passé par Xpath et en étant paradoxalement codé en un peu plus dur, le changement a été transparent; voilà un morceau de code minimal si jamais tu es intéressé. (il me semble que ton programme tourne en java alors que moi c'est du python, mais ça ne change pas grand chose sur le principe)

#!/usr/bin/python
# -*- coding: utf-8 -*-
from collections import OrderedDict
import urllib
import urllib2

from lxml import html
import requests
import re

page = requests.get('la page PRINCIPALE du projet')
tree = html.fromstring(page.text)


##Distribution des pledges
sum_backer = 0
sum_pledge = 0.
#Xpath en action
for i in tree.xpath('/html/body/main/div[2]/div/div[3]/section[1]/div/div/div/div/div[2]/div[1]/div/ol/li'):
    backers = 0
    pledge = 0
    for j in i.xpath('div[2]/h2/text()'):
        m = re.search(r'(\d+)',j.strip(' ').replace(',',''))
        if m:
            pledge=float(m.group(0))    
    for j in i.xpath('div[2]/p[1]/text()'):
        m = re.search(r'(\d+)', j.replace(',',''))
        if m:
            backers=int(m.group(0))
            sum_backer += backers
    if pledge!=0:     
        project[12]['pledges'].append({pledge:backers})
        sum_pledge += pledge*backers


Pour l'API, je n'ai pas trouvé de moyen très simple d'avoir la distribution des pledges. Déjà en rajoutant /rewards on tombe sur une page réduite avec que ça.

et pour me connecter à l'API :
 

r= requests.post( url='https://api.kickstarter.com/xauth/access_token?client_id=2II5GGBZLOOZAA5XBU1U0Y44BU57Q58L8KOGM7H0E0YFHP3KTG', headers={'Content-Type' : 'application/json', 'Accept' : "application/json; charset=utf-8", 'User-Agent' : "GameKick"}, params={"password":"XXXXXXX","email":"truc@truc.net"})

le header a l'air important.

Pour la suite, c'est la page suivante qui m'a aidée :
http://syntaxi.net/2013/03/24/let-s-explore-kickstarter-s-api/

Merci pour ta réponse. En effet, j’étais déjà tombé sur cette page, mais quand j’ai vu le bordel sans nom que c’est, j’ai assez rapidement abandonné l’idée. Tant que l’API n’aura pas de syntaxe propre (du style project.getTotalBackers(), project.getPledge(1).isAmountLimited()) ou au moins une doc, je la trouverai imbuvable. :frowning:
Aussi, en effet ton code n’est pas affecté par un changement de nom de balise, mais si la structure du site en lui même change (ce qui a déjà été le cas), ton xpath ne renverra rien non plus, je me trompe ? Je ne m’y connais pas en XML, mais avec ta méthode xpath(), tu vas chercher précisément où tu sais où se situe l’information, non ? Si je me trompe, il serait temps que je me mette à étudier la question. :slight_smile:

Un EB chopé sur Arcadia Quest Inferno à l’instant (Merciiiiii)

Helelo dit :Merci pour ta réponse. En effet, j'étais déjà tombé sur cette page, mais quand j'ai vu le bordel sans nom que c'est, j'ai assez rapidement abandonné l'idée. Tant que l'API n'aura pas de syntaxe propre (du style project.getTotalBackers(), project.getPledge(1).isAmountLimited()) ou au moins une doc, je la trouverai imbuvable. :(
Aussi, en effet ton code n'est pas affecté par un changement de nom de balise, mais si la structure du site en lui même change (ce qui a déjà été le cas), ton xpath ne renverra rien non plus, je me trompe ? Je ne m'y connais pas en XML, mais avec ta méthode xpath(), tu vas chercher précisément où tu sais où se situe l'information, non ? Si je me trompe, il serait temps que je me mette à étudier la question. :)

C'est clair que sans documentation, c'est chiant. Mais bon, faute de grives... on mange du merle. En particulier pour les pledge où la page reward  est en générale assez grosse car il y a toutes les options de pays pour la distribution. Du coup, sans API, c'est rapidement 100 à 200 Ko de chargement là ou les données intéressantes (montant, nombre de backer, si c'est capé ou non) ne feraient que 2 à 3 Ko max via une API. Ce qui fait que je n'ai pas vu comment récupérer simplement la distribution des pledges.


Idem, pour charger tous les projets dans une catégorie, sans passer par l'API, je ne vois pas comment on peut faire alors qu'avec, c'est faisable de manière raisonnable.

Pour le Xpath, ici, oui, mais en fonction, ça peut être plus ou moins robuste par exemple, je récupère la durée via ce code :

project[15]['duration'] = float(tree.xpath('//@data-duration')[0])

Qui.. est dépendant du nom de la balise. Donc si j'avais utilisé le nom "reward" pour les pledge, j'aurais eu les même problèmes que toi. C'est plus qu'on peut s'en servir autant comme sélecteur que pour suivre l'arbre DOM. Du coup c'est assez puissant.

Mais pour certaines balises, je pense qu'ils doivent moins changer pour éviter que la maintenance de leur bouzin ne soit trop complexe. De toute façon, c'est toujours pareil : avec du crawl, tu es sensible au moindre changement de structure alors qu'avec une API ce serait carrément plus robuste.

Juste un mot pour remercier Helelo, grâce à qui j’ai pu récupérer un EB sur Arcadia Quest: Inferno. Cela fait toujours plaisir.