Forum de poèmes. Postez vos poèmes, vos commentaires... Bienvenue à tous les poètes ! Index du Forum
Forum de poèmes. Postez vos poèmes, vos commentaires... Bienvenue à tous les poètes !
Forum de poèmes où tout le monde peut poster ses poèmes, mettre son avis sur les poèmes des autres et participer aux discussions !
 
Forum de poèmes. Postez vos poèmes, vos commentaires... Bienvenue à tous les poètes ! Index du ForumFAQRechercherS’enregistrerConnexion

:: Archives : besoin de volontaire ::

 
Poster un nouveau sujet   Répondre au sujet    Forum de poèmes. Postez vos poèmes, vos commentaires... Bienvenue à tous les poètes ! Index du Forum -> Discussions, et Distractions. -> Boîte à idées
Sujet précédent :: Sujet suivant  
Auteur Message
Synoon
Bon petit Poète.

Hors ligne

Inscrit le: 15 Sep 2017
Messages: 248
Localisation: Belgique
Masculin

MessagePosté le: Sam 17 Fév - 20:15 (2018)    Sujet du message: Archives : besoin de volontaire Répondre en citant

Bonsoir à tous !

Ca fait déjà quelques semaines que je ne lis plus les poèmes postés ici, et je compte quitter ce forum définitivement dès que je saurai les archives entre de bonnes mains. (entre autres, parce que j'ai trouvé un forum qui me correspond plus, oniris)
Du coup, il faudrait quelqu'un qui sait comment faire tourner un programme java, pour pouvoir mettre à jour les archives de temps en temps :smile:.
Je mets ci-dessous le code que j'utilise.
Pour l'utiliser, il suffit de le faire tourner (mais il faut avoir de quoi le faire tourner, pour ça), et ça crée des fichiers .txt dans un dossier "output" dont il suffit de copier coller le contenu sur ce forum :smile:.
Je vais sans doute modifier encore un peu ce code pour prendre en compte les "textes libres" et "acrostiches".
Est-ce qu'un d'entre vous sait faire tourner un code java et a un petit peu de temps à y consacrer (il faut faire une grosse trentaine de copier coller en tout pour une MàJ) ?
Bien sûr, si vous avez des questions, je peux y répondre :smile:.

Code:
// é â etc dans "'" plutôt que e, a etc.
// [maknock(16)] => ] for hide... :'(

import java.io.*;
import java.util.*;
import java.lang.*;
import java.net.*;
import java.util.concurrent.TimeUnit;

public class Poesie
{
    static final String title = "<td class=\"row1\" width=\"100%\"><span class=\"topictitle\">";
    static final String author = "<td class=\"row3\" align=\"center\" valign=\"middle\"><span class=\"name\">";
   
    static final String siteURL = "http://poeteenherbe.discuforum.info";
    static final String URLamour = siteURL+"/f4-Vos-poemes-d-amour.htm?start=";
    static final String URLtriste = siteURL+"/f5-Vos-poemes-tristes.htm?start=";
    static final String URLdivers = siteURL+"/f6-Vos-poemes-Divers.htm?start=";
    static final String URLmulti = siteURL+"/f8-Poemes-a-plusieurs.htm?start=";
   
    static final boolean RETAKE = true;
   
    static TreeMap<String, Integer> colorType;
   
   
    static PrintWriter out;
   
    static class Poem{
        static final String []types = {"amour", "triste", "divers", "à plusieurs"};
       
        String title;
        String author;
        String address;
       
        static final int AMOUR = 0, TRISTE = 1, DIVERS = 2, MULTI = 3;
        int type;
        Poem(String t, String a, String ad, int c){
            title=t;
            author=a;
            address=ad;
            type=c;
        }
    }
   
    static class Author implements Comparable<Author>{
        static final String[] groupname = {"Merveilleux Poète","Poète","Bon petit Poète", "Poète en herbe", "Nouveau Poète", "Autre"};
        String name;
        int color, firstLetter;
        ArrayList<Poem> poes;
        static int compar = 0;
        static final int COLOR=0, ALPHABET=1;
        static final int MERV=0, POET = 1, BPP = 2, PEH = 3, NP = 4, AU = 5;
       
        Author(String n, int c){
            name=n;
            color=c;
            firstLetter = n.toLowerCase().charAt(0)<'a' || n.toLowerCase().charAt(0)>'z' ? 0 : n.toLowerCase().charAt(0)-'a'+1;
            poes = new ArrayList<>();
        }
       
        public int compareTo(Author that){
            if (compar==COLOR){
                if (this.color == that.color) return that.poes.size()-this.poes.size();
                return this.color-that.color;
            } else if (compar==ALPHABET){
                if (this.firstLetter == that.firstLetter) return this.name.toLowerCase().compareTo(that.name.toLowerCase());
                else return this.firstLetter - that.firstLetter;
            }
            return 0;
        }
    }
   
    static ArrayList<String> titles, urls, authors;
    static ArrayList<Integer> colors;
    static ArrayList<Poem> all;
    static TreeMap<String, Author> auts;
   
    private static void init() throws IOException {
        all = new ArrayList<>();
        auts = new TreeMap<>();
       
        colorType = new TreeMap<>();
        colorType.put("DE0500",Author.POET);
        colorType.put("15BBE9",Author.BPP);
        colorType.put("4822DC",Author.PEH);
        colorType.put("A058A6",Author.NP);
        colorType.put("FABA04",Author.MERV);
        colorType.put("006600",Author.MERV);
        colorType.put("D3FA04",Author.MERV);
       
        File inputDir = new File("source");
        if (!inputDir.exists()) {
            try{
                inputDir.mkdir();
            }
            catch(SecurityException se){
                System.out.println("error. Please create a directory \"source\" in the project directory.");
            }
        }
       
        File outputDir = new File("output");
        if (!outputDir.exists()) {
            try{
                outputDir.mkdir();
            }
            catch(SecurityException se){
                System.out.println("error. Please create a directory \"output\" in the project directory.");
            }
        }

    }
   
    public static void main(String[] args){
        try{
            init();
           
            int i = 0;
            System.out.println("AMOUR");
            while  (getPoems(URLamour+i,Poem.AMOUR)==50){i+=50; System.out.println(i);}
            i=0;
            System.out.println("TRISTE");
            while  (getPoems(URLtriste+i,Poem.TRISTE)==50){i+=50; System.out.println(i);}
            i=0;
            System.out.println("DIVERS");
            while  (getPoems(URLdivers+i,Poem.DIVERS)==50){i+=50; System.out.println(i);}
            i=0;
            System.out.println("MULTI");
            while  (getPoems(URLmulti+i,Poem.MULTI)==50){i+=50; System.out.println(i);}
            System.out.println("END");
           
            printPoemsByLetter();
            printPoemsByTitle();
        } catch (IOException|InterruptedException e){e.printStackTrace();}
    }
   
    private static void printPoemsByLetter() throws IOException{
        Author []newauts = auts.values().toArray(new Author[]{});
        Author.compar = Author.ALPHABET;
        Arrays.sort(newauts);
        int []quant = new int[27];
        int []cumul = new int[27];
        for (Author au : newauts) {quant[au.firstLetter]++;}
        cumul[0]=quant[0]; for (int i=1; i<27; i++){cumul[i]=cumul[i-1]+quant[i];}
       
        int j=0, k=0;
        for (int i=0; i<27; i++){
            if (i%1==0)
                out = new PrintWriter(new FileWriter("output/output_letter_"+k+"_"+(char) ('a'+i-1)+".txt"));
            out.print("[b]");
            out.print("[hide="+(char) ('A'-1+i)+" ("+Math.min(quant[i],500)+")][list]");
            int count = 0;
            int countPoems = 0;
            for (; j<cumul[i];j++){
                countPoems += newauts[j].poes.size();
                printPoet(newauts[j]);
                count++;
                if (count%500==0){
                    out.print("[/list][/hide]");
                    out.print("[/b]");
                    out.close();
                    k++;
                    out = new PrintWriter(new FileWriter("output/output_letter_"+k+".txt"));
                    out.print("[b]");
                    out.print("[hide="+Author.groupname[i]+" ("+Math.min(quant[i]-count,500)+")][list]");
                }
            }
            out.print("[/list][/hide]");
            out.print("[/b]");
            if ((i+1)%1==0) {out.close(); k++;}
            //System.out.println((char) ('a'-1+i) + " : " + countPoems + " poems for "+quant[i]+" poets.");
        }
    }
   
    private static void printPoemsByTitle() throws IOException{
        Author []newauts = auts.values().toArray(new Author[]{});
        Author.compar = Author.COLOR;
        Arrays.sort(newauts);
        int []quant = new int[6];
        int []cumul = new int[6];
        for (Author au : newauts) {quant[au.color]++;}
        cumul[0]=quant[0]; for (int i=1; i<6; i++){cumul[i]=cumul[i-1]+quant[i];}
       
       
        int j=0, k=0;
        for (int i=0; i<6; i++){
            out = new PrintWriter(new FileWriter("output/output_title_"+k+".txt"));
            out.print("[b]");
            out.print("[hide="+Author.groupname[i]+" ("+Math.min(quant[i],500)+")][list]");
            int count = 0;
            for (; j<cumul[i];j++){
                printPoet(newauts[j]);
                count++;
                if (count%500==0){
                    out.print("[/list][/hide]");
                    out.print("[/b]");
                    out.close();
                    k++;
                    out = new PrintWriter(new FileWriter("output/output_title_"+k+".txt"));
                    out.print("[b]");
                    out.print("[hide="+Author.groupname[i]+" ("+Math.min(quant[i]-count,500)+")][list]");
                }
            }
            out.print("[/list][/hide]");
            out.print("[/b]");
            out.close();
            k++;
        }
    }
   
    private static void printPoet(Author a){
        out.print("[hide="+a.name+" ("+a.poes.size()+")][list]");
        int []quanttype = new int[4];
        for (Poem p : a.poes) {quanttype[p.type]++;}
        int []cumul = new int[4]; cumul[0]=quanttype[0]; for (int i=1; i<4; i++) {cumul[i]=cumul[i-1]+quanttype[i];}
       
        int j=0;
        for (int i=0; i<4; i++){
            if (quanttype[i]>0){
                out.print("[hide="+Poem.types[i]+" ("+quanttype[i]+")][list]");
                for (;j<cumul[i]; j++){
                    if ((i==0 && j!=0) || (i>0 && j!=cumul[i-1])) out.println();
                    out.print("■ [url=http://+a.poes.get(j).address+]"+a.poes.get(j).title+"[/url]");
                }
                out.print("[/list][/hide]");
            }
        }
       
        out.print("[/list][/hide]");
    }
   
    private static int getPoems(String url, int type) throws IOException, InterruptedException {
        titles = new ArrayList<>();
        urls = new ArrayList<>();
        authors = new ArrayList<>();
        colors = new ArrayList<>();
        String fileTo = "source/"+url.replaceAll("[\\:\\.\\/\\?\\=\\-]","")+".txt";
       
        PrintWriter out = null;
        BufferedReader in;
        if (RETAKE){
            out = new PrintWriter(new FileWriter(fileTo));
            TimeUnit.SECONDS.sleep(1);
            URL yahoo = new URL(url);
            URLConnection yc = yahoo.openConnection();
            in = new BufferedReader(new InputStreamReader(yc.getInputStream(), "UTF-8"));
        } else {
            in = new BufferedReader(new InputStreamReader(new FileInputStream(fileTo), "UTF-8"));
        }
        String inputLine;
        int a = 0;
        boolean tit = true;
        while ((inputLine = in.readLine()) != null){
            if (RETAKE) out.println(inputLine);
            if(inputLine.length()>title.length() && title.equals(inputLine.substring(0,title.length()))) {
                inputLine = inputLine.split(title)[1];
                urls.add(inputLine.split("\"")[1]);
                titles.add(decode(inputLine.split("\">")[1].split("<")[0]));
                if (tit) tit = false;
                else System.out.println("missed author");
            }
            else if (inputLine.length()>author.length() && author.equals(inputLine.substring(0,author.length())))
            {
                String []temppp = inputLine.split("</span></td>")[0].split("[/url]")[0].split(">");
                authors.add(decode(temppp[temppp.length-1]));
                if (!tit) tit = true;
                else System.out.println("missed title");
                if (inputLine.contains("[/url]")){
                    String col = inputLine.split("color:#")[1].substring(0,6);
                    if (colorType.get(col) != null) colors.add(colorType.get(col));
                    else colors.add(Author.AU);
                } else {
                    colors.add(Author.AU);
                }
                a++;
            }
        }
        in.close();
        if (out!=null) out.close();
       
        for (int i=0; i< titles.size(); i++){
            Poem current = new Poem(titles.get(i), authors.get(i), siteURL+"/"+urls.get(i), type);
            all.add(current);
            if (!auts.containsKey(authors.get(i))) auts.put(authors.get(i), new Author(authors.get(i), colors.get(i)));
            Author temp = auts.get(authors.get(i));
            temp.poes.add(current);
        }

        return a;
    }
   
    public static String decode(String in){
        StringBuilder out = new StringBuilder();
        for (int i=0; i<in.length(); i++){
            if (in.charAt(i)=='&'){
                if (i+4 <= in.length() && in.substring(i,i+4).equals("&lt;")){out.append("<"); i+=3;}
                else if (i+4 <= in.length() && in.substring(i,i+4).equals("&gt;")){out.append(">"); i+=3;}
                else if (i+6 <= in.length() && in.substring(i,i+6).equals("&quot;")){out.append("\""); i+=5;}
                else if (i+5 <= in.length() && in.substring(i,i+5).equals("&amp;")){out.append("&"); i+=4;}
                else {System.out.println("New caracter to be encoded : \""+in.substring(i).split(";")[0]+";\" in "+in); System.exit(0);}
            }
            else out.append(in.charAt(i));
        }
        return out.toString();
    }
}

>>--------> <--------<<
Revenir en haut
Publicité






MessagePosté le: Sam 17 Fév - 20:15 (2018)    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
Synoon
Bon petit Poète.

Hors ligne

Inscrit le: 15 Sep 2017
Messages: 248
Localisation: Belgique
Masculin

MessagePosté le: Ven 9 Mar - 11:50 (2018)    Sujet du message: Archives : besoin de volontaire Répondre en citant

Et si on oublie le côté programmation, il y a quelqu'un qui aurait le temps de passer 10 minutes tous les mois à mettre à jour les archives ?... (faire une trentaine de copier coller, je mettrai les fichiers à copier coller sur un google drive)
>>--------> <--------<<
Revenir en haut
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 19:47 (2018)    Sujet du message: Archives : besoin de volontaire

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Forum de poèmes. Postez vos poèmes, vos commentaires... Bienvenue à tous les poètes ! Index du Forum -> Discussions, et Distractions. -> Boîte à idées Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  

Index | Panneau d’administration | forum gratuit | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Flowers of Evil © theme by larme d'ange 2006
Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com