seenthis / seenthis_squelettes

plugin "squelettes" de seenthis
11 stars 6 forks source link

[Question] Comment transvaser au mieux des étoilages sur un nouveau compte ? #185

Closed rastapopougros closed 6 years ago

rastapopougros commented 7 years ago

Auriez-vous des conseils pour transvaser certains seens en tant qu'étoilage (pas les contenus eux-mêmes) dans un nouveau compte, suivant des tags précis ?

Concrètement voilà le cas d'utilisation :

Fil commented 7 years ago

Si tu peux écrire la requête sphinx correspondante et récupérer les identifiants des messages, les étoiler est facile après (avec l'API).

Ton id_auteur est 69, et l'auteur est toujours le premier cité dans properties.share.

Donc :

select properties.id_objet,
   IN(properties.share, 69) AS f1,
   IN(properties.tags, '#web') AS f2
from seenthis
  where f1=1 and f2=1;
+---------------------+------+------+
| properties.id_objet | f1   | f2   |
+---------------------+------+------+
| 14340               |    1 |    1 |
| 14389               |    1 |    1 |
…

(Pour les tags #ergoXXX avec les sous-variantes il faut que tu ailles piocher la liste dans la page seenthis/tag/ergo, car sphinx ne permet pas de LIKE dans les properties.tags).

Une fois la requête bien calée tu peux lui envoyer LIMIT 0, 1000 (c'est le maximum, après il faut paginer).

rastapopougros commented 7 years ago

Ça fait un paquet de ligne… c'est chiant de pas pouvoir donner un tableau pour dire "au moins un tag dans cette liste doit être trouvé dans le tableau json properties.tags".

Par contre je n'ai pas de compte sur le serveur (ou ma clé SSH dessus quoi) il me semble, donc je peux pas tester, ni "récupérer les identifiants".

Pour être sûr aussi : properties.tags contient bien les tags aussi ajoutés dans les commentaires par d'autres personnes ensuite ?

Ah et aussi : est-ce que dans le sphinx, tout ce qui est properties.tags a été mis en minuscule avant ? Et donc il faut bien que je fasse tous mes IN en minuscule ? Ou bien il faut aussi s'amuser à faire toutes les versions ?

select properties.id_objet,
   IN(properties.share, 69) AS f1,
   IN(properties.tags, '#web') AS f2
   IN(properties.tags, '#html') AS f3
   IN(properties.tags, '#css') AS f4
   IN(properties.tags, '#ergonomie') AS f5
   IN(properties.tags, '#accessibilité') AS f6
   IN(properties.tags, '#intégration') AS f7
   IN(properties.tags, '#webperf') AS f8
   IN(properties.tags, '#ergo') AS f9
   IN(properties.tags, '#ux') AS f10
   IN(properties.tags, '#interface') AS f11
   IN(properties.tags, '#ui') AS f12
   IN(properties.tags, '#graphisme') AS f13
   IN(properties.tags, '#design') AS f14
   IN(properties.tags, '#typo') AS f15
   IN(properties.tags, '#typographie') AS f16
   IN(properties.tags, '#font') AS f17
   IN(properties.tags, '#fonte') AS f18
   IN(properties.tags, '#fontes') AS f19
   IN(properties.tags, '#fonts') AS f20
   IN(properties.tags, '#javascript') AS f21
   IN(properties.tags, '#js') AS f22
from seenthis
where f1=1 and (f2=1 or f3=1 or f4=1 or f5=1 or f6=1 or f7=1 or f8=1 or f9=1 or f10=1 or f11=1 or f12=1 or f13=1 or f14=1 or f15=1 or f16=1 or f17=1 or f18=1 or f19=1 or f20=1 or f21=1 or f22=1);
Fil commented 7 years ago

Ah je sais plus comment précisément, mais je crois bien que j'avais testé. Il me semble que c'est dans la configuration de sphinx que sont unifiées les majuscules/minuscules et les lettres accentuées.

rastapopougros commented 6 years ago

Bon comme dit précédemment, il reste cette question :

Par contre je n'ai pas de compte sur le serveur (ou ma clé SSH dessus quoi) il me semble, donc je peux pas tester, ni "récupérer les identifiants".

Du coup je vois avec qui, je fais comment pour récupérer cette liste d'identifiants de seens ?

Fil commented 6 years ago

Il faudrait que tu aies l'accès non ?

rastapopougros commented 6 years ago

Bé soit oui, soit que quelqu'un fasse cette requête à ma place :)

Fil commented 6 years ago

Un squelette du coup ?

Là si je passe la requête (convenablement modifiée) :

select properties.id_objet,
   IN(properties.share, 69) AS f1,
   IN(properties.tags, '#web') +
   IN(properties.tags, '#html') +
   IN(properties.tags, '#css') +
   IN(properties.tags, '#ergonomie') +
   IN(properties.tags, '#accessibilité') +
   IN(properties.tags, '#intégration') +
   IN(properties.tags, '#webperf') +
   IN(properties.tags, '#ergo') +
   IN(properties.tags, '#ux') +
   IN(properties.tags, '#interface') +
   IN(properties.tags, '#ui') +
   IN(properties.tags, '#graphisme') +
   IN(properties.tags, '#design') +
   IN(properties.tags, '#typo') +
   IN(properties.tags, '#typographie') +
   IN(properties.tags, '#font') +
   IN(properties.tags, '#fonte') +
   IN(properties.tags, '#fontes') +
   IN(properties.tags, '#fonts') +
   IN(properties.tags, '#javascript') +
   IN(properties.tags, '#js') AS f2 from seenthis where f1=1 and f2 > 0 and properties.published=1
   LIMIT 0,1000;

J'obtiens 413 identifiants.

rastapopougros commented 6 years ago

Super, merci !

Maintenant deux dernières choses je crois : 1) Comment on fait avec l'API pour juste étoiler des identifiants existants connus ? On ne voit pas ça dans la doc de l'API, alors comment faire ça en masse ?

2) Est-ce que tu peux changer l'identifiant du compte "les_developpements" en "ldd" ?

Fil commented 6 years ago
  1. pas besoin de l'api, tu peux envoyer curl sur le "clic", c'est une action très simple et idempotente donc pas de problème si tu la rejoues plusieurs fois (c'est pas les mêmes paramètres qui ajoutent et qui suppriment l'étoile)

  2. done

rastapopougros commented 6 years ago

Super.

Pour le 1 je comprends le principe, on fait une boucle qui lance curl sur une URL d'action. Mais euh, clic sur quoi du coup ? Parce que dans Seenthis, quand je passe ma souris sur le bouton d'étoile, et bien… ce n'est ni un formulaire, ni un lien, mais juste une ancre vide avec # (c'est mal, uniquement en JS !). Du coup c'est quoi l'URL de l'action, avec l'id en param ?

Fil commented 6 years ago

Je suis sûr que si tu regardes dans la console onglet "Réseau" tu vas trouver :) Sinon: https://github.com/seenthis/seenthis_squelettes/blob/master/javascript/seenthis/seenthis.js#L63

Zuske commented 6 years ago

Dites les gens... Je me rends compte que je l'exprime vraiment trop peu...

MERCIIIIIII !

Suske

Le 16 novembre 2017 20:32:03 GMT+01:00, "Philippe Rivière" notifications@github.com a écrit :

Je suis sûr que si tu regardes dans la console onglet "Réseau" tu vas trouver :) Sinon: https://github.com/seenthis/seenthis_squelettes/blob/master/javascript/seenthis/seenthis.js#L63

-- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/seenthis/seenthis_squelettes/issues/185#issuecomment-345037191

-- Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté.

rastapopougros commented 6 years ago

Alors à priori l'adresse serait curl -u login:pass --silent "https://seenthis.net/index.php?action=favori&id_me=XXX&share=1&x=1510924837" > /dev/null

MAIS quelque soit la requête que je fais avec Curl sur seenthis avec l'auth basic (-u), ça renvoie une erreur serveur 503.

Si je fais une requête sans identification là ça charge la page.

rastapopougros commented 6 years ago

Bon bah il fallait changer de user-agent en mode authentifié ! Bizarre car en anonyme Seenthis ne rejette pas du tout Curl, seulement quand on est connecté alors justement c'est là on on est connu donc moins dangereux. Bref du coup tout a fonctionné et j'ai tout importé. Merci à tout le monde !