Bonjour tout le monde,

Mon appli scanne des pages web à la recherche de liens vers des vidéos.
J'ai donc quelque chose qui ressemble à ceci:

    open(@url) { |page|
      page_content = page.read()    
     
    
page_content.scan(/href\s*=\s*[\"']([^\"']+)\.(wmv|avi|mpeg|mpg|mov|mp4)[\"']>(.+)<\/a>/i).each
    { |a|
        video_filename = a[0] + "." + a[1]
        link_content = a[2] # (attention: le contenu peut comprendre des
    balises HTML, par ex <img ...>)
        # (... traitements ...)
      }
    }

J'ai constaté un premier problème avec ce pattern. Si j'ai du code HTML
de ce genre, ça ne prend pas:

    <a href="01.mov">
        <img src="01_screenshot.jpg" /></a>

Le problème provient du passage à la ligne entre le lien et son contenu
(ici une <img>). Le morceau de pattern "(.+)" ne prend pas en compte les
_newlines_. Pour faire simple, j'ai alors décidé de d'abord nettoyer la
source HTML en remplaçant les _linebreaks_:

    page_content = page_content.tr("\n\r|\n|\r", "")

J'ai cru que mon problème serait résolu. Mais un (nouveau) problème est
apparu. Imaginons un code HTML de ce type:

    <a href="01.mov"><img src="01_screenshot.jpg" /></a><a
    href="02.mov"><img src="02_screenshot.jpg" /></a><a
    href="03.mov"><img src="03_screenshot.jpg" /></a>

Le pattern ne prend pas bien et me renvoie un tableau avec ce résultat:

    a[0] = "01"
    a[1] = "wmv"
    a[2] = <img src="01_screenshot.jpg" /></a><a href="02.mov"><img
    src="02_screenshot.jpg" /></a><a href="03.mov"><img
    src="03_screenshot.jpg" />

Alors que ce que je souhaite en a[2], c'est:

    a[2] = <img src="01_screenshot.jpg" />

Ce qui est étrange, c'est que quand je teste mon pattern avec le code
HTML cité ci-dessus sur www.regexlib.com/RETester.aspx, le résultat est
celui souhaité. Mais dans mon appli Rails, le résultat n'est pas celui
souhaité.

Avez-vous une idée, une solution à mon problème?

Bonne journée,

Michael
begin:vcard
fn:Michael Hulet
n:Hulet;Michael
org:mindtheshark.com
adr;quoted-printable:;;chauss=C3=A9e de Bruxelles, 11;Wavre;;1300;Belgique
email;internet:[EMAIL PROTECTED]
title;quoted-printable:Cr=C3=A9ateur web ind=C3=A9pendant
tel;cell:+32498119278
note;quoted-printable:MSN Messenger: [EMAIL PROTECTED]
	
url:http://www.mindtheshark.com
version:2.1
end:vcard

_______________________________________________
Railsfrance mailing list
[email protected]
http://lists.rubyonrails.fr/mailman/listinfo/railsfrance

Répondre à