Изкарване на заглавие от колекция на vbox

index

Super Moderator
PHP:
<form action="" method="post">
URL collection : <input type="text" name="colection"><br>
Categoriq  ID : <input type="text" name="id"><br>
Addnal: <input type='text' name='adder' value='admin'><br>
ID addanl :<input type='text' name='idadd' value='1'><br>
Opisanie:<input type='text' name='opisanie' value='Приятно гледане'><br>
Tagove:<input type='text' name='tagove' value=''><br>
<input type='submit' name='go' value='go'>
</form>
<br><hr>
<?php
set_time_limit(30);
ini_set('memory_limit', '64M');


$passOne = '';  // pyrvo preminavane
$passOneCount= '';// broi na  elementite ot pyrvoto preminavane
$passSecond = ''; // vtoro preminavane 
$passThird = ''; // treto preminavane

$vboxUser = '';// potrebitelsko ime  na usera 
$vboxPassword = ''; // parola na  potrebitelq 

$category =  $_POST['id'];//'543'; // kategoriq za  upload (int)
$video_colection  = $_POST['colection']; //"http://vbox7.com/collection:1259045"; // link kym kolekciq pyrva stranica
// zarejdane na  cookies i  zadavane na   browser agent 
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.vbox7.com/login/in.do'); 
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'vboxusr='.$vboxUser.'&vboxpwd='.$vboxPassword.'&Submit=login');
curl_setopt ($ch, CURLOPT_COOKIEJAR, './vbox_cookie.txt');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 GTB5');
curl_exec ($ch); // login stranicata 
// vzemane na informaciqta ot kolekciqta
curl_setopt($ch, CURLOPT_URL, $video_colection);
$content = curl_exec ($ch); // stranicata za kolekciqta
curl_close($ch);// zatvarqne na vryzkata


preg_match('#<title>Колекция / (.*) / VBOX7</title>#isU', $content, $movieTitle);
// izbirane samo na   videtata   ( ot gore ) 
$passOne = explode("<div class=\"clipThumb\">", $content);
$passOneCount = count($passOne);


// izibrane na videata   s  link , snimka  i imeto na  samoto video
$sql = "INSERT INTO pm_temp (url, artist, video_title, description, tags, category, username, user_id, added, source_id, language) VALUES <br />";
for($i=1;$i<=$passOneCount-1;$i++)
{
    
    $passSecond[$i] = explode("</div></div><div class=\"clip\">",$passOne[$i]);
    $temp = explode("<div class=\"video-time\"><span>",$passSecond[$i][0]);

    preg_match('#<a\s+href=[\'"]([^\'"]+)[\'"]\s*(?:title=[\'"]([^\'"]+)[\'"])?\s*>((?:(?!</a>).)*)</a>#i', $temp[1],$endDatas);
	
    $title = explode (":", $endDatas[2]);

    $passThird[$i]['url'] = "http://vbox7.com".$endDatas[1];

	$titleNew = preg_replace("#".$movieTitle."\i#",'//',end($endDatas));

    $sql .= "('{$passThird[$i]['url']}', '".end($endDatas)."', '{$titleNew}', '".mysql_escape_string($_POST['opisanie'])." ', '{$_POST['tagove']}', '{$category}', '{$_POST['adder']}', '{$_POST['idadd']}', '".time()."', '53', '1'), <br />";

}

echo $sql;

В момента вади заявка :
('http://vbox7.com/play:e31b67a9', 'South Park S12 Ep10', 'South Park S12 Ep10', 'Приятно гледане ', '', '', 'admin', '1', '1343776550', '53', '1'),



А аз искам да стане :

('http://vbox7.com/play:e31b67a9', 'South Park', ' S12 Ep10', 'Приятно гледане ', '', '', 'admin', '1', '1343776550', '53', '1'),
 
// izibrane na videata s link , snimka i imeto na samoto video

1.Аз никъде не видях да записваш пътя на снимката към видеото?
2.Това с artist и video title не го разбрах, винаги ли ги има и двете ? тоест както е в случая artist:South Park и video title:S12 Ep10
Разясни повечко защото аз лично не съм се вглеждал в кода, но мисля определено че може да се направи по-добре.
 
Абстрахирай се от повечето коментари в скрипта.Няма вече нищо общо с това което беше преди. Това не е важно сега.
Идея на скрипта е :

Вкарвам линк на колекцията.
Взема заглавието, както и линковете към всички и техните имена.
В базата данни първите 3 полета са :
URL , ARTIST , VIDEO_TITLE

URl = приема линка към видеото
ARTISST = приема само името на категорията.
VIDEO_TITLE = приема заглавието от сорта : South Park S12 Ep10
Обаче това не ме устройва.
Искам от Video_TITLE да взема само името на категорията( тоест на артиста) а на самото video_title da остава S12 Ep10

Та в краен случай да изглежда така :
('http://vbox7.com/play:e31b67a9', 'South Park', ' S12 Ep10',.............

Искам да го взема от името на колекцията/ артиста от заглавието, не от самата странциа. тъй като в повечето случай заглавиеот на колекцията е с малка буква,
 
index каза:
Идея на скрипта е :...

Благодаря за описателното обяснение.Сега започват да ми се изясняват нещата.

Първо, обаче може да оптимизираме малко горния код:


PHP:
preg_match('#<title>Колекция / (.*) / VBOX7</title>#is', $content, $collection_name);

След като разгледах стуктурата на html-a на стр. с колекцията следният регулярен израз ще взима линковете и заглавията им.
PHP:
preg_match_all('~(?<=<div class="clipTitle">)\s+<a href="([^"\']+?)"[^<]+>([^"\']+?)</a>~',$content,$info);

Тъй като имаме две групи с референции към тях и изпозлваме preg_match_all ще имаме следователно и два масива в масива $info с ключове 1 и 2 където ще се съдържат необходимата ни информация
Тъй като искаме да премахнем името на колекцията от заглавията ако то присъства там просто можем да изпозлваме str_ireplace, която е нечувстителна към регистъра(малки и големи букви)

PHP:
$links = $info[1];
$titles = str_ireplace($collection_name[1],'',$info[2]);
echo 'име на колекция : '.$collection_name[1].'<br />линкове: <pre>'.print_r($links,true).'</pre>','заглавия: <pre>'.print_r($titles,true).'</pre>';

От тук насетне мисля, че знаеш как да изпозлваш информацията за да я вкараш правилно в бази данни с цикъл.
 
index каза:
тъй като в повечето случай заглавие от на колекцията е с малка буква,
Аз искам само да подсетя, че в PHP си има функция, която да прави автоматично първата буква главна и тя е ucfirst()

Можеш да ползваш нещо от рода на ucfirst(strtolower($ime)), което ще уеднакви буквите ако някой си е иГрАл С рАзМеРа ;)

Това можеш да го ползваш дори и с кода на колегата по-горе.
 
Благодаря за отговорите. Нека да оставим темата за известно време. Нямам време в момента да се занимавам със скрипта.
Благодаря отвното.
 

Горе