automatisk nyhetssida (rss-läsare)

Permalänk

automatisk nyhetssida (rss-läsare)

jag är intresserad utav en automatisk nyhetssida ungefär som http://www.goodnoows.com/ och http://www.nyheter.se i ett rss flöde ungefär som facebook/twitter. och kravet är att sidan ska uppdatera sig själv så man slipper sitta och trycka på F5 hela tiden och att man kan styra vad som finns i flödet.

det är nämligen så att jag har flera skärmar och vill ha nyheter på en skärm som uppdaterar sig hela tiden så man slipper klicka men ändå kunna skumma igenom vad som händer i världen på ett snyggt sett!

någon som har tips att lätt bygga en sådan sida eller om någon känner att dom vill axla projektet?

Visa signatur

tetris is so unrealistic

Permalänk
Medlem

Det går att åstadkomma relativt enkelt med hjälp av lite php och en parser tex http://lastrss.oslab.net/
Då kan du cacha materialet under låt säga 1 minut och sedan göra en refresh av listan med hjälp av javascript. Enklast är att lägga de olika feedsen som egna block varpå du kan välja det du vill parsa in (tidsstämplar, bilder, rubriker, brödtexter etc).

Här har du ett hobbyprojekt jag haft tidigare som är en väldigt god start på det du söker. Den parsar arrayen $user_rss som du anger i index.php och renderar sedan ut i html5. Spara ned varje php-fil och lägg dem enligt strukturen som anges ovanför varje kodblock. Med reservationer för eventuella små missar eftersom tiden har varit knapp då jag helt gått in i utvecklingen av http://threadgame.com/

Börja med att skapa en mapp i roten som heter cache.
Förslag på strukturen:

index.php [ cache ] [ content ] - functions.php - lastRSS.php - settings.php - [ css ] - reset.css - style.css (som inte finns med här)

index.php

<?php // INCLUDE FILES require_once('content/settings.php'); require_once('content/functions.php'); require_once('content/lastRSS.php'); //Hämta här -> http://lastrss.oslab.net/ // VARIABLES // rendertime $starttime = explode(' ', microtime()); $starttime = $starttime[1] + $starttime[0]; $mtime = ''; // RENDER OUTPUT renderHTMLHead($sitename, 'Nyheter'); renderHTMLHeader($siteurl, $sitename); // rss output $rss = new lastRSS; $rss->cache_dir = './cache'; $rss->cache_time = 60; // (1 min) $rss->cp = 'UTF-8'; $rss->items_limit = 10; $rss->rsscp = ''; $user_rss = array( 'http://www.dn.se/m/rss/toppnyheter', 'http://www.aftonbladet.se/nojesbladet/klick/rss.xml', 'http://www.sweclockers.com/forum/external.php?type=RSS2&forum...', 'http://www.unt.se/rss/senaste', 'http://gdata.youtube.com/feeds/base/standardfeeds/SE/most_vie...' ); // make an array of the feeds $feedarray = array(); foreach ($user_rss as $url) { ShowOneRSS($url, $show_image, $show_description); $feedarray[] = $feedout; } // display the feeds from the array $i=0; foreach ($feedarray as $user_rss) { echo $feedarray[$i]; $i++; } renderHTMLEnd($mtime, $starttime); ?>

content/functions.php

<?php // RENDER HTML HEAD function renderHTMLHead($sitename, $pagetitle) { echo '<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>' . $sitename . ' - ' . $pagetitle . '</title> <link href="content/css/reset.css" rel="stylesheet" type="text/css" /> <link href="content/css/style.css" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="content/js/jquery.js"></script> <!--[if lt IE 9]> <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> </head> <body>'; } // RENDER HTML HEADER (GRAPHICAL) function renderHTMLHeader($siteurl, $sitename) { echo ' <header><h1><a href="'.$siteurl.'"><img src="content/img/headerimage.png" alt="'.$sitename.'" /></a></h1></header> <div id="content"> '; } // RENDER HTML END function renderHTMLEnd($mtime, $starttime) { $mtime = explode(' ', microtime()); echo ' </div> <p id="footnote">Loaded in '.round($mtime[0] + $mtime[1] - $starttime, 3).' seconds.</p> </body> </html>'; } // DEALING WITH THE RSS function ShowOneRSS($url, $show_image, $show_description) { global $rss; global $feedout; if ($rs = $rss->get($url)) { $feedout = '<div class="feeditem">'; $feedout .= '<div class="feedhead">'; if ($show_image == 1){ if ($rs[image_url] != '') { $feedout .= "<a href=\"$rs[image_link]\"><img src=\"$rs[image_url]\" alt=\"$rs[image_title]\" vspace=\"1\" border=\"0\" /></a>\n"; } } $feedout .= '<h2><a href="'.$rs['link'].'">'.$rs['title']."</a></h2>\n"; //echo '<small>Language/Encoding: <font color="red"><b>'.$rs['language'].'/'.$rs['encoding']."</b></font><br></small>\n"; $feedout .= '</div>'; if ($show_description == 1){ $feedout .= $rs['description']."\n"; } $feedout .= "<ul>\n"; foreach ($rs['items'] as $item) { $feedout .= '<li><a href="'.$item['link'].'" title="'.$item['description'].'">'.$item['title'].'</a> '.$item['pubDate'].'</li>'; } if ($rs['items_count'] <= 0) { $feedout .= '<li>No items could be found in the RSS-feed: '.$url.'</li><a href="#">Remove feed</a>'; } $feedout .= "</ul>\n"; $feedout .= '</div>'; } } // DATEFUNCTION (HOW LONG AGO WAS THE DATESTAMP) function returnDate($querydate){ $minusdate = date('ymdHi') - $querydate; if($minusdate > 88697640 && $minusdate < 100000000){ $minusdate = $minusdate - 88697640; } switch ($minusdate) { case ($minusdate < 99): if($minusdate == 1){ $date_string = '1 minute'; } elseif($minusdate > 59){ $date_string = ($minusdate - 40).' minutes'; } elseif($minusdate > 1 && $minusdate < 59){ $date_string = $minusdate.' minutes'; } break; case ($minusdate > 99 && $minusdate < 2359): $flr = floor($minusdate * .01); if($flr == 1){ $date_string = '1 hour'; } else{ $date_string = $flr.' hours'; } break; case ($minusdate > 2359 && $minusdate < 310000): $flr = floor($minusdate * .0001); if($flr == 1){ $date_string = 'yesterday'; } else{ if ($flr == 0) { $date_string = 'today'; }else{ $date_string = $flr.' days'; } } break; case ($minusdate > 310001 && $minusdate < 12320000): $flr = floor($minusdate * .000001); if($flr == 1){ $date_string = "1 month"; } else{ $date_string = $flr.' months'; } break; case ($minusdate > 100000000): $flr = floor($minusdate * .00000001); if($flr == 1){ $date_string = '1 year.'; } else{ $date_string = $flr.' years'; } } return $date_string; } ?>

content/settings.php

<?php // SETTINGS FOR THE SITE $sitename = 'Feeds'; $siteurl = 'http://localhost/'; $db = ''; //Not used at the moment $dbuser = ''; //Neither is this $dbpass = ''; //Or this .. but database the hell out of this later! // INDIVIDUAL SETTINGS FOR USER $show_image = 1; $show_description = 0; ?>

content/lastRSS.php

Sedan är det bara gå loss med css på det här, glöm inte en reset först tex:

content/css/reset.css

html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td { margin: 0; padding: 0; border: 0; outline: 0; font-size: 100%; vertical-align: baseline; background: transparent; } body { line-height: 1; } ol, ul { list-style: none; }

Lägg sedan till en refresh med hjälp av javascript i funktionen renderHTMLHead i functions.php som är större än cache-tiden du valt för LastRSS.
Ställ gärna frågor här i tråden om du inte får till det som tänkt. Lycka till!

Visa signatur

i7 920 | 12GB DDR3 | GTX 480 | GA-X58A-UD7 | 160GB SSD X25-M G2 | 1TB F3 HD103SJ | W7 64-bit | Mac Mini
Webb: bluekitestudios.com

Permalänk

åh, tack så mycket, ska kolla på det

Visa signatur

tetris is so unrealistic

Permalänk
Medlem
Skrivet av Sick_pSyC:

åh, tack så mycket, ska kolla på det

Om du inte har en server redan som kör PHP v5.3.0 är http://www.wampserver.com/en/download.php smidigt. Så kan det vara skönt att låta vissa saker vara lagrade i en databas senare, så du lätt kan lägga till nya / eller ta bort feeds. För att få till "Twitter" stilen på allt så får du mangla igenom hela arrayen med varje listobjekt och sortera efter RSS-datumet och sedan rendera ut den nya arrayen istället för $feedarray[] - kanske är något som någon annan som har lite mer tid kan hjälpa dig med här i tråden, om du inte själv sätter dig in i det förstås.

Visa signatur

i7 920 | 12GB DDR3 | GTX 480 | GA-X58A-UD7 | 160GB SSD X25-M G2 | 1TB F3 HD103SJ | W7 64-bit | Mac Mini
Webb: bluekitestudios.com