parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Коды

Сухроб Хусамов 11.09.2008 15:09 / 11.09.2008 15:10

Вот методы, которые на выходе дают хеш с тремя путями.
@getPreviewSrcRUTUBE[][rutubeid;src]
$rutubeid[^getRUTUBEid[]]
$src[http://img.rutube.ru/thumbs]
$src[$src/^rutubeid.left(2)]
$src[$src/^rutubeid.mid(2;2)]
$src[$src/$rutubeid]
$result[
	$.1[${src}-1.jpg]
	$.2[${src}-2.jpg]
	$.3[${src}-3.jpg]
]
@getPreviewSrcMAILRU[][slink;src]
$slink[^self.link.split[/;lh]]
#$src[http://img.video.mail.ru/images]
$src[http://video.mail.ru]
#$src[$src/$slink.3=$slink.4=$slink.5=p-^file:justname[$slink.6].jpg]
$src[$src/$slink.3/$slink.4/$slink.5/p-^file:justname[$slink.6].jpg]
$result[
	$.1[$src]
	$.2[$src]
	$.3[$src]
]
Соответственно для превью трех размеров. Правда для мэйл ру там только одна превью. Остальные не знаю как вытащить.

Ну, а по этим путям легко скачать сами файлы:
@loadAndSavePreviewFile[id;src]
^try{
	$value[^file::load[binary;$src;$.timeout($self.videoalbum.timeout)]]
	$filename[$self.homedir/va${self.videoalbum.id}.v${self.id}.preview${id}.jpg]
	^value.save[binary][$filename]
}{
	^if(!^exception.type.pos[http]){
		$exception.handled(true)
		^throw[sf.vas;$src][
			...
		]
	}
}
Таймаут я ставлю обычно 4 сек. Меньше не работает.

Путь к плееру для МайлРу генерируется так:
@getPlayerSrcMAILRU[]
$slink[^self.link.split[/;lh]]
$result[http://img.mail.ru/r/video2/player_v2.swf?par=http://content.video.mail.ru]
$result[$result/$slink.3]
$result[$result/$slink.4]
$result[$result/$slink.5]
$result[$result/^$^file:justname[$slink.6]^$0^$242]
$result[${result}&page=2&imaginehost=video.mail.ru&perlhost=video.mail.ru]
$result[${result}&alias=$slink.3]
$result[${result}&username=$slink.4]
$result[${result}&albumid=$slink.5]
$result[${result}&id=^file:justname[$slink.6]]
$result[${result}&catalogurl=http://video.mail.ru/catalog/clips/]
Здесь $self.link путь к странице с флешкой, который выдает сам Рутубе.

И для Рутуба:
@getPlayerSrc[]
^switch[$self.type]{
	^case[rutube]{$result[http://video.rutube.ru/^getRUTUBEid[]]}
	^case[youtube]{}
	^case[mailru]{$result[^getPlayerSrcMAILRU[]]}
}
@getRUTUBEid[]
$result[^self.link.split[=;lh]]
$result[$result.1]
Ну, а сам код OBJECT легко генерируется и без моих подсказок.

То есть от майла или рутуба берется лишь путь к странице. А по ней вычисляется пути к плееру и к превьюшкам. Вот такая технология.