text:
RAMALLAH, West Bank, May 17 (UPI) -- Palestinians will request international recognition of a state of Palestine to pave the way for legal claims against Israel, the Palestinian president wrote.
"Minutes after the state of Israel was established on May 14, 1948, the United States granted it recognition. Our Palestinian state, however, remains a promise unfulfilled," Palestinian Authority President Mahmoud Abbas wrote in an op-ed piece published in The New York Times Monday.
"Palestine's admission to the United Nations would pave the way for the internationalization of the conflict as a legal matter, not only a political one. It would also pave the way for us to pursue claims against Israel at the United Nations, human rights treaty bodies and the International Court of Justice," Abbas wrote.
Negotiations remain the Palestinian Authority's first option he said, adding "due to their failure we are now compelled to turn to the international community to assist us in preserving the opportunity."
The choice is not between Palestinian unity or peace with Israel but a choice between a two-state solution or settlement colonies, he wrote.
"Our territory is recognized as the lands framed by the 1967 border, though it is occupied by Israel," he wrote.
Being recognized as a state is tremendously beneficial for all Palestinians, Abbas said, "those living in the homeland, in exile and under occupation."


text:
Critical Appraisal For Doctors New
Critical appraisal is the process of carefully and systematically examining research to judge its trustworthiness, and its value and relevance in a particular context.' Amanda Burls, What is Critical Appraisal?, Feb 2009
'An Introduction to Critical Appraisal' will help you understand how to critically appraise a Randomised Controlled Trial (RCT). Using the CASP Checklist the course covers samples and sample size, randomisation, bias, statistics, significance (P Values and Confidence Intervals) and relevance.
We ask that you read a paper that will be provided before you attend the session, in order for us to make the best use of the time together.
Number of sessions: 1
|Mon 4 Apr 2016 14:00 - 15:30
|14:00 - 15:30
|Clinical School, Medical Library, Library Training Room
|Isla Kuhn
- Critical Appraisal
To understand how to critically appraise a randomised Controlled Trial (RCT)
Presentations, demonstrations and practicals
One sesson of 90 minutes
A number of times per term
Booking / availability

subset: commoncrawl


text:
Peavey Guitars
So which Peavey is right for you? If you're a beginner looking for an affordable starter pack, Peavey's Rockmaster 5-in-1 guitar pack may be the way to go. The basswood-body electric guitar comes with earbuds to listen through the built-in preamp with two channels: clean and overdrive. The pack also includes a GT5 amp and a cable to connect to it, a nylon shoulder strap and picks so you can start rocking right out of the box.
If you find yourself constantly switching between different tunings, or just don't like wasting time tuning your guitar, the AT-200 auto-tune electric is your new best friend. The push-button control lets you tune your instrument and switch between alternate tunings like drop D, open G and more in seconds, eliminating the need for tuning gear and long breaks between songs to tune on stage.
However, if jazz and fusion are your areas of expertise, the JF-1 hollow-body electric guitar is a game-changer. The neck is very slightly angled to give you exceptional access to the upper frets, allowing you to play more quickly, smoothly and comfortably. Lightweight and rich-sounding, many JF-1 owners say the Peavey JF-1 rivals similar guitars in much higher price ranges.
In the mid-70's, Peavey revolutionized instrument-making by bringing computer numerical control to the industry, allowing for a high level of consistency and quality in computer-made guitars. CNC became the industry standard and is the reason Peavey was able to offer guitars for less than the competition, leading to their exponential growth. This innovative attitude is why Peavey Guitars continue to be a music industry forerunner and a company musician's trust for value and reliability.


text:
ATV Johannes Kepler operating flawlessly
Following a spectacular launch on 16 February, Europe's space freighter is now in its planned orbit. Mission controllers are preparing to match its trajectory with that of the International Space Station, where it will dock seven days from now.
After a one-day launch delay, ESA's next Automated Transfer Vehicle (ATV), Johannes Kepler, lifted-off yesterday on an Ariane 5 launcher from Europe's Spaceport in Kourou, French Guiana, at 21:50 GMT. A few minutes later, the vessel attained its initial operational orbit at 260 km altitude.
Mission controllers immediately began checking out the spacecraft and ensuring that programmed sequences – including deployment of ATV's four large solar wings – had correctly taken place.
In-flight communication via relay satellites
ATV has established communications with its control centre in Toulouse, France, sending data and information via NASA's Tracking and Data Relay Satellite System, a constellation of satellites that provides full-time communications with the International Space Station.
Flight dynamics experts on the joint ESA–CNES (French space agency) team in the control centre also carried out the first orbit determination, precisely fixing ATV's position and trajectory in space.
This was done initially using the on-board startrackers and later via GPS satellite signals.
This information is being used to plan and conduct the first of a series of 'phasing manoeuvres'. This complex set of thruster burns will start raising ATV's altitude to that of the Station, currently about 350 km. By 24 February, ATV will be just 30 km behind the Station.
"We had an excellent orbit injection thanks to Ariane, and the spacecraft itself is performing flawlessly. With the one-day launch delay, docking with the ISS is now set for one day later than initially planned, now on 24 February," said ESA's Alberto Novelli, Head of the ATV Operations Division.
Arrival at ISS set for 24 February
In 2008, after the launch of the first ATV, Jules Verne, the vessel spent almost three weeks performing a series of test manoeuvres to prove its automated docking system worked as expected.
"This time, we have a proven spacecraft and an experienced team, so we'll get up to Station in just about a week," said Alberto.
Operating ATV requires an extended 'team of teams' spread around several establishments across Europe.
In addition to ESA and CNES personnel at the Toulouse centre, ESA specialists at the Agency's ESTEC technical centre, in the Netherlands, and at ESOC, the European Space Operations Centre, Germany, are supporting the mission.
ESA's Columbus Control Centre, near Munich, jointly staffed by ESA and DLR, the German Aerospace Center, is also involved in ATV operations, as are numerous experts from the industrial partners that build ATV.
"ATV is a truly European spacecraft. Flying it requires experts from ESA, partner agencies and industry across half a dozen countries," said ESA's Bob Chesson, Head of the Human Spaceflight Operations Department.
"Getting it built, into orbit and operating it in flight to docking requires a lot of hard work and dedication from hundreds of people."


text:
Bill Marler is a lawyer specializing in food-poisoning cases, but he's an advocate for us all when it comes to food safety. Apparently I'm not the only one that thinks highly about his food-crusades:
Many people–including me–think Bill Marler is a modern-day superhero for his tireless work fighting Foodie crimes of poisonings…
Haphazard Gourmet Girls – What's Bill Marler Eating During The Chowpocalypse?
After reading Marler's interview snippets, I read the entire interview at Haphazard Gourmet Girls, and it was fascinating to read how passionate he is about food safety. Marler mentioned drinking alcohol quite a few times in the snipped quotes, but it made more sense in the HGG post, because drinking alcohol can decrease, or even prevent food poisoning.
"Mr. Marler cites a food poisoning outbreak with oysters, in which those who had drunk liquor while eating their oysters didn't get ill with a norovirus, but those who hadn't imbibed, did."
I didn't know about alcohol and food poisoning, and was able to find a few articles about it:
Red wine can 'prevent food poisoning and stomach ulcers' – Daily Mail UK
The Claim: Drinking Alcohol With a Meal Prevents Food Poisoning – NYT
Food Poisoning & Drinking Alcohol by David J. Hanson, Ph. D.
We've been drinking red wine for the resveratrol, which supposedly boosts the immune system; and because red wine lowers alanine aminotransferase (ALT), which seems to decrease the chances of fatty liver, and I'm guessing possibly even heart disease, diabetes, and Alzheimer's disease.
Now there's another reason to drink red wine with dinner: Preventing or decreasing food poisoning. Our single glass might not be as effective for preventing food poisoning as preventing fatty liver, heart disease, and boosting the immune system. But I get pretty buzzed just from the one glass, so I'll still have to depend on my food safety practices, and avoid whichever foods are poison du jour thanks to our incapable food czars.


text:
When winter rolls around, this simple recipe always comes to mind. As a side dish for a holiday dinner or for an easy, yummy addition to turkey, braised meats or even grilled tofu, everyone seems to ask for more. — Jesse Ziff Cool
Will serve 6-8 (with leftovers). Use organic ingredients whenever possible.
5 pounds sweet potatoes or yams
4 tablespoons unsalted butter
1/4 cup maple syrup
1/2 cup orange juice
1 teaspoon ground cinnamon
2 tablespoons grated ginger root
1 tablespoon chopped fresh thyme
1/2 cup mascarpone
Salt and pepper
1. Bring a large pot of water to a boil.
2. Peel the potatoes and cut into large pieces
3. Cook the potatoes for about 30 minutes or until soft
4. Meanwhile in a small saucepan, warm the butter, maple syrup, orange juice, cinnamon, ginger and thyme
5. When potatoes are cooked, drain and put into a large bowl and mash with a fork or put through a ricer
6. Fold in the ingredients in the pot
7. Fold in the mascarpone
8. Season to taste with salt and pepper
Serve immediately or put in a baking dish and warm just before serving.
Copyright © 2009 Green Right Now | Distributed by Noofangle Media
More Holiday Recipes:
- Top green cooks transform Thanksgiving dishes into natural wonders
- Organic Gardening's Shredded Brussels Sprouts with Crispy Shallots
- Jackie Newgent's Earth-Style Sweet Potato-Butter Bean Gravy with Rosemary
- Mark Bittman's Pearl Coucous Gratin with Pesto and Goat Cheese
- Myra Goodman's Easy Cranberry Sauce
- Anna Lappé's 'Green' Apple Pie
- Myra Goodman's Flaky Whole-Grain Pie Crust
- Myra Goodman's Pumpkin and Winter Squash Pie
- Myra Goodman's Sweet Pie Crust


text:
- Home
- Antivirus
- Products
- Support
- Security Center
- Company
- English ▾
Peeking into packets may darken the Internet!
As people move an increasing part of their lives into global and local networks, the development of privacy intrusion techniques and technologies faces exponential growth. The will to eavesdrop on other's private communication is reaching new heights. As this occurs, the concept of privacy is being obliterated. Privacy is under attack, giving birth to the current situation where consumer's private information is commonly considered to be an approved target. The constantly increasing demand to acquire personal and confidential information has boosted the supply of eavesdropping techniques and technology.
Government authorities are in the process of enlarging the ears and eyes of Big Brother, and their tactics have spread to other levels of the society where captured personal information can be transformed to money. Let's take a closer look at how and why some of this eavesdropping is done and the availability of existing or upcoming countermeasures against it. To do this, a basic understanding of packet capture and Deep Packet Inspection (DPI) is needed.
Internet and/or network traffic can be filtered in many ways and at many levels, just as a water tap can be installed anywhere in a water line. Deep Packet Inspection is a way to examine or parse entire captured packets of data that are passing the point of the network where the filter is set up. To keep it in simple terms, data is sent over a network in the form of packets. Each packet has a header that includes information on the packet's content. You can think of a header as an address or similar written information on a "snail mail" envelope. The packet content, the actual letter or information inside an envelope, is called packet payload. When the packet capture is set up to capture the whole DataStream at a certain point of the network, all passing packet headers and/or their payloads could be inspected for certain criteria. Government surveillance may be set up to capture packets at the Internet Service Provider level, who are bound by government laws to comply. For example, in Sweden, the FRA (the National Defense Radio Establishment) recently obtained the rights to set up such surveillance according to the newly adopted FRA law (see earlier blogs).
In the same manner, though on a smaller scale, it is possible to set up packet capture and DPI in networks ranging from enterprise level to smaller local networks (for example in schools, Internet cafes and home networks.) This kind of eavesdropping can be fully automated in order to process the captured data efficiently according to the special criteria that is set up by the service owner. There are, however, other ways to deploy this type of filtering without the need of installing and managing hardware and software at certain points of an enterprise network. Zscaler, a SaaS security provider, offers a service that has the ability to scan Web traffic leaving a company's firewall. The traffic is then redirected to Zscalers servers where it is filtered according to the wishes of the service subscriber. Almost all of the traffic can be filtered in this manner, including traffic associated with messaging, webmail and blogging (http://www.gcn.com/print/27_20/46924-1.html).
Government authorities usually justify the need of such surveillance stating that it is done in order to protect the inhabitants of a society against certain dangers, like terrorism. It may also be justified by stating that it is conducted in order to prevent industrial espionage, or in order to fight crime. Packet capture and DPI at an enterprise level may be justified as a way to fight different types of denial of service attacks (where attackers flood a service with requests in order to make it unresponsive.) DPI may also be used in order to block malicious code, viruses, worms and spyware that could be harmful for the enterprises systems. In this case, DPI is commonly used in conjunction with other protection systems, such as firewalls. Another possible usage for this technology is to monitor the web browsing habits of the users within the network, essentially tracking their network and web behavior during work hours. One might argue that it is obsolete to watch employees in this manner nowadays, as the boundaries separating company work and spare time are often woven together. One might also argue that creativity suffers, resulting in a situation where employees are not able to bloom into their full potential.
A relatively new business model now exists where DPI is used to collect data about users in order to provide tailored ads. The deep packet inspection is conducted by Internet Service Providers or different network operators. The ISP´s and network operators can access all of the traffic flowing through their networks and can therefore create different user profiles depending on the Web pages visited and services used. This could serve as an example of how the acquired personal information can be transformed into money. Some may argue that user-tailored ads are not a big deal but, in terms of revenue, they are! Serving user profiles based on personal interests, likes, and dislikes could generate big money. But at the same time, user privacy will without a doubt suffer. Take, for example, the fact that the user profile could also be colored by information about health, faith and sexual preferences. The packet payload could reveal a lot of information for the government, and different vendors on the market (insurance companies, for example.)
What's the remedy for all of this? It's a hard question to answer. Surveillance done by government authorities may be hard to influence, especially because the undistorted truth is hidden in the sphere of secrecy that surrounds these kind of agencies. The commercially driven eavesdropping services are, however, directly affected by the consumers demands. Concerned users may choose to only use services that are offered by companies that safeguard user privacy and companies that do not support buying user information in order to provide tailored advertising. It is therefore critical to thoroughly read the privacy policies of companies, services and applications in order to spot obscurities and to avoid pitfalls. I cannot stress that enough!
Encrypting data may be another way to fight back. The Finnish company Staselog states that large encrypted "Darknets" may render Deep Packet Inspection harmless (http://sakerhet.idg.se/2.1070/1.62364). Only the future will tell if the illumination of packet payload is in fact darkened by large encrypted networks where people may live their virtual lives without the fear of being eavesdropped on. If programmers were to create and follow honor codes in order to lift user privacy into the foreground when developing software, it could be helpful in keeping the "peeping Tom" trend from becoming a reality where people are forced to tiptoe in their virtual lives - lives that are, in the end, just an extension of their offline counterparts.
Lavasoft Research


text: BURLINGTON >> Numerous homes in Burlington and Harwinton will have the chance to be rehabilitated under a $300,000 Small Cities Grant awarded to the two towns, by the state of Connecticut several weeks ago. The funding, which came from the Connecticut Department of Economic & Community Development, will be available in January 2013 and homes will be ready for work to begin in the spring. Burlington First Selectman Ted Shafer and Harwinton First Selectman Mike Criss agreed that it would be beneficial for the two towns to apply for the housing rehabilitation grant together. According to Criss, this is the first time small communities have received a grant that is normally directed more towards larger communities. "Our main focus was to give more to our communities, and how can we work together to help take advantage of programs out there that are really being geared towards big cities while our funding is going away for the small towns," said Criss. Even before the town's were awarded the $300,000 grant, 15 to 20 applications per community showed interest in having their homes improved. "I have a few clients that come into my office on a weekly or every other week basis asking if we got the grant and when we are going to start it. They're really anxious to apply and have some improvements done to their homes," said Eleanor Parente, Burlington Social Services Director. "The two communities definitely demonstrated the need to the program and we just couldn't be happier to be able to try and improve quality of the lives for both of our residents," said Shafer. The process in selecting potential homes for rehabilitation will be based on eligibility and the scope and budget of the project. Homeowners will have to prove an income below the normal limit based on household size to become eligible. Once applicants are determined eligible, an inspection will be completed by Wagner's Association, a Rehabilitation Consultant the town's are using. Several home-improvement projects such as installing new boilers, roofs, septic systems, wells and windows will be the focus for many of the damaged homes. "In this down economy, we have families in our community that are struggling every day just to keep the heat on and if we can help them keep the heat on than we are going to help them and with it being no cost to the town, to the taxpayers," said Criss. "It's a win win for everybody and this is just a huge step in the right direction for our towns especially considering the towns." The housing rehabilitation project will not only benefit the homeowners in need of home improvement but also the local contractors. "This is a two-fold. It not only helps the social service end and the social needs of our community but it will also help some of our local contractors that may be struggling looking for work," said Criss. This project and many others in the past year have been the catalysts to form a teamwork environment centered around the two towns. "We here in Burlington couldn't be more happy and more proud to be working with Mike and his staff from Harwinton both on this initiative ... and other Region 10 initiatives," said Shafer."Mike and I have heard from and seen for ourselves over the past several months how the two communities are coming together in such a positive way and we look forward to working on many other projects together that will be so beneficial to all the residents." The next step will be for the town's to work with the state and send back documents for administering the grant in the fall. Sarah Bogues can be reached at 860-489-3121, ext. 328, or by email firstname.lastname@example.com


text:
As with any drug rehabilitation program, individual results will vary.
|What Graduates Say
|What Families of Graduates Say
|Public Service Announcements
Sister of Narconon Graduate
Maggie F.
She's my older sister and she's always kind of had some problems since she was a paramedic and she injured her back and I think that's kind of when everything started.
She got divorced. She just went through a lot in her life and things seemed to get worse. A lot of alcohol. And I really don't know what other drugs she was doing at the time but I knew she'd been in a really bad accident.
And after that she kind of just went into this downward spiral of drugs and alcohol. And she and I had confrontations many times. I would take her kids to come live with me or stay with me for a period.
She was totally out of control. I actually took care of her twice, put her in the ICU [Intensive Care Unit] in the hospital for overdose. And I was like you know what, she's gonna die. If I don't do something more she's gonna die.
It was so obvious but she would say, "I'm not doing any drugs, I'm not drinking, I'm not…" It's like, "Come on. I do this for a living too, you know, I've known you for so long. Even my kids know, they tell me you're acting weird." So she admitted. She's gonna go to Narconon.
I can tell you now that without reservation at all she is a totally different person.
And I can't even tell you how grateful I am. And she, she's still a part of it, you know. She shares her gift of rehab with others and, you know, helps them. She has that inside perspective of, you know, not being able to beat it, not being able to beat it and then finally it, she beat it.
She's leading a normal life. The kids love being around her. She's active in all their activities, you know. Just exponential change.


text:
Custom Oakland Raiders Punisher Theme Tee T-Shirt Tshirt
Welcome to my shop. Here you will find the latest sporting gear that are fully licensed or custom made to order (this will be clearly marked so you will know the distinction). Browse with style and find the one of a kind item that will lead your team to victory! Official items of this team is being added from time to time.
Please see the sizing chart on the image section.
Please note the following points.
- Item has a bold design that will stand out to send message to your rivals. Will last for many victories. No washing instructions required and not a iron on transfer you see so often.
- Pricing is a reflection of the special printing process as well as quality of the garment being used.
- 100% Cotton
*Please note that if you decide to choose a different available color for this item, the final outcome may not be the same as shown in the default picture.
(Please allow anywhere from 3-12 days to complete the item. May be sooner or later depending on the current workload)
All official items are purchased from actual distributors of there respected companies. All custom items are handmade to order by myself and not wholesaled to any retailers. Please note that these are not produced in large factories or overseas but in the confines of a small studio. My shop differentiates from other sellers selling custom items in that a large portion of that profit will be used to fund Official items that will be distributed on this site.


text:
Big White has 25 kilometers of combined Nordic and Wilderness trails perfect for Canadian cross country skiing and snowshoeing. For daily grooming updates, check here. Big White offers all levels of cross country skiing, from beginner to advanced, creating the impeccable adventure for your skill level.
Helpful Information
- Snowshoe on Wilderness Trails Only
- All participants must have a valid Trail Pass, Alpine Ticket or Season Pass to use the trails.
- Trail Passes can be purchased from the Ticket Office in the Village Centre Mall.
- Nordic ski equipment and snowshoes are available for rental through our Rentals department located in the Happy Valley Day Lodge.
- Dogs are permitted on the Wilderness Trails, but must remain in control and on leash at all times.
How to Get There
- From the Village Centre - take Lara's Gondola to Happy Valley, turn left across the bridge into the Adventure Centre and proceed to the trail head behind the Ice Tower.
- By Vehicle - Park in the Happy Valley Parking Lot, proceed across the bridge into the Adventure Centre and proceed to the trail head below the beginner's slope.
- 25 km (15.5 miles) of trails.
- Ticket Sales located in the Happy Valley Day Lodge.
- Hot snacks/beverages available for purchase in the Happy Valley Day Lodge, featuring Belgian Waffles, hot dogs, hot chocolate, and some other types of snack food and beverages.
- Heated Washroom facilities in the Happy Valley Day Lodge.


text:
Magazines Get Serious About Ecommerce
Magazine publishers are rapidly getting serious about ecommerce.
Earlier this month, Time Out New York, a weekly print and digital magazine covering entertainment in New York City, began selling event tickets through its website and iOS apps. And last week, Time Inc.-owned Real Simple magazine released a mobile gift guide that allows users to shop directly from the app. The next day, Elle magazine launched a shoppable trend guide on Facebook that encouraged users to make purchases on advertisers' websites.
These initiatives are enabling lifestyle magazines to explore new revenue streams as their mainstay moneymaker, print advertising, continues to decline.
It's about time. Online retailers, as we've explored, have been encroaching on magazines' territory for years now. They've hired top magazine talent — for instance, former Gourmet editor-in-chief Ruth Reichl now directs editorial at Gilt Taste, and Esquire UK editor-in-chief Jeremy Langmead is the editor of Mr Porter — and paired them with retail veterans to develop a new kind of online shopping experience, one that uses magazine-like editorials and photo spreads to drive visitors to purchase.
At Gilt Taste, for example, a story and recipe for "perfectly tender chicken" is sidelined with links to purchase Poussin Chickens, $55.95 for a set of eight. A "how to" fashion spread features items that are two clicks from a shopping cart on Park & Bond.
These sites don't come close to competing with lifestyle magazines in terms of depth and breadth of content, but they are getting there. Men could just as easily turn to Park & Bond or Mr Porter now for style advice and inspiration as Esquire or Details — and finish their shopping in one go.
Bridging the Editorial Divide
It's been relatively easy for retailers to move into the content space, particularly because they haven't had to entertain illusions of editorial objectivity. Editorial has from the beginning been posited as a bonus on these sites, a complement to the shopping experience designed to inspire and entertain shoppers.
Magazine publishers, on the other hand, have struggled to bridge this divide. How do you maintain readers' trust once you begin recommending products for which you receive a cut of every sale? Or, in the case of Time Out New York, if you become a retailer yourself?
The trick, it appears, is to position it as a service. Vogue partnered with retailer Moda Operandi during New York Fashion Week last September to "enable" readers to pre-order fashions directly from the runway — a partnership that came about through the magazine's close relationship with Moda's executive team. (Cofounder Lauren Santo Domingo is also a contributing editor at Vogue.)
Real Simple's gift guide is positioned similarly. The app features about 50 products from a range of retailers. Instead of sending users to third-party websites to make multiple purchases — which is what the vast majority of magazines do with the products mentioned on their websites or on their apps — users shop and check out directly from the app in one seamless, time-efficient experience.
"We're cutting the effort of having to hunt down the products [we recommend]," Real Simple editor-in-chief Kathleen Harris said in an interview with Mashable. "We're offering that service on top of our great editorial."
Disclosures were also essential for Vogue and Real Simple, since both receive(d) cuts of every sale.
Time Out New York's approach is slightly different. The weekly print-based publication has set up a ticket-selling shop as a separate entity, which users can access from a sidebar on timeout.com/newyork.
All of these seem to me like promising approaches: They've been smartly positioned, offering a range of merchandise without seeming to in any way compromise editorial integrity. Now we'll have to see whether they're profitable and how they evolve — and if they can move quickly enough into the space to outperform their retail-and-content competitors.
Image courtesy of Flickr, khawkins04


text:
my dreams are coming true! my christmas EP called "a very merry perri christmas" will be out october 16!!!!!!! tis the season xo
announcing... a very merry perri christmas!
August 01, 2012announcing... a very merry perri christmas!5
my christmas will be AWESOME.
my christmas will be AWESOME.. that's for SURE!! ;-)
Hurricane Isaac is in my area
Hurricane Isaac is in my area - - I am getting by though by listening to Lovestrong!!
outside of my family, I cant
outside of my family, I cant think of 2 things I love more - Christmas and the music of Christina Perri together...OH MY
Please Ceeps, come to Brazil!
Please Ceeps, come to Brazil! and omg i have to hear the new songs!
c p : Can't wait to hear
c p : Can't wait to hear very merry perri christmas. it will be a biggg seller!! we are looking forward to your philly area concert! love and god bless, dhs


text:
Mission Cantina: Danny Bowien's Foray Into Mexican Falls Short
Mission Cantina
172 Orchard Street (at Stanton; map), New York, NY 10002; 212-254-2233; missioncantinanyc.com
Setting: Small but airy with lots of neon, but more spacious than Mission Chinese
Must-Haves: Rotisserie chicken, chicken wings, hongos tacos
Service: Effortlessly cool and graceful; you're well taken care of once you get in
Compare To: Taqueria LES, La Esquina
Recommendation: Decent for the neighborhood. A far cry from the punchy flavors of Danny Bowien's Chinese cooking, but it's solid by New York standards for Mexican food.
If you read the breathless press about Mission Cantina, Danny Bowien's second New York restaurant following the blockbuster success of Mission Chinese Food, you'd be sure it'd be a hit. How could it not be, what with a chef around whom so much of the food world has spun for the last several years?
Sure enough, the restaurant's neon-lit dining room has been swarmed by food press and early adopters chomping at the bit to show proof of the meals on Twitter and Instagram. Such is the sword of celebrity that hangs over every star's head: the urgency to get it right from day one while all eyes are watching. Is that fair, to Bowien or to us eaters? Not really, but celebrities don't always control their media wave.
After a few meals at Cantina I can feel the dedication and energy going into the restaurant. But the crushing ordinariness of the food suggests it's not enough. Petite, overstuffed tacos, high on style, are wan in the punch-to-the-gut flavors that made Bowien's name. Housemade Oaxacan cheese, bland as grocery store mozzarella and plated with some useless greens, is head-scratching. The question to ask at this early stage isn't "is it good," but rather, "would we be talking about it if it were owned by someone besides Danny Bowien?"
This is not to say the food at Mission Cantina is bad—it's not. But it lacks vitality in a way that doesn't suggest new restaurant jitters as much as a lack of diligence and editing. You'd never call his food dull, but I have no other word for undercharred Rajas ($7) served with one-dimensional pickled beets and floppy greens, or that Oaxacan Cheese ($8.50) sitting doe-eyed on the plate, waiting for something to happen to it. A Salmon and Mussel Ceviche ($13) murmurs lime and chili but is soaked with enough coconut milk to put you to sleep. And Guacamole, $8 for a few ounces of bland avocado mash and underpowered salsa, fails the cloudlike crisps of fried pork skin that accompany it.
Eat in enough of New York's fancy Mexican restaurants and you get hit with sameness fatigue. Gussied-up tacos run into "enhanced" imperfect guacamole or small plates coddled into being by professorial committee. You may hope that Mission Cantina, with its more than agreeable prices and effortless downtown coolness, would break out into new territory, aligning refined technique with elemental flavor for something so delicious you can't put your fork down. It does not. For that you should still go to Empellon.
Here's what Cantina does get right: chicken. The Chicken Wings ($11) deserve plenty of love: crisp, plump, and juicy, hit with moody spices, tangy crema, cotija cheese, and sesame seeds. Expect them to join the Great New York Wings pantheon once reviews start coming in. And then there's one of Cantina's signatures: Rotisserie Chicken ($35), schmaltzy and moist, served over a heap of rice with pecans and nubs of chorizo. It serves three at least, and if you order it, dig down for extras of rice while your friends fight over the bird. That rice tastes more like chicken than most chickens.
More credit where it's due: as with Mission Chinese, the service at Mission Cantina has an easy grace. You may have fought for your reservation or waited a while for your table, but once you're seated you're in great hands.
Other than big tickets like that chicken, the mains proper are mostly tacos ($4 to $5 each; order two or three per person). Fillings like tongue, carnitas, and alambres, a jumble of cubed brisket and bacon, are beautifully tender but lack seasoning and the deep, incorruptible flavor of well-braised or grilled meat. Al pastor doesn't register much in the way of spice; braised lamb belly, though impressively gamey, doesn't have much else to offer. As for those housemade tortillas, they leave the griddle before they could delicately char into greatness, and they're lacking in sweet, toasted corn flavor—though in fairness you could say the same of virtually every tortilla made or served in New York.
Heavy mops of salsa occlude most of what's underneath them, which is a shame as they could also use a dose of acidity to wake up their flavors. My favorite tacos had no salsa at all: get the Hongos, intensely browned mushrooms with only a smear of broiled Oaxacan cheese for company. It's aggressively simple, self-contained, and more than satisfying. The rest of the taco selection, including a comically stacked fried fish number that rises three inches off the plate, would do well to learn similar restraint.
The restaurant is still waiting on its full liquor license, so cocktails have to be hardened with the likes of wine and beer. You should wait for the booze; a Dirty Horchata ($10) spiked with coffee and soju tastes like a sorority's taco night gone wrong. The Michelada ($7), jolted with a good dash of hot sauce, is a safer bet.
So what to make of Mission Cantina? It's a pleasure to eat there, the food is plenty affordable, and it tastes, well, fine. It compares easily to less ambitious spots like Taqueria Lower East Side around the corner or, say, La Esquina, and that's before you count knockouts like the rotisserie chicken. If Cantina didn't have the Bowien rep attached, it could be just another decent Mexican restaurant on the Lower East Side. Which isn't a bad thing in the slightest.
It'd be unfair to call Mission Cantina out for the count. Just like his journey into Chinese cooking, Bowien's foray into Mexican cooking may need time to fully blossom. But growing crowds are wondering—today—what the mad genius who brought us kung pao pastrami is up to next. The answer is a work in progress.
More photos in the slideshow »
Still hungry? Follow SE:NY on Twitter and Facebook, where you'll never miss a story.
All products linked here have been independently selected by our editors. We may earn a commission on purchases, as described in our affiliate policy.


text:
16 May 2013 | News | By BioSpectrum Bureau
Merck Serono, Quintiles sign five-year clinical research deal
Singapore: Merck Serono and Quintiles have signed a new, five-year clinical development agreement. This strategic collaboration is the first-of-its-kind between a biopharmaceutical company and a biopharmaceutical services provider, creating a comprehensive process that integrates the expertise and experience from both organizations into a single, well-aligned clinical development engine.
Under the terms of the agreement, Merck Serono will shape and lead the strategy of its clinical development programs, with Quintiles directing clinical trial planning and execution. Quintiles will also be a key contributor to Merck Serono's future clinical trial design activities. In this capacity, Quintiles will focus on delivering superior performance based on optimized clinical trial design and execution strategies, using highly efficient processes and proven technologies.
To fully leverage the expertise of both organizations, leaders from Quintiles will collaborate in strategic decision-making processes affecting the development of the Merck Serono portfolio.
Ms Annalisa Jenkins, executive VP and head, global development and medical, Merck Serono, said that, "This is an innovative and unique collaboration that will help to translate the highest-quality science into efficiency and agility throughout our clinical trials, while enhancing our competitive position in an increasingly challenging environment of clinical drug development."
Moving forward, Quintiles will be the sole primary provider of Merck Serono's outsourced clinical development services for its global clinical programs. The agreement will span the full spectrum of clinical development, from phase I through to post-marketing approvals. Importantly, it will also allow Merck Serono to expand its reach globally by leveraging the broad local expertise of Quintiles to implement development programs around the world.


text:
NEVADA, Mo. (AP) — Polishing off his pork and beans at the local senior center, Gentry Malcom politely passes on the peas and broccoli still sitting on his plastic food tray. He's finished eating, but not done talking about how a heart attack nearly killed him a decade ago.
Malcom is still upset about a $1,600 co-payment — that took three years to pay off — for a life-saving helicopter ride from his rural hospital to a better-equipped facility in a bigger city. He's quit smoking. But his diet hasn't changed dramatically. Exercise? "I have an excellent muscle on my clicker finger for the TV control," quips Malcom, a 69-year-old diabetic who retired after a career at a state mental hospital.
His self-assessment: "Basically, I'm pretty healthy."
His lifestyle may suggest otherwise. Though Malcom may not realize it, he and the nearly 8,400 other residents of the western Missouri city of Nevada are about to become part of an experiment testing whether a rural community that ranks near the bottom of many health indices can be transformed into a national example where the people are healthier, their doctors are more efficient and their health-care costs are lower.
In short, it's a private-sector attempt at health reform — coming as a highly-charged national debate continues to rage over the pros and cons of the Patient Protection and Affordable Care Act of 2010 (PPACA), which seeks to expand health coverage to millions of Americans through insurance mandates and enlarged government programs.
"That's great there's a health care reform bill, but really this battle has got to be fought in a local ZIP code on the ground, and sponsored by leaders locally," said Jeff Townsend, executive vice president and chief of staff at Cerner Corp., a Kansas City-based health technology firm that is spearheading the effort in Nevada.
The Healthy Nevada project will equip the local hospital with a new $10 million electronic health records system and allow patient information to be more easily shared among the town's two dozen doctors and with medical experts in bigger cities. The city of Nevada, which recently enacted a special sales tax for parks and recreation, plans to chip in with new infrastructure such as bike lanes and improved sidewalks intended to make exercise more appealing. And an educational campaign will target residents with wellness screenings, nutrition tips and friendly competitions featuring prizes for such things as the top walkers or weight-losers.
The project seeks to improve both the health of individuals and the quality of care they receive while reducing the overall amount spent on health care.
The goal is "to develop a program that's never been done before," said Carol Branham, the executive director of the Nevada Housing Authority and one of several residents on the project's coordinating committee. "We want to be that model for the rest of the United States."
Other communities already have tried certain aspects of the plan. The federal government, for example, has awarded $250 million to 17 so-called Beacon Communities that already have made progress on developing electronic health systems that allow patient records to be shared among various medical providers.
The Beacon Communities program was funded by American Recovery and Reinvestment Act of 2009 (ARRA), a law containing health system change provisions that was enacted before PPACA.
A 2009 initiative by Minneapolis-based Blue Zones L.L.C. set out to improve health and longevity in Albert Lea, Minn., by making it easier for residents to make healthier choices. The project emphasized walking, developed community gardens, removed candy bowls from offices and labeled nutritious items at restaurants and grocery stores. Similar Blue Zone efforts now are under way in several California cities and in Iowa, where the insurer Wellmark Blue Cross and Blue Shield has pledged to spend $25 million toward the governor's goal of making Iowans the healthiest residents in the nation by 2016.
What makes the Healthy Nevada project different is its simultaneous emphasis on healthy lifestyles and improved health care technology. Cerner, which hasn't said how much it will spend on the project, hopes the model can be adopted elsewhere and eventually even generate a profit.
In the years to come, "I think we're going to see more of this, and I think it's been encouraged," said Karen Donelan, a senior scientist at the Mongan Institute for Health Policy in Boston. "It's nice to know it's trickling down for a small town."
The city of Nevada, located near the Kansas border about 85 miles south of Kansas City and 50 miles north of Joplin, was chosen after Cerner reached out to the Missouri Department of Economic Development seeking leads on rural towns. Burned to the ground by Union militia during the Civil War, Nevada was rebuilt in the late 1880s as a railroad town and gained renown for its state mental asylum. But the county's population has fallen by a third since its peak in 1900, and the state has been closing its mental health facility. The largest local employer is now a 3M manufacturing plant.
The Robert Wood Johnson Foundation ranked Nevada's home of Vernon County near the bottom of Missouri counties in a variety of health factors, including smoking rates, obesity, physical inactivity and premature deaths. The city manager estimates that more than half the residents are eligible for the Medicaid health-care program for the poor, an indicator of the area's generational poverty.
"We're a typical rural Missouri town — not so healthy," said Donna Redburn, 49, the city's director of parks and recreation.
Yet the city is no slum. It has a new air conditioned community center where upward of125 kids play basketball and other games daily. Bright street signs point the way to "recreation districts," featuring playgrounds, lakes, walking trails, a baseball field, exercise facilities and a modern aquatic center. The senior center hosts meals, blood-pressure screenings, dances and periodic nutrition programs.
Although the town has a 72-bed hospital, including a maternity ward, many residents still travel to bigger cities for more serious health concerns. When 80-year-old Jay Borders needed a knee replacement last year, he went to a Joplin hospital — then returned again and again and again for follow-up visits. Each trip consumed at least a half a day.
Townsend, the Cerner executive, estimates that $120 million annually is spent on the health care of Vernon County residents by private insurers and government-run health care programs. His objective is to decrease the demand for medical care by 10% by improving people's health, and to keep an additional 10% of those health care costs in the local community through improved technology that reduces the need for patients to travel elsewhere.
City manager J.D. Kehrman hopes Nevada can move from the bottom tier to the top third in health rankings.
The intent is to "shift the focus here from sick care to prevention and one of health and wellness," Kehrman said. He adds: "I really like the idea that we can redefine the way people engage health care."


text:
On last December the Haitian government published the creation of Haiti's second Marine Protected Area (MPA) in the official journal, Le Moniteur. The new MPA is hereby called the "The Three Bays Protected Area (Parc Marin des Trois Baies)" and is located in Northeastern Haiti.
This new protected area encloses an area covering a total of close to 90,000 hectares and includes the bays of Limonade, Caracol, and Ft. Liberté, as well as the Lagon aux Boeufs.
"As with the designation of the new protected area in the southwest in August, we once again applaud the Haitian government's move to protect our natural resources (…)," stated Jean Wiener, Director of the Fondation pour la Protection de la Biodiversité Marine (FoProBiM) in Haiti. "We now need to undertake serious actions to ensure the complete commitment of local stakeholders to actively participate in the Parc's management (...)".
FoProBiM undertook the outlining of the original park boundaries in 2000, an ecosystem valuation exercise for the area in 2009 and a re-evaluation in 2013 for the Organization of American States/Department of Sustainable Development (OAS/DSD), has just finished research on local sea turtles and manatees with UNEP CAR-SPAW and the National Fish and Wildlife Foundation (NFWF), is undertaking the development of a Locally Managed Marine Area (LMMA) with the Critical Ecosystems Partnership Fund (CEPF), has just completed the areas first rapid coastal/marine/riverine bio-inventory, and actively participated in the preparation of the legal framework and final establishment of the present park boundaries to help bring about this important designation.
Hopefully the Arcadins, Baraderes, and Rochelois Marine Parks will also soon be created. These areas were also initially surveyed and outlined by FoProBiM in 2000 and it is currently undertaking various research activities nation-wide in order to provide a better understanding of the need to protect these vital ecosystems.
Founded in 1992 the Fondation pour la Protection de la Biodiversité Marine (FoProBiM) is Haiti's only coastal and marine environmental organization. It is an apolitical, non-governmental, non-profit organization founded and headquartered in Haiti and was officially recognized by the Haitian government in 1995
Contact: Jean Wiener, firstname.lastname@example.com


text:
Leave a Comment
The Chinese gaming market continues to grow hand over fist. There's a massive amount of gamers flocking to the market and a massive amount of yuan flowing into the pockets of anxiously opportunistic publishers. How much money is flowing into their pockets? Try $13 billion on for size.
Rivaling the likes of the North American or EMEA video game markets, China's emerging industry of interactive entertainment is growing exponentially every year on end.
GamesIndustry.biz has a brief report from a Games In Asia translation that helps identify and expound the financial propensity of the Chinese gaming market.
The overall industry brought the region a massive 87 billion yuan for fiscal 2013, which rounds out to $13 billion in U.S., dollars. It's also up 38 percent in year-over-year revenue.
The data shows that $8.87 billion, or 64 percent of the total sales, were from client-based PC games. However, the data doesn't denote if that means client-based MMOs or client-based standalone games. I'm going to assume they clumped both categories of games in together.
$2.11 billion was racked in from browser-based games, making up for barely 15 percent of the intake.
On the lower-end of the spectrum was the mobile games sector, accounting for only 13.5 percent of the market share with $1.86 billion. This bit of information might be surprising to all those pro-mobile analysts, as they've been egging Nintendo about dying to smartphones and tablets and constantly claiming that portable phone devices are the wave of the future for video games, but this data ties into two-year old data that shows that mobile gaming is not gaining nor overtaking the core games sector.
The bottom of the list, as far as revenue intake is concerned, is the social and console games market. In China, both categories of games only managed $890 million. A lot of that is due to the stringent restrictions on console devices being sold in mainland China, although there are some diplomatic import levies being looked at to allow for Sony, Microsoft and Nintendo to share a much stronger presence in the consumer market in mainland China.
It's interesting because the GI.biz article notes that there was a 43 percent increase in the financial growth rate of the market in China from 2009, where the intake was only $4.3 billion, but China generated $6 billion in 2011 and a massive $9.1 billion in 2012.
Funnily enough, analysts like the Niko Group capped the Chinese game market at $11.9 billion in their estimates, but today we see that they actually surpassed that estimate by $1.1 billion. Very impressive.


text:
Russian artist and designer Gosha Rubchinskiy is back for Fall/Winter 2012. After having stopped working on fashion for about a year, except for a collaboration with Altamont, COMME des GARCONS has stepped in and helped the young creative to re-enter the fashion market, by taking care of his production. Known for his artistic approach, close relationship with skate culture and just overall rather unique stance in the otherwise rather bling obsessed Russion fashion scene, we are glad to have him back on the map.
Dover Street Market in London has just received the new Gosha Rubchinskiy Fall/Winter 2012 Collection, mostly consisting of hoodies, t-shirts, crewneck sweaters and rugby shirts. Bold graphics and colors make the collection quite a statement.
DazedDigital talked to the young artist and designer. Read it here.


text:
Adicionar o seu sítio de notícias favorito¶
calibre has a powerful, flexible and easy-to-use framework for downloading news from the Internet and converting it into an e-book. The following will show you, by means of examples, how to get news from various websites.
To gain an understanding of how to use the framework, follow the examples in the order listed below:
Completely automatic fetching¶
If your news source is simple enough, calibre may well be able to fetch it completely automatically, all you need to do is provide the URL. calibre gathers all the information needed to download a news source into a recipe. In order to tell calibre about a news source, you have to create a recipe for it. Let's see some examples:
O blogue do Calibre¶
The calibre blog is a blog of posts that describe many useful calibre features in a simple and accessible way for new calibre users. In order to download this blog into an e-book, we rely on the RSS feed of the blog:
I got the RSS URL by looking under «Subscribe to» at the bottom of the blog page and choosing Posts → Atom. To make calibre download the feeds and convert them into an e-book, you should right click the Fetch news button and then the Add a custom news source menu item and then the New Recipe button. A dialog similar to that shown below should open up.
First enter
Calibre Blog into the Recipe title field. This will be the title of the e-book that will be created from the articles in the above feeds.
The next two fields (Oldest article and Max. number of articles) allow you some control over how many articles should be downloaded from each feed, and they are pretty self explanatory.
To add the feeds to the recipe, enter the feed title and the feed URL and click the Add feed button. Once you have added the feed, simply click the Save button and you're done! Close the dialog.
To test your new recipe, click the Fetch news button and in the Custom news sources sub-menu click calibre Blog. After a couple of minutes, the newly downloaded e-book of blog posts will appear in the main library view (if you have your reader connected, it will be put onto the reader instead of into the library). Select it and hit the View button to read!
The reason this worked so well, with so little effort is that the blog provides full-content RSS feeds, i.e., the article content is embedded in the feed itself. For most news sources that provide news in this fashion, with full-content feeds, you don't need any more effort to convert them to e-books. Now we will look at a news source that does not provide full content feeds. In such feeds, the full article is a webpage and the feed only contains a link to the webpage with a short summary of the article.
Vamos tentar os dois sinais seguintes a partir de The BBC:
Follow the procedure outlined in O blogue do Calibre above to create a recipe for The BBC (using the feeds above). Looking at the downloaded e-book, we see that calibre has done a creditable job of extracting only the content you care about from each article's webpage. However, the extraction process is not perfect. Sometimes it leaves in undesirable content like menus and navigation aids or it removes content that should have been left alone, like article headings. In order, to have perfect content extraction, we will need to customize the fetch process, as described in the next section.
Personalizar o processo de obtenção¶
When you want to perfect the download process, or download content from a particularly complex website, you can avail yourself of all the power and flexibility of the recipe framework. In order to do that, in the Add custom news sources dialog, simply click the Switch to Advanced mode button.
The easiest and often most productive customization is to use the print version of the online articles. The print version typically has much less cruft and translates much more smoothly to an e-book. Let's try to use the print version of the articles from The BBC.
Utilizar a versão impressa da bbc.co.uk¶
The first step is to look at the e-book we downloaded previously from bbc.co.uk. At the end of each article, in the e-book is a little blurb telling you where the article was downloaded from. Copy and paste that URL into a browser. Now on the article webpage look for a link that points to the «Printable version». Click it to see the print version of the article. It looks much neater! Now compare the two URLs. For me they were:
So it looks like to get the print version, we need to prefix every article URL with:
Now in the Advanced Mode of the Custom news sources dialog, you should see something like (remember to select The BBC recipe before switching to advanced mode):
You can see that the fields from the Basic mode have been translated to Python code in a straightforward manner. We need to add instructions to this recipe to use the print version of the articles. All that's needed is to add the following two lines:
def print_version(self, url):
return url.replace('https://', 'https://newsvote.bbc.co.uk/mpapps/pagetools/print/')
This is Python, so indentation is important. After you've added the lines, it should look like:
In the above,
def print_version(self, url) defines a method that is called by calibre for every article.
url is the URL of the original article. What
print_version does is take that url and replace it with the new URL that points to the print version of the article. To learn about Python see the tutorial.
Now, click the Add/update recipe button and your changes will be saved. Re-download the e-book. You should have a much improved e-book. One of the problems with the new version is that the fonts on the print version webpage are too small. This is automatically fixed when converting to an e-book, but even after the fixing process, the font size of the menus and navigation bar to become too large relative to the article text. To fix this, we will do some more customization, in the next section.
Substituir estilos de artigo¶
In the previous section, we saw that the font size for articles from the print version of The BBC was too small. In most websites, The BBC included, this font size is set by means of CSS stylesheets. We can disable the fetching of such stylesheets by adding the line:
no_stylesheets = True
A receita tem agora esta aparência:
The new version looks pretty good. If you're a perfectionist, you'll want to read the next section, which deals with actually modifying the downloaded content.
Fatiar e cortar em secções¶
calibre contains very powerful and flexible abilities when it comes to manipulating downloaded content. To show off a couple of these, let's look at our old friend the The BBC recipe again. Looking at the source code (HTML) of a couple of articles (print version), we see that they have a footer that contains no useful information, contained in
<div class="footer">
Isto pode ser removido adicionando:
remove_tags = [dict(name='div', attrs={'class':'footer'})]
to the recipe. Finally, lets replace some of the CSS that we disabled earlier, with our own CSS that is suitable for conversion to an e-book:
extra_css = '.headline {font-size: x-large;} \n .fact { padding-top: 10pt }'
With these additions, our recipe has become «production quality», indeed it is very close to the actual recipe used by calibre for the BBC, shown below:
# Title: BBC News, Sport, and Blog Calibre Recipe
# Contact: mattst - firstname.lastname@example.com
# License: GNU General Public License v3 - https://www.gnu.org/copyleft/gpl.html
# Copyright: mattst - email@example.com
# Written: November 2011
# Last Edited: 2011-11-19
__license__ = 'GNU General Public License v3 - https://www.gnu.org/copyleft/gpl.html'
__copyright__ = 'mattst - email@example.com'
BBC News, Sport, and Blog Calibre Recipe
# Import the regular expressions module.
import re
# Import the BasicNewsRecipe class which this class extends.
from calibre.web.feeds.recipes import BasicNewsRecipe
def classes(classes):
q = frozenset(classes.split(' '))
return dict(attrs={
'class': lambda x: x and frozenset(x.split()).intersection(q)})
class BBCNews(BasicNewsRecipe):
# First select the feeds you want then scroll down below the feeds list
# and select the values you want for the other user preferences, like
# oldest_article and such like.
# Select the BBC rss feeds which you want in your ebook.
# Selected feed have NO '#' at their start, de-selected feeds begin with a '#'.
# Eg. ("News Home", "https://feeds.bbci.co.uk/... - include feed.
# Eg. #("News Home", "https://feeds.bbci.co.uk/... - do not include feed.
# There are 68 feeds below which constitute the bulk of the available rss
# feeds on the BBC web site. These include 5 blogs by editors and
# correspondents, 16 sports feeds, 15 'sub' regional feeds (Eg. North West
# Wales, Scotland Business), and 7 Welsh language feeds.
# Some of the feeds are low volume (Eg. blogs), or very low volume (Eg. Click)
# so if "oldest_article = 1.5" (only articles published in the last 36 hours)
# you may get some 'empty feeds' which will not then be included in the ebook.
# The 15 feeds currently selected below are simply my default ones.
# Note: With all 68 feeds selected, oldest_article set to 2,
# max_articles_per_feed set to 100, and simultaneous_downloads set to 10,
# the ebook creation took 29 minutes on my speedy 100 mbps net connection,
# fairly high-end desktop PC running Linux (Ubuntu Lucid-Lynx).
# More realistically with 15 feeds selected, oldest_article set to 1.5,
# max_articles_per_feed set to 100, and simultaneous_downloads set to 20,
# it took 6 minutes. If that's too slow increase 'simultaneous_downloads'.
# Select / de-select the feeds you want in your ebook.
feeds = [
("News Home", "https://feeds.bbci.co.uk/news/rss.xml"),
("UK", "https://feeds.bbci.co.uk/news/uk/rss.xml"),
("World", "https://feeds.bbci.co.uk/news/world/rss.xml"),
# ("England", "https://feeds.bbci.co.uk/news/england/rss.xml"),
# ("Scotland", "https://feeds.bbci.co.uk/news/scotland/rss.xml"),
# ("Wales", "https://feeds.bbci.co.uk/news/wales/rss.xml"),
# ("N. Ireland", "https://feeds.bbci.co.uk/news/northern_ireland/rss.xml"),
# ("Africa", "https://feeds.bbci.co.uk/news/world/africa/rss.xml"),
# ("Asia", "https://feeds.bbci.co.uk/news/world/asia/rss.xml"),
# ("Europe", "https://feeds.bbci.co.uk/news/world/europe/rss.xml"),
# ("Latin America", "https://feeds.bbci.co.uk/news/world/latin_america/rss.xml"),
# ("Middle East", "https://feeds.bbci.co.uk/news/world/middle_east/rss.xml"),
("US & Canada", "https://feeds.bbci.co.uk/news/world/us_and_canada/rss.xml"),
("Politics", "https://feeds.bbci.co.uk/news/politics/rss.xml"),
("Technology", "https://feeds.bbci.co.uk/news/technology/rss.xml"),
("Magazine", "https://feeds.bbci.co.uk/news/magazine/rss.xml"),
# ("Health", "https://feeds.bbci.co.uk/news/health/rss.xml"),
# ("Education/Family", "https://feeds.bbci.co.uk/news/education/rss.xml"),
("Business", "https://feeds.bbci.co.uk/news/business/rss.xml"),
("Special Reports", "https://feeds.bbci.co.uk/news/special_reports/rss.xml"),
("Also in the News", "https://feeds.bbci.co.uk/news/also_in_the_news/rss.xml"),
# ("Newsbeat", "https://www.bbc.co.uk/newsbeat/rss.xml"),
# ("Click", "https://newsrss.bbc.co.uk/rss/newsonline_uk_edition/programmes/click_online/rss.xml"),
# ("Blog: Mark D'Arcy (Parliamentary Correspondent)", "https://feeds.bbci.co.uk/news/correspondents/markdarcy/rss.sxml"),
# ("Blog: Robert Peston (Business Editor)", "https://feeds.bbci.co.uk/news/correspondents/robertpeston/rss.sxml"),
# ("Blog: Stephanie Flanders (Economics Editor)", "https://feeds.bbci.co.uk/news/correspondents/stephanieflanders/rss.sxml"),
("Sport Front Page",
# ("Football", "https://newsrss.bbc.co.uk/rss/sportonline_uk_edition/football/rss.xml"),
# ("Cricket", "https://newsrss.bbc.co.uk/rss/sportonline_uk_edition/cricket/rss.xml"),
# ("Rugby Union", "https://newsrss.bbc.co.uk/rss/sportonline_uk_edition/rugby_union/rss.xml"),
# ("Rugby League", "https://newsrss.bbc.co.uk/rss/sportonline_uk_edition/rugby_league/rss.xml"),
# ("Tennis", "https://newsrss.bbc.co.uk/rss/sportonline_uk_edition/tennis/rss.xml"),
# ("Golf", "https://newsrss.bbc.co.uk/rss/sportonline_uk_edition/golf/rss.xml"),
# ("Motorsport", "https://newsrss.bbc.co.uk/rss/sportonline_uk_edition/motorsport/rss.xml"),
# ("Boxing", "https://newsrss.bbc.co.uk/rss/sportonline_uk_edition/boxing/rss.xml"),
# ("Athletics", "https://newsrss.bbc.co.uk/rss/sportonline_uk_edition/athletics/rss.xml"),
# ("Snooker", "https://newsrss.bbc.co.uk/rss/sportonline_uk_edition/other_sports/snooker/rss.xml"),
# ("Horse Racing", "https://newsrss.bbc.co.uk/rss/sportonline_uk_edition/other_sports/horse_racing/rss.xml"),
# ("Cycling", "https://newsrss.bbc.co.uk/rss/sportonline_uk_edition/other_sports/cycling/rss.xml"),
# ("Disability Sport", "https://newsrss.bbc.co.uk/rss/sportonline_uk_edition/other_sports/disability_sport/rss.xml"),
# ("Other Sport", "https://newsrss.bbc.co.uk/rss/sportonline_uk_edition/other_sports/rss.xml"),
# ("Olympics 2012", "https://newsrss.bbc.co.uk/rss/sportonline_uk_edition/other_sports/olympics_2012/rss.xml"),
# ("N. Ireland Politics", "https://feeds.bbci.co.uk/news/northern_ireland/northern_ireland_politics/rss.xml"),
# ("Scotland Politics", "https://feeds.bbci.co.uk/news/scotland/scotland_politics/rss.xml"),
# ("Scotland Business", "https://feeds.bbci.co.uk/news/scotland/scotland_business/rss.xml"),
# ("E. Scotland, Edinburgh & Fife", "https://feeds.bbci.co.uk/news/scotland/edinburgh_east_and_fife/rss.xml"),
# ("W. Scotland & Glasgow", "https://feeds.bbci.co.uk/news/scotland/glasgow_and_west/rss.xml"),
# ("Highlands & Islands", "https://feeds.bbci.co.uk/news/scotland/highlands_and_islands/rss.xml"),
# ("NE. Scotland, Orkney & Shetland", "https://feeds.bbci.co.uk/news/scotland/north_east_orkney_and_shetland/rss.xml"),
# ("South Scotland", "https://feeds.bbci.co.uk/news/scotland/south_scotland/rss.xml"),
# ("Central Scotland & Tayside", "https://feeds.bbci.co.uk/news/scotland/tayside_and_central/rss.xml"),
# ("Wales Politics", "https://feeds.bbci.co.uk/news/wales/wales_politics/rss.xml"),
# ("NW. Wales", "https://feeds.bbci.co.uk/news/wales/north_west_wales/rss.xml"),
# ("NE. Wales", "https://feeds.bbci.co.uk/news/wales/north_east_wales/rss.xml"),
# ("Mid. Wales", "https://feeds.bbci.co.uk/news/wales/mid_wales/rss.xml"),
# ("SW. Wales", "https://feeds.bbci.co.uk/news/wales/south_west_wales/rss.xml"),
# ("SE. Wales", "https://feeds.bbci.co.uk/news/wales/south_east_wales/rss.xml"),
# ("Newyddion - News in Welsh", "https://feeds.bbci.co.uk/newyddion/rss.xml"),
# ("Gwleidyddiaeth", "https://feeds.bbci.co.uk/newyddion/gwleidyddiaeth/rss.xml"),
# ("Gogledd-Ddwyrain", "https://feeds.bbci.co.uk/newyddion/gogledd-ddwyrain/rss.xml"),
# ("Gogledd-Orllewin", "https://feeds.bbci.co.uk/newyddion/gogledd-orllewin/rss.xml"),
# ("Canolbarth", "https://feeds.bbci.co.uk/newyddion/canolbarth/rss.xml"),
# ("De-Ddwyrain", "https://feeds.bbci.co.uk/newyddion/de-ddwyrain/rss.xml"),
# ("De-Orllewin", "https://feeds.bbci.co.uk/newyddion/de-orllewin/rss.xml"),
# Title to use for the ebook.
title = 'BBC News'
# A brief description for the ebook.
description = u'BBC web site ebook created using rss feeds.'
# The max number of articles which may be downloaded from each feed.
# I've never seen more than about 70 articles in a single feed in the
# BBC feeds.
max_articles_per_feed = 100
# The max age of articles which may be downloaded from each feed. This is
# specified in days - note fractions of days are allowed, Eg. 2.5 (2 and a
# half days). My default of 1.5 days is the last 36 hours, the point at
# which I've decided 'news' becomes 'old news', but be warned this is not
# so good for the blogs, technology, magazine, etc., and sports feeds.
# You may wish to extend this to 2-5 but watch out ebook creation time will
# increase as well. Setting this to 30 will get everything (AFAICT) as long
# as max_articles_per_feed remains set high (except for 'Click' which is
# v. low volume and its currently oldest article is 4th Feb 2011).
oldest_article = 1.5
# Number of simultaneous downloads. 20 is consistantly working fine on the
# BBC News feeds with no problems. Speeds things up from the defualt of 5.
# If you have a lot of feeds and/or have increased oldest_article above 2
# then you may wish to try increasing simultaneous_downloads to 25-30,
# Or, of course, if you are in a hurry. [I've not tried beyond 20.]
simultaneous_downloads = 20
# Timeout for fetching files from the server in seconds. The default of
# 120 seconds, seems somewhat excessive.
timeout = 30
# The format string for the date shown on the ebook's first page.
# List of all values: https://docs.python.org/library/time.html
# Default in news.py has a leading space so that's mirrored here.
# As with 'feeds' select/de-select by adding/removing the initial '#',
# only one timefmt should be selected, here's a few to choose from.
# [Fri, 14 Nov 2011] (Calibre default)
timefmt = ' [%a, %d %b %Y]'
# timefmt = ' [%a, %d %b %Y %H:%M]' # [Fri, 14 Nov 2011 18:30]
# timefmt = ' [%a, %d %b %Y %I:%M %p]' # [Fri, 14 Nov 2011 06:30 PM]
# timefmt = ' [%d %b %Y]' # [14 Nov 2011]
# timefmt = ' [%d %b %Y %H:%M]' # [14 Nov 2011 18.30]
# timefmt = ' [%Y-%m-%d]' # [2011-11-14]
# timefmt = ' [%Y-%m-%d-%H-%M]' # [2011-11-14-18-30]
# Author of this recipe.
__author__ = 'mattst'
# Specify English as the language of the RSS feeds (ISO-639 code).
language = 'en_GB'
# Set tags.
tags = 'news, sport, blog'
# Set publisher and publication type.
publisher = 'BBC'
publication_type = 'newspaper'
# Disable stylesheets from site.
no_stylesheets = True
# Specifies an override encoding for sites that have an incorrect charset
# specified. Default of 'None' says to auto-detect. Some other BBC recipes
# use 'utf8', which works fine (so use that if necessary) but auto-detecting
# with None is working fine, so stick with that for robustness.
encoding = None
# Sets whether a feed has full articles embedded in it. The BBC feeds do
# not.
use_embedded_content = False
# Removes empty feeds - why keep them!?
remove_empty_feeds = True
ignore_duplicate_articles = {'title', 'url'}
resolve_internal_links = True
# Create a custom title which fits nicely in the Kindle title list.
# Requires "import time" above class declaration, and replacing
# title with custom_title in conversion_options (right column only).
# Example of string below: "BBC News - 14 Nov 2011"
# custom_title = "BBC News - " + time.strftime('%d %b %Y')
# Conversion options for advanced users. Avoid setting 'linearize_tables'
# as that plays havoc with the 'old style' table based pages.
conversion_options = {
# 'title' : title,
# 'comments' : description,
# 'tags' : tags,
# 'language' : language,
# 'publisher' : publisher,
# 'authors' : publisher,
'smarten_punctuation' : True
# Specify extra CSS - overrides ALL other CSS (IE. Added last).
extra_css = 'body { font-family: verdana, helvetica, sans-serif; } \
.introduction, .first { font-weight: bold; } \
.cross-head { font-weight: bold; font-size: 125%; } \
.cap, .caption { display: block; font-size: 80%; font-style: italic; } \
.cap, .caption, .caption img, .caption span { display: block; text-align: center; margin: 5px auto; } \
.byl, .byd, .byline img, .byline-name, .byline-title, .author-name, .author-position, \
.correspondent-portrait img, .byline-lead-in, .name, .bbc-role { display: block; \
text-align: center; font-size: 80%; font-style: italic; margin: 1px auto; } \
.story-date, .published { font-size: 80%; } \
table { width: 100%; } \
td img { display: block; margin: 5px auto; } \
ul { padding-top: 10px; } \
ol { padding-top: 10px; } \
li { padding-top: 5px; padding-bottom: 5px; } \
h1 { text-align: center; font-size: 175%; font-weight: bold; } \
h2 { text-align: center; font-size: 150%; font-weight: bold; } \
h3 { text-align: center; font-size: 125%; font-weight: bold; } \
h4, h5, h6 { text-align: center; font-size: 100%; font-weight: bold; }'
# Remove various tag attributes to improve the look of the ebook pages.
remove_attributes = ['border', 'cellspacing', 'align', 'cellpadding', 'colspan',
'valign', 'vspace', 'hspace', 'alt', 'width', 'height']
# Remove the (admittedly rarely used) line breaks, "<br />", which sometimes
# cause a section of the ebook to start in an unsightly fashion or, more
# frequently, a "<br />" will muck up the formatting of a correspondant's byline.
# "<br />" and "<br clear/>" are far more frequently used on the table formatted
# style of pages, and really spoil the look of the ebook pages.
preprocess_regexps = [(re.compile(r'<br[ ]*/>', re.IGNORECASE), lambda m: ''),
(re.compile(r'<br[ ]*clear.*/>', re.IGNORECASE), lambda m: '')]
# Create regular expressions for tag keeping and removal to make the matches more
# robust against minor changes and errors in the HTML, Eg. double spaces, leading
# and trailing spaces, missing hyphens, and such like.
# Python regular expression ('re' class) page:
# https://docs.python.org/library/re.html
# ***************************************
# Regular expressions for keep_only_tags:
# ***************************************
# The BBC News HTML pages use variants of 'storybody' to denote the section of a HTML
# page which contains the main text of the article. Match storybody variants: 'storybody',
# 'story-body', 'story body','storybody ', etc.
storybody_reg_exp = '^.*story[_ -]*body.*$'
# The BBC sport and 'newsbeat' (features) HTML pages use 'blq_content' to hold the title
# and published date. This is one level above the usual news pages which have the title
# and date within 'story-body'. This is annoying since 'blq_content' must also be kept,
# resulting in a lot of extra things to be removed by remove_tags.
blq_content_reg_exp = '^.*blq[_ -]*content.*$'
# The BBC has an alternative page design structure, which I suspect is an out-of-date
# design but which is still used in some articles, Eg. 'Click' (technology), 'FastTrack'
# (travel), and in some sport pages. These alternative pages are table based (which is
# why I think they are an out-of-date design) and account for -I'm guesstimaking- less
# than 1% of all articles. They use a table class 'storycontent' to hold the article
# and like blq_content (above) have required lots of extra removal by
# remove_tags.
story_content_reg_exp = '^.*story[_ -]*content.*$'
# Keep the sections of the HTML which match the list below. The HTML page created by
# Calibre will fill <body> with those sections which are matched. Note that the
# blq_content_reg_exp must be listed before storybody_reg_exp in keep_only_tags due to
# it being the parent of storybody_reg_exp, that is to say the div class/id 'story-body'
# will be inside div class/id 'blq_content' in the HTML (if 'blq_content' is there at
# all). If they are the other way around in keep_only_tags then blq_content_reg_exp
# will end up being discarded.
keep_only_tags = [dict(name='table', attrs={'class': re.compile(story_content_reg_exp, re.IGNORECASE)}),
dict(name='div', attrs={'class': re.compile(
blq_content_reg_exp, re.IGNORECASE)}),
dict(name='div', attrs={'id': re.compile(
blq_content_reg_exp, re.IGNORECASE)}),
dict(name='div', attrs={'class': re.compile(
storybody_reg_exp, re.IGNORECASE)}),
dict(name='div', attrs={'id': re.compile(storybody_reg_exp, re.IGNORECASE)})]
# ************************************
# Regular expressions for remove_tags:
# ************************************
# Regular expression to remove share-help and variant tags. The share-help class
# is used by the site for a variety of 'sharing' type links, Eg. Facebook, delicious,
# twitter, email. Removed to avoid page clutter.
share_help_reg_exp = '^.*share[_ -]*help.*$'
# Regular expression to remove embedded-hyper and variant tags. This class is used to
# display links to other BBC News articles on the same/similar subject.
embedded_hyper_reg_exp = '^.*embed*ed[_ -]*hyper.*$'
# Regular expression to remove hypertabs and variant tags. This class is used to
# display a tab bar at the top of an article which allows the user to switch to
# an article (viewed on the same page) providing further info., 'in depth' analysis,
# an editorial, a correspondant's blog entry, and such like. The ability to handle
# a tab bar of this nature is currently beyond the scope of this recipe and
# possibly of Calibre itself (not sure about that - TO DO - check!).
hypertabs_reg_exp = '^.*hyper[_ -]*tabs.*$'
# Regular expression to remove story-feature and variant tags. Eg. 'story-feature',
# 'story-feature related narrow', 'story-feature wide', 'story-feature narrow'.
# This class is used to add additional info. boxes, or small lists, outside of
# the main story. TO DO: Work out a way to incorporate these neatly.
story_feature_reg_exp = '^.*story[_ -]*feature.*$'
# Regular expression to remove video and variant tags, Eg. 'videoInStoryB',
# 'videoInStoryC'. This class is used to embed video.
video_reg_exp = '^.*video.*$'
# Regular expression to remove audio and variant tags, Eg. 'audioInStoryD'.
# This class is used to embed audio.
audio_reg_exp = '^.*audio.*$'
# Regular expression to remove pictureGallery and variant tags, Eg. 'pictureGallery'.
# This class is used to embed a photo slideshow. See also 'slideshow'
# below.
picture_gallery_reg_exp = '^.*picture.*$'
# Regular expression to remove slideshow and variant tags, Eg. 'dslideshow-enclosure'.
# This class is used to embed a slideshow (not necessarily photo) but both
# 'slideshow' and 'pictureGallery' are used for slideshows.
slideshow_reg_exp = '^.*slide[_ -]*show.*$'
# Regular expression to remove social-links and variant tags. This class is used to
# display links to a BBC bloggers main page, used in various columnist's blogs
# (Eg. Nick Robinson, Robert Preston).
social_links_reg_exp = '^.*social[_ -]*links.*$'
# Regular expression to remove quote and (multi) variant tags, Eg. 'quote',
# 'endquote', 'quote-credit', 'quote-credit-title', etc. These are usually
# removed by 'story-feature' removal (as they are usually within them), but
# not always. The quotation removed is always (AFAICT) in the article text
# as well but a 2nd copy is placed in a quote tag to draw attention to it.
# The quote class tags may or may not appear in div's.
quote_reg_exp = '^.*quote.*$'
# Regular expression to remove hidden and variant tags, Eg. 'hidden'.
# The purpose of these is unclear, they seem to be an internal link to a
# section within the article, but the text of the link (Eg. 'Continue reading
# the main story') never seems to be displayed anyway. Removed to avoid clutter.
# The hidden class tags may or may not appear in div's.
hidden_reg_exp = '^.*hidden.*$'
# Regular expression to remove comment and variant tags, Eg. 'comment-introduction'.
# Used on the site to display text about registered users entering
# comments.
comment_reg_exp = '^.*comment.*$'
# Regular expression to remove form and variant tags, Eg. 'comment-form'.
# Used on the site to allow registered BBC users to fill in forms, typically
# for entering comments about an article.
form_reg_exp = '^.*form.*$'
# Extra things to remove due to the addition of 'blq_content' in
# keep_only_tags.
# <div class="story-actions"> Used on sports pages for 'email' and 'print'.
story_actions_reg_exp = '^.*story[_ -]*actions.*$'
# <div class="bookmark-list"> Used on sports pages instead of 'share-help' (for
# social networking links).
bookmark_list_reg_exp = '^.*bookmark[_ -]*list.*$'
# <div id="secondary-content" class="content-group">
# NOTE: Don't remove class="content-group" that is needed.
# Used on sports pages to link to 'similar stories'.
secondary_content_reg_exp = '^.*secondary[_ -]*content.*$'
# <div id="featured-content" class="content-group">
# NOTE: Don't remove class="content-group" that is needed.
# Used on sports pages to link to pages like 'tables', 'fixtures', etc.
featured_content_reg_exp = '^.*featured[_ -]*content.*$'
# <div id="navigation">
# Used on sports pages to link to pages like 'tables', 'fixtures', etc.
# Used sometimes instead of "featured-content" above.
navigation_reg_exp = '^.*navigation.*$'
# <a class="skip" href="#blq-container-inner">Skip to top</a>
# Used on sports pages to link to the top of the page.
skip_reg_exp = '^.*skip.*$'
# Extra things to remove due to the addition of 'storycontent' in keep_only_tags,
# which are the alterative table design based pages. The purpose of some of these
# is not entirely clear from the pages (which are a total mess!).
# Remove mapping based tags, Eg. <map id="world_map">
# The dynamic maps don't seem to work during ebook creation. TO DO:
# Investigate.
map_reg_exp = '^.*map.*$'
# Remove social bookmarking variation, called 'socialBookMarks'.
social_bookmarks_reg_exp = '^.*social[_ -]*bookmarks.*$'
# Remove page navigation tools, like 'search', 'email', 'print', called
# 'blq-mast'.
blq_mast_reg_exp = '^.*blq[_ -]*mast.*$'
# Remove 'sharesb', I think this is a generic 'sharing' class. It seems to appear
# alongside 'socialBookMarks' whenever that appears. I am removing it as well
# under the assumption that it can appear alone as well.
sharesb_reg_exp = '^.*sharesb.*$'
# Remove class 'o'. The worst named user created css class of all time. The creator
# should immediately be fired. I've seen it used to hold nothing at all but with
# 20 or so empty lines in it. Also to hold a single link to another article.
# Whatever it was designed to do it is not wanted by this recipe. Exact
# match only.
o_reg_exp = '^o$'
# Remove 'promotopbg' and 'promobottombg', link lists. Have decided to
# use two reg expressions to make removing this (and variants) robust.
promo_top_reg_exp = '^.*promotopbg.*$'
promo_bottom_reg_exp = '^.*promobottombg.*$'
# Remove 'nlp', provides heading for link lists. Requires an exact match due to
# risk of matching those letters in something needed, unless I see a variation
# of 'nlp' used at a later date.
nlp_reg_exp = '^nlp$'
# Remove 'mva', provides embedded floating content of various types. Variant 'mvb'
# has also now been seen. Requires an exact match of 'mva' or 'mvb' due to risk of
# matching those letters in something needed.
mva_or_mvb_reg_exp = '^mv[ab]$'
# Remove 'mvtb', seems to be page navigation tools, like 'blq-mast'.
mvtb_reg_exp = '^mvtb$'
# Remove 'blq-toplink', class to provide a link to the top of the page.
blq_toplink_reg_exp = '^.*blq[_ -]*top[_ -]*link.*$'
# Remove 'products and services' links, Eg. desktop tools, alerts, and so on.
# Eg. Class="servicev4 ukfs_services" - what a mess of a name. Have decided to
# use two reg expressions to make removing this (and variants) robust.
prods_services_01_reg_exp = '^.*servicev4.*$'
prods_services_02_reg_exp = '^.*ukfs[_ -]*services.*$'
# Remove -what I think is- some kind of navigation tools helper class, though I am
# not sure, it's called: 'blq-rst blq-new-nav'. What I do know is it pops up
# frequently and it is not wanted. Have decided to use two reg expressions to make
# removing this (and variants) robust.
blq_misc_01_reg_exp = '^.*blq[_ -]*rst.*$'
blq_misc_02_reg_exp = '^.*blq[_ -]*new[_ -]*nav.*$'
# Remove 'puffbox' - this may only appear inside 'storyextra', so it may not
# need removing - I have no clue what it does other than it contains links.
# Whatever it is - it is not part of the article and is not wanted.
puffbox_reg_exp = '^.*puffbox.*$'
# Remove 'sibtbg' and 'sibtbgf' - some kind of table formatting classes.
sibtbg_reg_exp = '^.*sibtbg.*$'
# Remove 'storyextra' - links to relevant articles and external sites.
storyextra_reg_exp = '^.*story[_ -]*extra.*$'
remove_tags = [
classes('sharetools share-tools--no-event-tag'),
dict(name='div', attrs={'class': re.compile(story_feature_reg_exp, re.IGNORECASE)}),
dict(name='div', attrs={'class': re.compile(
share_help_reg_exp, re.IGNORECASE)}),
dict(name='div', attrs={'class': re.compile(
embedded_hyper_reg_exp, re.IGNORECASE)}),
dict(name='div', attrs={'class': re.compile(
hypertabs_reg_exp, re.IGNORECASE)}),
dict(name='div', attrs={'class': re.compile(
video_reg_exp, re.IGNORECASE)}),
dict(name='div', attrs={'class': re.compile(
audio_reg_exp, re.IGNORECASE)}),
dict(name='div', attrs={'class': re.compile(
picture_gallery_reg_exp, re.IGNORECASE)}),
dict(name='div', attrs={'class': re.compile(
slideshow_reg_exp, re.IGNORECASE)}),
dict(name='div', attrs={'class': re.compile(
quote_reg_exp, re.IGNORECASE)}),
dict(name='div', attrs={'class': re.compile(
hidden_reg_exp, re.IGNORECASE)}),
dict(name='div', attrs={'class': re.compile(
comment_reg_exp, re.IGNORECASE)}),
dict(name='div', attrs={'class': re.compile(
story_actions_reg_exp, re.IGNORECASE)}),
dict(name='div', attrs={'class': re.compile(
bookmark_list_reg_exp, re.IGNORECASE)}),
dict(name='div', attrs={'id': re.compile(
secondary_content_reg_exp, re.IGNORECASE)}),
dict(name='div', attrs={'id': re.compile(
featured_content_reg_exp, re.IGNORECASE)}),
dict(name='div', attrs={'id': re.compile(
navigation_reg_exp, re.IGNORECASE)}),
dict(name='form', attrs={'id': re.compile(
form_reg_exp, re.IGNORECASE)}),
dict(attrs={'class': re.compile(
quote_reg_exp, re.IGNORECASE)}),
dict(attrs={'class': re.compile(
hidden_reg_exp, re.IGNORECASE)}),
dict(attrs={'class': re.compile(
social_links_reg_exp, re.IGNORECASE)}),
dict(attrs={'class': re.compile(
comment_reg_exp, re.IGNORECASE)}),
dict(attrs={'class': re.compile(
skip_reg_exp, re.IGNORECASE)}),
dict(name='map', attrs={'id': re.compile(
map_reg_exp, re.IGNORECASE)}),
dict(name='map', attrs={'name': re.compile(
map_reg_exp, re.IGNORECASE)}),
dict(name='div', attrs={'id': re.compile(
social_bookmarks_reg_exp, re.IGNORECASE)}),
dict(name='div', attrs={'id': re.compile(
blq_mast_reg_exp, re.IGNORECASE)}),
dict(name='div', attrs={'class': re.compile(
sharesb_reg_exp, re.IGNORECASE)}),
dict(name='div', attrs={
'class': re.compile(o_reg_exp, re.IGNORECASE)}),
dict(name='div', attrs={'class': re.compile(
promo_top_reg_exp, re.IGNORECASE)}),
dict(name='div', attrs={'class': re.compile(
promo_bottom_reg_exp, re.IGNORECASE)}),
dict(name='div', attrs={
'class': re.compile(nlp_reg_exp, re.IGNORECASE)}),
dict(name='div', attrs={'class': re.compile(
mva_or_mvb_reg_exp, re.IGNORECASE)}),
dict(name='div', attrs={'class': re.compile(
mvtb_reg_exp, re.IGNORECASE)}),
dict(name='div', attrs={'class': re.compile(
blq_toplink_reg_exp, re.IGNORECASE)}),
dict(name='div', attrs={'class': re.compile(
prods_services_01_reg_exp, re.IGNORECASE)}),
dict(name='div', attrs={'class': re.compile(
prods_services_02_reg_exp, re.IGNORECASE)}),
dict(name='div', attrs={'class': re.compile(
blq_misc_01_reg_exp, re.IGNORECASE)}),
dict(name='div', attrs={'class': re.compile(
blq_misc_02_reg_exp, re.IGNORECASE)}),
dict(name='div', attrs={'class': re.compile(
puffbox_reg_exp, re.IGNORECASE)}),
dict(attrs={'class': re.compile(
sibtbg_reg_exp, re.IGNORECASE)}),
dict(attrs={'class': re.compile(
storyextra_reg_exp, re.IGNORECASE)})
# Uses url to create and return the 'printer friendly' version of the url.
# In other words the 'print this page' address of the page.
# There are 3 types of urls used in the BBC site's rss feeds. There is just
# 1 type for the standard news while there are 2 used for sports feed urls.
# Note: Sports urls are linked from regular news feeds (Eg. 'News Home') when
# there is a major story of interest to 'everyone'. So even if no BBC sports
# feeds are added to 'feeds' the logic of this method is still needed to avoid
# blank / missing / empty articles which have an index title and then no
# body.
def print_version(self, url):
if url.startswith("https://www.bbc.co.uk/news/world-51235105"):
self.abort_article("This article contains a gigantic coronavirus table")
# Handle sports page urls type 01:
if (url.find("go/rss/-/sport1/") != -1):
temp_url = url.replace("go/rss/-/", "")
# Handle sports page urls type 02:
elif (url.find("go/rss/int/news/-/sport1/") != -1):
temp_url = url.replace("go/rss/int/news/-/", "")
# Handle regular news page urls:
temp_url = url.replace("go/rss/int/news/-/", "")
# Always add "?print=true" to the end of the url.
print_url = temp_url + "?print=true"
return print_url
def canonicalize_internal_url(self, url, is_link=True):
if url.endswith('?print=true'):
url = url.rpartition('?')[0]
return BasicNewsRecipe.canonicalize_internal_url(self, url, is_link=is_link)
# Remove articles in feeds based on a string in the article title or url.
# Code logic written by: Starson17 - posted in: "Recipes - Re-usable code"
# thread, in post with title: "Remove articles from feed", see url:
# https://www.mobileread.com/forums/showpost.php?p=1165462&postcount=6
# Many thanks and all credit to Starson17.
# Starson17's code has obviously been altered to suite my requirements.
def parse_feeds(self):
# Call parent's method.
feeds = BasicNewsRecipe.parse_feeds(self)
# Loop through all feeds.
for feed in feeds:
# Loop through all articles in feed.
for article in feed.articles[:]:
# Match key words and remove article if there's a match.
# Most BBC rss feed video only 'articles' use upper case 'VIDEO'
# as a title prefix. Just match upper case 'VIDEO', so that
# articles like 'Video game banned' won't be matched and
# removed.
if 'VIDEO' in article.title:
# Most BBC rss feed audio only 'articles' use upper case 'AUDIO'
# as a title prefix. Just match upper case 'AUDIO', so that
# articles like 'Hi-Def audio...' won't be matched and removed.
elif 'AUDIO' in article.title:
# Most BBC rss feed photo slideshow 'articles' use 'In Pictures',
# 'In pictures', and 'in pictures', somewhere in their title.
# Match any case of that phrase.
elif 'IN PICTURES' in article.title.upper():
# As above, but user contributed pictures. Match any case.
elif 'YOUR PICTURES' in article.title.upper():
# 'Sportsday Live' are articles which contain a constantly and
# dynamically updated 'running commentary' during a live sporting
# event. Match any case.
elif 'SPORTSDAY LIVE' in article.title.upper():
# Sometimes 'Sportsday Live' (above) becomes 'Live - Sport Name'.
# These are being matched below using 'Live - ' because removing all
# articles with 'live' in their titles would remove some articles
# that are in fact not live sports pages. Match any case.
elif 'LIVE - ' in article.title.upper():
# 'Quiz of the week' is a Flash player weekly news quiz. Match only
# the 'Quiz of the' part in anticipation of monthly and yearly
# variants. Match any case.
elif 'QUIZ OF THE' in article.title.upper():
# Remove articles with 'scorecards' in the url. These are BBC sports
# pages which just display a cricket scorecard. The pages have a mass
# of table and css entries to display the scorecards nicely. Probably
# could make them work with this recipe, but might take a whole day
# of work to sort out all the css - basically a formatting
# nightmare.
elif 'scorecards' in article.url:
return feeds
# End of class and file.
This recipe explores only the tip of the iceberg when it comes to the power of calibre. To explore more of the abilities of calibre we'll examine a more complex real life example in the next section.
Exemplo real¶
A reasonably complex real life example that exposes more of the API of
BasicNewsRecipe is the recipe for The New York Times
import string, re
from calibre import strftime
from calibre.web.feeds.recipes import BasicNewsRecipe
from calibre.ebooks.BeautifulSoup import BeautifulSoup
class NYTimes(BasicNewsRecipe):
title = 'The New York Times'
__author__ = 'Kovid Goyal'
description = 'Daily news from the New York Times'
timefmt = ' [%a, %d %b, %Y]'
needs_subscription = True
remove_tags_before = dict(id='article')
remove_tags_after = dict(id='article')
remove_tags = [dict(attrs={'class':['articleTools', 'post-tools', 'side_tool', 'nextArticleLink clearfix']}),
dict(id=['footer', 'toolsRight', 'articleInline', 'navigation', 'archive', 'side_search', 'blog_sidebar', 'side_tool', 'side_index']),
dict(name=['script', 'noscript', 'style'])]
encoding = 'cp1252'
no_stylesheets = True
extra_css = 'h1 {font: sans-serif large;}\n.byline {font:monospace;}'
def get_browser(self):
br = BasicNewsRecipe.get_browser()
if self.username is not None and self.password is not None:
br['USERID'] = self.username
br['PASSWORD'] = self.password
return br
def parse_index(self):
soup = self.index_to_soup('https://www.nytimes.com/pages/todayspaper/index.html')
def feed_title(div):
return ''.join(div.findAll(text=True, recursive=False)).strip()
articles = {}
key = None
ans = []
for div in soup.findAll(True,
attrs={'class':['section-headline', 'story', 'story headline']}):
if ''.join(div['class']) == 'section-headline':
key = string.capwords(feed_title(div))
articles[key] = []
elif ''.join(div['class']) in ['story', 'story headline']:
a = div.find('a', href=True)
if not a:
url = re.sub(r'\?.*', '', a['href'])
url += '?pagewanted=all'
title = self.tag_to_string(a, use_alt=True).strip()
description = ''
pubdate = strftime('%a, %d %b')
summary = div.find(True, attrs={'class':'summary'})
if summary:
description = self.tag_to_string(summary, use_alt=False)
feed = key if key is not None else 'Uncategorized'
if feed not in articles:
articles[feed] = []
if not 'podcasts' in url:
dict(title=title, url=url, date=pubdate,
ans = self.sort_index_by(ans, {'The Front Page':-1, 'Dining In, Dining Out':1, 'Obituaries':2})
ans = [(key, articles[key]) for key in ans if key in articles]
return ans
def preprocess_html(self, soup):
refresh = soup.find('meta', {'http-equiv':'refresh'})
if refresh is None:
return soup
content = refresh.get('content').partition('=')[2]
raw = self.browser.open('https://www.nytimes.com'+content).read()
return BeautifulSoup(raw.decode('cp1252', 'replace'))
We see several new features in this recipe. First, we have:
timefmt = ' [%a, %d %b, %Y]'
This sets the displayed time on the front page of the created e-book to be in the format,
Day, Day_Number Month, Year. See
Then we see a group of directives to cleanup the downloaded HTML:
remove_tags_before = dict(name='h1')
remove_tags_after = dict(id='footer')
remove_tags = ...
These remove everything before the first
<h1> tag and everything after the first tag whose id is
footer. See
The next interesting feature is:
needs_subscription = True
def get_browser(self):
needs_subscription = True tells calibre that this recipe needs a username and password in order to access the content. This causes, calibre to ask for a username and password whenever you try to use this recipe. The code in
calibre.web.feeds.news.BasicNewsRecipe.get_browser() actually does the login into the NYT website. Once logged in, calibre will use the same, logged in, browser instance to fetch all content. See mechanize to understand the code in
The next new feature is the
calibre.web.feeds.news.BasicNewsRecipe.parse_index() method. Its job is
to go to https://www.nytimes.com/pages/todayspaper/index.html and fetch the list
of articles that appear in todays paper. While more complex than simply using
RSS, the recipe creates an e-book that corresponds very closely to the
days paper.
parse_index makes heavy use of BeautifulSoup to parse
the daily paper webpage. You can also use other, more modern parsers if you
dislike BeautifulSoup. calibre comes with lxml and
html5lib, which are the
recommended parsers. To use them, replace the call to
index_to_soup() with
the following:
raw = self.index_to_soup(url, raw=True)
# For html5lib
import html5lib
root = html5lib.parse(raw, namespaceHTMLElements=False, treebuilder='lxml')
# For the lxml html 4 parser
from lxml import html
root = html.fromstring(raw)
The final new feature is the
calibre.web.feeds.news.BasicNewsRecipe.preprocess_html() method. It can be used to perform arbitrary transformations on every downloaded HTML page. Here it is used to bypass the ads that the nytimes shows you before each article.
Tips for developing new recipes¶
The best way to develop new recipes is to use the command line interface. Create the recipe using your favorite Python editor and save it to a file say
myrecipe.recipe. The .recipe extension is required. You can download content using this recipe with the command:
ebook-convert myrecipe.recipe .epub --test -vv --debug-pipeline debug
The command ebook-convert will download all the webpages and save
them to the EPUB file
myrecipe.epub. The
-vv option makes
ebook-convert spit out a lot of information about what it is doing. The
ebook-convert-recipe-input --test option makes it download only a couple of articles from at most two
feeds. In addition, ebook-convert will put the downloaded HTML into the
debug/input directory, where
debug is the directory you specified in
ebook-convert --debug-pipeline option.
Once the download is complete, you can look at the downloaded HTML by opening the file
debug/input/index.html in a browser. Once you're satisfied that the download and preprocessing is happening correctly, you can generate e-books in different formats as shown below:
ebook-convert myrecipe.recipe myrecipe.epub
ebook-convert myrecipe.recipe myrecipe.mobi
If you're satisfied with your recipe, and you feel there is enough demand to justify its inclusion into the set of built-in recipes, post your recipe in the calibre recipes forum to share it with other calibre users.
On macOS, the command line tools are inside the calibre bundle, for example,
if you installed calibre in
/Applications the command line tools
are in
Veja também
- ebook-convert
The command line interface for all e-book conversion.
Leituras de aprofundamento¶
To learn more about writing advanced recipes using some of the facilities, available in
BasicNewsRecipe you should consult the following sources:
- API documentation
Documentation of the
BasicNewsRecipeclass and all its important methods and fields.
- BasicNewsRecipe
The source code of
- Built-in recipes
The source code for the built-in recipes that come with calibre
- The calibre recipes forum
Lots of knowledgeable calibre recipe writers hang out here.