Contacter les créateurs d'apps mobile

Bonjour à tous,

Je recherche des moyens pour entrer en contact avec des porteurs de projets app dispos sur les différents Store mais qui n’ont pas réussi à décoller.

J’aimerais discuter avec eux de différents stratégies qui pourraient les aider.

Avez-vous des suggestions ?

Dans chaque apps IOS ou Play Store en bas tu as une adresse mail contact pour parler avec eux ou il faut allez dans « A Propos » tu as une adresse mail également (cf capture). Un script python avec un scraping lorsque sur la page il voit « @ » sur toutes les apps que tu souhaites c’est assez simple à faire.

Hello,

Je conseille d’utiliser GitHub - facundoolano/google-play-scraper: Node.js scraper to get data from Google Play

J’ai un petit programme qui se base sur de la review et des mots clés pour trouver des apps avec peu d’avis. Cela pourra servir de base si besoin d’aller sur d’autres typologies de scrap

Exemple :

import gplay from 'google-play-scraper';
import fs from 'fs';
import readline from 'readline';

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

rl.question('Entrez jusqu\'à 10 mots clés (séparés par des virgules) : ', keywordsInput => {
  rl.question('Entrez le nombre maximal de reviews : ', maxReviewsInput => {
    rl.close();

    const keywords = keywordsInput.split(',').map(keyword => keyword.trim()).filter(keyword => keyword !== '');
    const maxReviews = parseInt(maxReviewsInput);

    if (keywords.length === 0) {
      console.log('Aucun mot clé saisi. Le processus se termine.');
      process.exit(0);
    }

    const optionsRecherche = {
      num: 250,
      country: 'fr',
      lang: 'fr',
      fullDetail: true
    };

    const results = [];
    let totalRequests = 0;
    let completedRequests = 0;

    function generateKeywordCombinations(keywordList) {
      const combinations = [];

      for (let i = 1; i <= keywordList.length; i++) {
        const currentCombinations = generateCombinations(keywordList, i);
        combinations.push(...currentCombinations);
      }

      return combinations;
    }

    function generateCombinations(arr, length) {
      const combinations = [];

      function generate(current, start) {
        if (current.length === length) {
          combinations.push(current.join(' '));
          return;
        }

        for (let i = start; i < arr.length; i++) {
          current.push(arr[i]);
          generate(current.slice(), i + 1);
          current.pop();
        }
      }

      generate([], 0);
      return combinations;
    }

    const keywordCombinations = generateKeywordCombinations(keywords);

    const startTime = Date.now();

    keywordCombinations.forEach(combination => {
      const optionsCombination = { ...optionsRecherche, term: combination };

      totalRequests++;

      gplay.search(optionsCombination)
        .then(apps => {
          apps.forEach(app => {
            if (app.reviews < maxReviews) {
              results.push({
                title: app.title,
                reviews: app.reviews,
                installs: app.installs,
                developer: app.developer,
                developerWebsite: app.developerWebsite,
                developerEmail: app.developerEmail,
                storeUrl: app.url
              });
            }
          });
          completedRequests++;
          console.log(`Terminé la recherche sur '${combination}'.`);
          checkCompletion();
        })
        .catch(error => {
          console.error(`Une erreur s'est produite lors de la recherche sur le terme '${combination}':`, error);
          completedRequests++;
          checkCompletion();
        });
    });

    function checkCompletion() {
      if (completedRequests === totalRequests) {
        const csvData = results.map(result => {
          return `${result.title},${result.reviews},${result.installs},${result.developer},${result.developerWebsite},${result.developerEmail},${result.storeUrl}`;
        });

        const csvContent = 'Titre,Avis,Installations,Développeur,Site Web du développeur,E-mail du développeur,Lien vers le Store\n' + csvData.join('\n');

        const endTime = Date.now();
        const executionTime = (endTime - startTime) / 1000;

        fs.writeFileSync('resultats_apps_personnalises.csv', csvContent);

        console.log('Résultats enregistrés dans le fichier CSV.');
        console.log(`Temps d'exécution estimé : ${executionTime} secondes`);
      }
    }
  });
});

Bon courage vaste sujet!