Epguides : sorties des séries

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

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.