webForumDet fria alternativet

Extrahera youtube-ids 11 tecken

ASP

36 svar · 1 831 visningar · startad av brorsan

Medlem sedan nov. 2001402 inlägg
Frågan#1

Hejsan,
jag skulle behöva ha en enkel kod som när någon infogar en länk till sitt youtubeklipp då plockar ut de 11 tecken som är youtubeklippets unika id oavsett i vilken form koden är inklistrad.

Typ: if adress = http://www.youtube.com/watch?v=4N_GBVAeHeg then
make address 4N_GBVAeHeg

else if adress = http://www.youtube.com/watch?v=4N_GBVAeHeg&feature=related then
make address 4N_GBVAeHeg

else if adress = http://youtu.be/4N_GBVAeHeg then
make address 4N_GBVAeHeg

else if adress = <iframe width="560" height="315" src="http://www.youtube.com/embed/4N_GBVAeHeg" frameborder="0" allowfullscreen></iframe> then
make address 4N_GBVAeHeg

else if adress = <object width="560" height="315"><param name="movie" value="http://www.youtube.com/v/4N_GBVAeHeg?version=3&amp;hl=sv_SE&amp;rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/4N_GBVAeHeg?version=3&amp;hl=sv_SE&amp;rel=0" type="application/x-shockwave-flash" width="560" height="315" allowscriptaccess="always" allowfullscreen="true"></embed></object> then
make address 4N_GBVAeHeg

4N_GBVAeHeg är såklart bara ett exempel och ska kunna vara vad som helst för kombination.

med andra ord oavsett i vilken form av de ovan som användaren inflikar en länk till sitt youtubeklipp så rensas allt annat än hans 11 idtecken bort.

Skulle vara schysst om någon vet hur man gör detta på ett smidigt sätt och kan tänka sig att klistra in koden komplett så att en asp-dyslektiker kan kopiera den. :) Tack på förhand!

Medlem sedan aug. 20039 340 inlägg
#2

Du bör använda ett reguljärt uttryck. Jag satte mig för att skriva ett sådant uttryck, men hittade ett bra här. Jag har även anpassat exempelkod härifrån. Ingen aning om det kommer att funka i exakt denna utformning, alltså.

Set regex = New RegExp
regex.Pattern = "^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*"
Set matches = regx.Execute(adress)
Set match0 = matches(0)
Set youtubeid = match0(7)
Medlem sedan dec. 2009872 inlägg
#3

Om du, precis som jag, tycker RegExp är aningen kluriga och - ärligt talat - näst intill omänskligt luriga kan du kanske göra samma sak med Klassisk ASP.

"Kanske" skriver jag för att sista frågan verkar grymt omständig.

I denna tråden finns en länk till dokumentationen av ASP:
http://www.webforum.nu/showthread.php?t=182288

Jag länkar till tråden och inte till länken för i tråden står även hur du får det lilla plutteprogrammet att fungera med Windows 7.

Saker du kan experimentera med är till exempel inStr(xxx, yyy) (in string) och split("/").

Då det (enligt dig) alltid är just elva tecken så är det ju lätt på det viset.

Se om du får det att fungera!!

Medlem sedan nov. 2001402 inlägg
#4

tack för svaren jag ska prova!

Medlem sedan nov. 2001402 inlägg
#5

Nej, jag är helt klart inte kunnig nog för att få till det här. Provade så här och en rad andra sätt men får bara felmeddelanden. Sitter bara och chansar på vad som är fel utan att förstå koden typ.. ;)

if rs12("message") > " " then  
Dim adress
Set adress = rs12("message")

Dim objRegExp

Set objRegExp = New RegExp

objRegExp.Global = True

objRegExp.IgnoreCase = True

objRegExp.Pattern = "^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*"
Set matches = regx.Execute(adress) 
Set match0 = matches(0)
Set youtubeid = match0(7)

response.write youtubeid 
response.write "youtubeid"
response.write match0 
response.write "match0"
response.write match0(7)
response.write "match0(7)"
response.write adress
response.write "adress"

Set adress = Nothing
Set objRegExp = Nothing

end if

Får felmeddelanden på raden med

 Set matches = regx.Execute(adress)"

och meddelandet är:

 

Object required: ''

Den som kan det här med regexp kanske ser direkt vad som är tokigt?

Medlem sedan nov. 2001402 inlägg
#6

civilpolisens förstod jag inte heller, verkade vara nåt program man skulle ladda ned? Vill helst bara ha kod.

Medlem sedan juni 200032 967 inlägg
#7

Ditt objekt heter ju inte regx - du har ju kallat det för objRegExp.

Medlem sedan juni 200032 967 inlägg
#8

brorsan skrev:

civilpolisens förstod jag inte heller, verkade vara nåt program man skulle ladda ned? Vill helst bara ha kod.

Det är en dokumentation så man kan lära sig saker. Vill man inte lära sig något så slipper man.

edit: jag tycker väl iofs att man inte behöver lära sig vare sig asp eller vbscript - det finns tekniker som är liiite nyare och mer användbara. =)

Medlem sedan nov. 2001402 inlägg
#9

@nders, känns mer som att du är ute efter att håna eller tillrättavisa mig än att hjälpa mig så nej som jag redan sagt kan jag kan inte detta och som också är sagt är det därför jag ber om hjälp från någon som kan och vill hjälpa genom att klistra in kod klar att använda så att en "asp-dyslektiker" kan förstå.

Om att lära sig saker så har jag tidsbrist och prioriterar främst att lära mig nya saker inom mina intresseområden som är bl.a. hjälp till självhjälp till folk som mår dåligt/har ett svårt liv och inom kunskap om djur/natur och hur världsutvecklingen ser ut och hur man bäst förhåller sig till den för att må bra så att jag kan hjälpa folk med sånt. Alla kan inte ha programmering som främsta intresse att lära sig mer om.

Genom åren har jag fått mycket fin hjälp här av schyssta människor och det har gjort att jag kunnat lägga tid på att göra saker för andra på de sätt jag är bra på som inte har med programmering att göra. Just nu är min prio att starta ett projekt i afrika för att hjälpa folk både där och här, men för att få ro till det skulle jag behöva laga min hemsida först och därför ber jag om hjälp med det.

Men om det nu inte var ett program utan en text så ska jag ta en titt på det och se om det är något jag kan förstå med mina begränsade förkunskaper. Tack.

Medlem sedan nov. 2001402 inlägg
#10

Tittat på den igen och känner inte ens igen filändelsen och jag vet inte, men känns som att det borde finnas ett mycket enklare sätt att göra detta med någon trim/replace-kod liknande den som voigtan hjälpte mig med för några år sen. Eller kanske med koden ovan om man bara fixar det som du sa var fel. Problemet är att det där är en blandning av voigtans kod och nitros kod eftersom nitros inte är komplett och eftersom jag själv inte vet hur man skriver in en kod som nitros i ett dokument. Tacksam om någon vill korrigera och klistra in.

Medlem sedan juni 200032 967 inlägg
#11

brorsan skrev:

@nders, känns mer som att du är ute efter att håna eller tillrättavisa mig än att hjälpa mig så nej som jag redan sagt kan jag kan inte detta och som också är sagt är det därför jag ber om hjälp från någon som kan och vill hjälpa genom att klistra in kod klar att använda så att en "asp-dyslektiker" kan förstå.

Det var absolut inte meningen att du skulle känna så. Jag ber om ursäkt!

Jag hoppas du också såg mitt första inlägg då jag gav ett tips om vad som kunde ha genererat felmeddelandet? Så: jag försökte faktiskt hjälpa dig också...

Medlem sedan nov. 2001402 inlägg
#12

Ska man skriva om det till det här?

 Set matches = objRegExp.Execute(adress)"
Medlem sedan juni 200032 967 inlägg
#13

Ja, men du har ett citationstecken sist där (copy/paste-fel?), som inte ska vara med.

Medlem sedan nov. 2001402 inlägg
#14

ok, tack, tar bort citationstecknet.

Fick nu fel på en senare rad

 Object not a collection: 'match0'

på raden med

 Set youtubeid = match0(7)

Vad hänvisar (0) och (7) till om man får fråga? :)

Medlem sedan nov. 2001402 inlägg
#15

Det var absolut inte meningen att du skulle känna så. Jag ber om ursäkt!

Jag hoppas du också såg mitt första inlägg då jag gav ett tips om vad som kunde ha genererat felmeddelandet? Så: jag försökte faktiskt hjälpa dig också...

Tack, ursäkten godtas och ber om ursäkt själv om jag missförstått/överreagerat/överanalyserat lite. När jag läste om det någon gång med båda inläggen kändes det som att jag kanske gjort det. Har varit utsatt för mycket stress, press och grubbel de senaste åren och inte minst senaste veckan så jag kanske är lite extra känslig av mig..

Medlem sedan juni 200032 967 inlägg
#16

Jag kan tyvärr inte regexp heller - det är helt omöjligt att lära sig! - så jag hoppas att nitro kan kliva tillbaka in. Annars kan säkert voigtann1 - han är en riktig j**el på regexp. =)

Medlem sedan aug. 20039 340 inlägg
#17

brorsan skrev:

ok, tack, tar bort citationstecknet.

Fick nu fel på en senare rad

 Object not a collection: 'match0'

på raden med

 Set youtubeid = match0(7)

Vad hänvisar (0) och (7) till om man får fråga? :)

När du först kör regex-anropet får du tillbaka en lista med matchningar för hela uttrycket. Din sträng kan t ex innehålla flera YouTube-länkar, och då är varje sådan länk en matchning för sig. Nästa steg är i sin tur att plocka ut undermatchningar inom uttrycket. Varje parentes skapar en ny undermatchning, något man förövrigt kan använda för att plocka ut flera saker med ett anrop. I detta fall råkar uttrycket innehålla mycket parenteser och själva ID't hamnar på plats 7.

Medlem sedan juni 20019 519 inlägg
#18

@nders skrev:

Jag kan tyvärr inte regexp heller - det är helt omöjligt att lära sig! - så jag hoppas att nitro kan kliva tillbaka in. Annars kan säkert voigtann1 - han är en riktig j**el på regexp. =)

Jasså?

men vad är **rs12("message")**är det ett objekt? Sen få du nog kolla om det finns en kollektion, om den inte hittar uttrycket så kan den inte hämta ut posterna heller.

Medlem sedan aug. 20039 340 inlägg
#19

Jag kanske för övrigt ska tillägga att jag har noll erfarenhet med ASP och försökte klistra ihop något efter bästa förmåga utifrån tillgänglig exempelkod. Regex i sig kan jag däremot hyfsat.

Medlem sedan nov. 2001402 inlägg
#20

@nders skrev:
Jag kan tyvärr inte regexp heller - det är helt omöjligt att lära sig!

Ja det är helt klart svårare att se logiken i det "språket" än i asp!

voigtann1 - han är en riktig j**el på regexp. =)

håller med :)

Jag kanske för övrigt ska tillägga att jag har noll erfarenhet med ASP och försökte klistra ihop något efter bästa förmåga utifrån tillgänglig exempelkod. Regex i sig kan jag däremot hyfsat.

Aha, ok.

men vad är rs12("message")är det ett objekt? Sen få du nog kolla om det finns en kollektion, om den inte hittar uttrycket så kan den inte hämta ut posterna heller.

För att bara prova om jag kan få själva ändringen från http://www.youtube.com/watch?v=7EXXFlygmQY&feature=pyv&ad=7138752123&kw=skateboard till 7EXXFlygmQY har jag lagt den hela länken i en databas i ett fält som heter message. Försöker hämta den långa och skriva ut den som 7EXXFlygmQY .

Om jag lyckades med det tänkte jag sen försöka justera det så att ändringen görs redan när en medlem postar länken så att bara 7EXXFlygmQY skrivs in i databasen, inte hela länken, så detta var tänkt att vara ett första test på själva "omvandlingen" bara.

265 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)