Epguides : sorties des séries

Soyez le premier à donner votre avis sur cette source.

Vue 11 116 fois - Téléchargée 85 fois

Description

Cet utilitaire est principalement destiné aux fans des séries (Prison Break, Heroes, Lost, Gossip Girl, ...)
Il permet de connaître très rapidement et très simplement les dates de sorties des prochains épisodes ou de consulter toutes les dates de sortie en donnant le nom de l'épisode et le n° correspondant.

Je ne me suis pas foulé sur l'interface graphique ... j'ai simplement utilisé les fonctions "menu" de base fournies avec mIRC. Cela me permet entre autres de n'avoir qu'un fichier (plutôt que d'utiliser mon GUI)

Pour l'installation, collez simplement ce code ou charger le dans vos remotes : alt + r, file, new (si c/c) / load (si téléchargé)

Une fois installé, tapez /epguides si rien ne s'est produit.

En ce qui concerne l'ajout de séries, le code essayera de "formatter" le nom de votre série afin que l'URL demandée soit valide.
Par exemple :
prison break sera transformé en PrisonBreak
gossip girl en GossipGirl
knight rider (2008) en KnightRider_2008

pour tout problème de lien, allez sur le site epguides.com et essayez de voir lequel est utilisé

Autres particularités :
- ajouts illimités
- suppression simple
- possibilité de vérifier automatiquement au lancement de mIRC si des épisodes sont sortis la veille ou sortent aujourd'hui
- détail concernant une série en cliquant sur son nom depuis le menu, Séries

Source / Exemple :


;****************
;    EpGuides
;   By ArKanis
; www.arkanis.eu
;****************

;version 1.2

on *:start:.epguides check

alias -l epguides.aide {
  epguides.disp $chr(3)
  epguides.disp * %ss : le guide des sorties des séries !
  epguides.disp Cet outil vous permettra d'être à jour au niveau des séries que vous aimez tant ! Il se base sur le site $+($epguides.b(http://epguides.com),.)
  epguides.disp Il intègre une fonction de vérification qui se lance en même temps que mIRC et qui permet de vous informer d'une sortie d'un épisode de la veille ou du jour même.
  epguides.disp A noter que cette fonction peut facilement être désactivée depuis le menu.
  epguides.disp $epguides.u(Utilisation) :
  epguides.disp -> /epguides pour scanner toutes les séries
  epguides.disp -> Clic droit sur la fenêtre @EpGuides pour ajouter, supprimer, consulter tous les épisodes d'une série, ...
  epguides.disp $chr(3)
}

alias -l epguides.check {
  if ($readini(EpGuides.ini,Config,DisabledAutoCheck)) return
  var %s = EpGuides
  if ($sock(%s)) sockclose %s
  if ($hget(%s)) hfree %s
  var %t = 1, %m = $ini(EpGuides.ini,Séries,0)
  if (!%m) return
  while %t <= %m {
    hadd -m %s Liste $addtok($hget(%s,Liste),$ini(EpGuides.ini,Séries,%t),32)
    inc %t
  }
  if (!$show) hadd -m %s DontShow 1
  hadd -m %s Compteur 1
  hadd -m %s Mode 2
  sockopen %s epguides.com 80
}

alias epguides {
  var %s = EpGuides
  if (!$readini(EpGuides.ini,Config,Launched)) {
    epguides.aide
    if ($input(Pour commencer voulez-vous ajouter une série ?,yn)) {
      epguides.add
      epguides
    }
    writeini -n EpGuides.ini Config Launched 1
    return
  }
  elseif ($1 == check) {
    $+($iif(!$show,.),epguides.check)
    return
  }
  if ($sock(%s)) sockclose %s
  if ($hget(%s)) hfree %s
  var %t = 1, %m = $ini(EpGuides.ini,Séries,0)
  if (!%m) {
    epguides.disp * Aucune série n'est dans la base. Veuillez en ajouter une (clic droit).
    return
  }
  while %t <= %m {
    hadd -m %s Liste $addtok($hget(%s,Liste),$ini(EpGuides.ini,Séries,%t),32)
    inc %t
  }
  hadd -m %s Compteur 1
  hadd -m %s Mode 0
  sockopen %s epguides.com 80
}

on *:sockopen:EpGuides:{
  if ($sockerr) return
  var %s = $sockname
  sockwrite -n %s GET $+(http://epguides.com/,$gettok($hget(%s,Liste),$hget(%s,Compteur),32),/) HTTP/1.0
  if ($hget(%s,Mode) != 2) {
    epguides.disp $chr(3)
    epguides.disp * * Récupération des données de $+(http://epguides.com/,$gettok($hget(%s,Liste),$hget(%s,Compteur),32),/)
  }
  if ($hget(%s,Last)) hdel %s Last
  sockwrite -n %s Host: $+(epguides.com,$str($crlf,2))
}
alias -l epguides.desc {
  var %n = $regsubex($gettok($hget($1,Liste),$hget($1,Compteur),32),/([A-Z])/g,$+($chr(32),\t))
  epguides.disp * $epguides.u(Série) : $epguides.b($regsubex(%n,/_(\S+)/g,$+($chr(32),$chr(40),\t,$chr(41))))
  if (!$1-) epguides.disp Pas de dernier épisode sorti
  else {
    var %duree = $int($calc(($ctime - $ctime($2)) /86400))
    if (%duree == 1) var %tp = hier
    elseif (%duree == 0) var %tp = aujourd'hui
    else var %tp = il y a %duree jours
    epguides.disp Dernier épisode sorti $+($chr(40),S,$3,E,$4,$chr(41)) le $2 $+($chr(40),%tp,$chr(41)) : $5-
  }
}
on *:sockread:EpGuides:{
  var %a, %s = $sockname, %o
  sockread %a
  if ($regex(%s,%a,/(?:\s*)(\d+\.)(?:\s+)(\d+)-(?:\s?)(\d+)(?:\s+)(?:[a-zA-Z\-\d\(\)]*)(?:\s*)(\d+)(?:\s+)([A-Za-z]{3})(?:\s+)(\d{2})(?:\s+)<a target="_blank" href="([^\"]+)">([^<]+)</a>.*/U)) {
    var %date = $+($base($regml(%s,4),10,10,2),/,$base($findtok(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec,$regml(%s,5),1,32),10,10,2),/,$regml(%s,6)), %sn = $base($regml(%s,2),10,10,2), %en = $base($regml(%s,3),10,10,2)
    var %titre = $regsubex($replacex($regml(%s,8),&amp;,&),/&#([0-9A-Fx]+);/Ug,$chr($iif($left(\t,1) == x,$base($right(\t,-1),16,10),\t)))
    ;le lien est stocké dans $regml(%s,7)
    if ($hget(%s,Mode) == 1) {
      if (!$sock(%s).mark) epguides.disp * $epguides.u(Série) : $epguides.b($regsubex($hget(%s,Liste),/_(\S+)/g,$+($chr(32),$chr(40),\t,$chr(41))))
      sockmark %s 1
      var %duree = $int($calc(($ctime(%date) - $ctime) /86400))
      if (%duree > 0) var %p = dans
      else var %p = il y a, %duree = $abs(%duree)
      epguides.disp Épisode $regml(%s,1) $+($chr(40),S,%sn,E,%en,$chr(41)) le %date $+($chr(40),%p %duree jour,$iif(%duree > 1,s),$chr(41)) : %titre
    }
    elseif ($hget(%s,Mode) == 2) {
      var %n = $epguides.b($regsubex($regsubex($gettok($hget(%s,Liste),$hget(%s,Compteur),32),/([A-Z])/g,$+($chr(32),\t)),/_(\S+)/g,$+($chr(32),$chr(40),\t,$chr(41))))
      var %duree = $int($calc(($ctime(%date) - $ctime) /86400))
      if (%duree == -1) epguides.disp L'épisode $regml(%s,1) $+($chr(40),S,%sn,E,%en,$chr(41)) de %n est sorti $epguides.u(hier) : %titre
      elseif (!%duree) epguides.disp L'épisode $regml(%s,1) $+($chr(40),S,%sn,E,%en,$chr(41)) de %n sort $epguides.u(aujourd'hui) : %titre
      if ($istok(-1 0,%duree,32)) hadd -m %s DontShow 0
    }
    elseif ($ctime(%date) > $ctime) {
      epguides.desc %s $hget(%s,Last)
      var %duree = $int($calc(($ctime(%date) - $ctime) /86400))
      if (%duree == 1) epguides.disp Prochain épisode $+($chr(40),S,%sn,E,%en,$chr(41)) le %date (demain) : $iif(%titre,$v1,?!)
      else epguides.disp Prochain épisode $+($chr(40),S,%sn,E,%en,$chr(41)) le %date (dans %duree jours) : $iif(%titre,$v1,?!)
      var %o = 2
    }
    else hadd -m %s Last %date %sn %en $regml(%s,8)
  }
  elseif (%a == </pre>) {
    if ($hget(%s,Mode)) var %o = $v1
    else {
      var %o = 2
      epguides.desc %s $hget(%s,Last)
      epguides.disp Pas de date donnée pour le prochain épisode.
    }
  }
  if (%o) {
    sockclose $sockname
    if (%o > 1) {
      hinc %s Compteur
      if ($hget(%s,Compteur) <= $numtok($hget(%s,Liste),32)) sockopen %s epguides.com 80
      else {
        if (($hget(%s,Mode) == 2) && (!$hget(%s,DontShow))) epguides.disp * Fin de la vérification
        hfree %s
      }
    }
  }
}

on *:sockclose:EpGuides:{
  var %s = $sockname
  hinc %s Compteur
  if ($hget(%s,Compteur) <= $numtok($hget(%s,Liste),32)) .timer 1 1 sockopen EpGuides epguides.com 80
  else {
    if (($hget(%s,Mode) == 2) && (!$hget(%s,DontShow))) epguides.disp * Fin de la vérification
    hfree %s
  }
}

alias -l epguides.u return $+($chr(31),$iif($left($1,1) == $chr(32),$right($1-,-1),$1-),$chr(31))
alias -l epguides.b return $+($chr(2),$iif($left($1,1) == $chr(32),$right($1-,-1),$1-),$chr(2))

alias -l epguides.disp {
  if (!$window(@EpGuides)) window -ae @EpGuides
  echo -t @EpGuides $$1-
}

menu @EpGuides {
  Nettoyer:clear @EpGuides
  Aide:epguides.aide
  -
  Tout développer:epguides
  Voir les sorties d'aujourd'hui ou de hier:epguides.check
  $iif($readini(EpGuides.ini,Config,DisabledAutoCheck),$style(1)) Désactiver la vérification au démarrage:writeini -n EpGuides.ini Config DisabledAutoCheck $iif($readini(EpGuides.ini,Config,DisabledAutoCheck),0,1)
  -
  Séries
  .$submenu($epguides.sub($1))
  -
  Visiter epguides.com:url -n http://epguides.com
  À propos:epguides.about
  Fermer:window -c @EpGuides
}

alias -l epguides.sub {
  if ($1 == begin) return -
  elseif ($1 == end) return -
  elseif ($1 == 1) return Ajouter:epguides.subadd
  elseif ($1 == 2) return Supprimer:epguides.subdel
  elseif ($1 == 3) return -
  elseif ($ini(EpGuides.ini,Séries,$calc($1 - 3))) {
    var %n = $regsubex($regsubex($v1,/([A-Z])/g,$+($chr(32),\t)),/_(\S+)/g,$+($chr(32),$chr(40),\t,$chr(41)))
    return $+(.,$calc($1 - 3),.,$chr(9),%n,:,epguides.aff $v1)
  }
}

alias -l epguides.subadd {
  var %ss = $input(Donnez le nom de la série à ajouter,e), %n = $remove($regsubex(%ss,/(?:^|\s)([a-z])/g,$upper(\t)),$chr(32))
  if ($chr(40) isin %n) {
    var %n = $regsubex(%n,/ ?\((.+)\)/Ug,$+(_,\t))
  }
  if ((!%n) || ($readini(EpGuides.ini,Séries,%n))) {
    epguides.disp * Erreur : nom vide ou nom déjà utilisé
    return
  }
  writeini -n EpGuides.ini Séries %n 1
  epguides.disp * Série $epguides.b(%ss) ajoutée $+($chr(40),lien : http://epguides.com/,%n,/,$chr(41))
}
alias -l epguides.subdel {
  var %ss = $input(Donnez le nom de la série à supprimer,e), %n = $remove($regsubex(%ss,/(?:^|\s)([a-z])/g,$upper(\t)),$chr(32))
  if ((!%n) || (!$readini(EpGuides.ini,Séries,%n))) {
    epguides.disp * Erreur : nom vide ou inexistant dans la base
    return
  }
  remini EpGuides.ini Séries %n
  epguides.disp * Série $epguides.b(%ss) supprimée
}

alias -l epguides.aff {
  if (!$1) return
  var %s = EpGuides
  if ($hget(%s)) hfree %s
  if ($sock(%s)) sockclose %s
  hadd -m %s Compteur 1
  hadd -m %s Liste $1
  hadd -m %s Mode 1
  var %n = $regsubex($1,/([A-Z])/g,$+($chr(32),\t))
  sockopen %s epguides.com 80
}

alias -l epguides.about {
  epguides.disp $chr(3)
  epguides.disp * $epguides.u(À propos)
  epguides.disp Cet utilitaire a été conçu par ArKanis pour www.ircfr.com
  epguides.disp Il utilise le site http://epguides.com qui détient toutes les infos concernant les séries.
  epguides.disp Pour télécharger d'autres sources du même auteur, visitez www.arkanis.eu
  epguides.disp $chr(3)
}

;End Of File

Conclusion :


Bugs pour l'instant non connus ... j'ai commencé ce code au milieu de cette après-midi et je n'en ai pas vu pour l'instant ...

Le code ne vous est certainement pas très lisible, je ne l'ai pas fait à caractère éducatif mais le plus court et simple possible (pour moi xD)

Codes Sources

A voir également

  • Epguides
  • Epguide - Meilleures réponses
  • Epguides prison break - Meilleures réponses
  • Epguides blacklist - Guide
Ajouter un commentaire Commentaires
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
57
A tous les comptes mrcXX et autres pseudos fait par cette personne> Les IPs et heures de connections ont toutes été logguées, en cas de récidives on transmettra les données plus loin pour que le nécessaire soit fait à une autre échelle que celle de CodeS-SourceS.

Merci de ta compréhension.
Messages postés
1287
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
21 février 2009

"Et ouai je sais que ça sort un peu du sujet, mais comme on est sur un topic où la source est bien codée, sans [presque] rien à redire, disons que c'est toujours un plus de parler de ça. Et ouai, en ce moment il y a pas mal de discussions intéressantes."

je t'y autorise sans problème ;) pour une fois qu'il y a des commentaires et une conversation intéressante :D

Il est vrai que j'utilisais les parenthèses par habitude et parce que je savais qu'il pouvait y avoir certains cas particuliers, mais je ne savais pas lesquels, maintenant je sais :D
Messages postés
1466
Date d'inscription
mardi 20 février 2007
Statut
Membre
Dernière intervention
7 février 2011
1
Après un petit test (histoire ne vérifier à ne pas dire de connerie) oui ça marche.
'c' étant déclarée comme un int (entier), c=45; revient à c=(45); ou c=(40)+5; etc...
Et ouai je sais que ça sort un peu du sujet, mais comme on est sur un topic où la source est bien codée, sans [presque] rien à redire, disons que c'est toujours un plus de parler de ça. Et ouai, en ce moment il y a pas mal de discussions intéressantes.

Et wims, bah... ouai. J'ai pris un exemple bidon, histoire qu'on voit bien le truc ^^
Mais dis-toi que parfois, ce genre de chose peut (ou doit) se faire.
Exemple tu as une même condition (très longue) à vérifier 10fois.
tu stocke la valeur que retourne la condition dans une variable puis tu teste la variable.
if (((blabla > blibli) || (strlen(bloblo)) >10) && (strcmp(blublu,bleble) 0)) commande_1;
/* bloc de commandes */if (((blabla > blibli) || (strlen(bloblo)) >10) && (strcmp(blublu,bleble) 0)) commande_2;
/* bloc de commandes */if ((((blabla > blibli) || (strlen(bloblo)) >10) && (strcmp(blublu,bleble) 0)) == 0) commande_3;
etc...

devient

int verif;
if (verif=(((blabla > blibli) || (strlen(bloblo) >= 10)) && (strcmp(blublu,bleble) == 0))) commande_1;
/* bloc de commandes */
if (verif) commande_2;
/* bloc de commandes */
if (verif == 0) commande_3;
etc...

Ça gagne en optimisation et en lisibilité, ça gagne en rapidité d'exécution (test évalué une seule fois). et si jamais tu changes les noms de tes variables, ou autre, tu ne le fais qu'une fois au lieu de 10.

Désolé pour ce méga hors_sujet, cette fois-ci.
Messages postés
2466
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
1 août 2010
1
Pour le C comme pour mirc, cf my post mdr

je debute en C mais mdr, la facon dont tu as code ca est interdite dans mon ecole
Messages postés
1804
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
22 septembre 2009
5
Est-ce que "if (c = (0 || 10 < 11))" aurait fonctionné ?
Je trouve le "if (c=0 || 10 < 11)" peu intuitif à lire.

(et au passage merci à tous, ces temps-ci j'apprends plein de choses sur ircfr, je trouve ces discussions enrichissantes malgré qu'on dévie parfois un peu du simple commentaire)
Afficher les 32 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.