h2vx: Difference between revisions

From Microformats Wiki
Jump to navigation Jump to search
No edit summary
m (Replace <entry-title> with {{DISPLAYTITLE:}})
 
(25 intermediate revisions by 6 users not shown)
Line 1: Line 1:
HOW THING OUT
{{DISPLAYTITLE:H2VX}}
HOW ANYTHING OUT
 
HOW EVERYTHING OUT
<dfn>[https://h2vx.com/ H2VX]</dfn> is a production deployment of the [[X2V]] hCard and hCalendar conversion transforms.
HOW UNIVERSE OUT
 
HOW MAKE THING OUT
It converts [[hCard]] contacts and [[hCalendar]] events on web pages to .vcf and .ics respectively for use in desktop and other client software applications.
HOW MAKE ANYTHING OUT
 
HOW MAKE EVERYTHING OUT
== documentation ==
HOW MAKE UNIVERSE OUT
To convert hCards to vCards, go https://h2vx.com/vcf/ and enter the URL to the hCards.
HOW THING BE OUT
 
HOW ANYTHING BE OUT
To convert hCalendar to iCalendar, go https://h2vx.com/ics/ and enter the URL to the hCalendar events.
HOW EVERYTHING BE OUT
 
HOW UNIVERSE BE OUT
=== URLs ===
HOW MAKE THING BE OUT
Links to H2VX.com to convert a URL (like <nowiki>http://microformats.org/wiki/events</nowiki> ) can be constructed as follows:
HOW MAKE ANYTHING BE OUT
 
HOW MAKE EVERYTHING BE OUT
You may omit the leading "http://" from the URL to be converted for a briefer more readable URL:
HOW MAKE UNIVERSE BE OUT
 
HOW THING OUT
;download vCards from hCards
HOW ANYTHING OUT
:<kbd><nowiki>https://h2vx.com/vcf/URL</nowiki></kbd>
HOW EVERYTHING OUT
:e.g. <kbd><nowiki>https://h2vx.com/vcf/microformats.org/wiki/events</nowiki></kbd>
HOW UNIVERSE OUT
;download iCalendar from hCalendar
HOW MAKE THING OUT
:<kbd><nowiki>https://h2vx.com/ics/URL</nowiki></kbd>
HOW MAKE ANYTHING OUT
:e.g. <kbd><nowiki>https://h2vx.com/ics/microformats.org/wiki/events</nowiki></kbd>
HOW MAKE EVERYTHING OUT
;subscribe to hCalendar from hCalendar
HOW MAKE UNIVERSE OUT
:<kbd><nowiki>webcal://h2vx.com/ics/URL</nowiki></kbd>
HOW THING BE OUT
:e.g. <kbd><nowiki>webcal://h2vx.com/ics/microformats.org/wiki/events</nowiki></kbd>
HOW ANYTHING BE OUT
:<kbd><nowiki>https://h2vx.com/ics/sub/URL</nowiki></kbd> <span style="margin-left:2em;display:block">for systems which don't support auto-linking of webcal: URLs, e.g. MediaWiki, Twitter.</span>
HOW EVERYTHING BE OUT
:e.g. <kbd><nowiki>https://h2vx.com/ics/sub/microformats.org/wiki/events</nowiki></kbd>
HOW UNIVERSE BE OUT
 
HOW MAKE THING BE OUT
=== user agent strings ===
HOW MAKE ANYTHING BE OUT
H2VX uses two user agent strings, when retrieving hCards and hCalendars respectively:
HOW MAKE EVERYTHING BE OUT
* <samp><nowiki>H2VX contacts proxy (http://h2vx.com/vcf/)</nowiki></samp>
HOW MAKE UNIVERSE BE OUT
* <samp><nowiki>H2VX events proxy (http://h2vx.com/ics/)</nowiki></samp>
HOW THING OUT
You may see occurrences of these in your web server logs when users of H2VX convert hCards and hCalendar events on your pages.
HOW ANYTHING OUT
 
HOW EVERYTHING OUT
=== built ===
HOW UNIVERSE OUT
H2VX is built and maintained by [[User:Tantek|Tantek]] with:
HOW MAKE THING OUT
* [[X2V]] XSLTs by [[User:Brian|Brian Suda]]
HOW MAKE ANYTHING OUT
* PHP get-contact.php get-cal.php originally written by Brian, updated/factored by Tantek with various improvements.
HOW MAKE EVERYTHING OUT
* PHP common.php (and Javascript common.js) by Tantek which incorporate CASSISv0 open source from http://cassisproject.com/
HOW MAKE UNIVERSE OUT
* XHTML1+CSS+JS front-end design/interface by Tantek (view source of h2vx.com in your browser for more).
HOW THING BE OUT
 
HOW ANYTHING BE OUT
=== open source ===
HOW EVERYTHING BE OUT
H2VX is available on the microformats github:
HOW UNIVERSE BE OUT
* https://github.com/microformats/h2vx.com
HOW MAKE THING BE OUT
 
HOW MAKE ANYTHING BE OUT
==== setting up your own H2VX ====
HOW MAKE EVERYTHING BE OUT
* get the files from https://github.com/microformats/h2vx.com
HOW MAKE UNIVERSE BE OUT
* ...
HOW THING OUT
(in progress)
HOW ANYTHING OUT
 
HOW EVERYTHING OUT
==== history ====
HOW UNIVERSE OUT
Some of the open source history behind H2VX can be found with history of X2V. E.g.
HOW MAKE THING OUT
* 2006-04-19 Dan Connolly: [http://dig.csail.mit.edu/breadcrumbs/node/127 busy day in #microformats]
HOW MAKE ANYTHING OUT
* ...
HOW MAKE EVERYTHING OUT
 
HOW MAKE UNIVERSE OUT
== issues ==
HOW THING BE OUT
Found a problem with H2VX?
HOW ANYTHING BE OUT
 
HOW EVERYTHING BE OUT
Please:
HOW UNIVERSE BE OUT
# Check it with https://dev.h2vx.com/ to see if the dev version fixes it
HOW MAKE THING BE OUT
# If not, add it to: https://github.com/microformats/h2vx.com/issues
HOW MAKE ANYTHING BE OUT
 
HOW MAKE EVERYTHING BE OUT
Want to help?
HOW MAKE UNIVERSE BE OUT
 
HOW THING OUT
Please move issues in this list to https://github.com/microformats/h2vx.com/issues, leaving the subheads intact for now with just a permalink to each github issue under each respective heading.
HOW ANYTHING OUT
 
HOW EVERYTHING OUT
=== value class pattern empty span fails ===
HOW UNIVERSE OUT
* This calendar: http://www.ustreetmusichall.com/calendar results in a ics file that gives Error at line 11: Unparseable date: "T220000" when imported into Google calendar
HOW MAKE THING OUT
** 2012-154 verified with both h2vx.com and dev.h2vx.com. Page uses [[value class pattern]], in particular, empty span technique which seems valid. Need to make a test case of this to isolate and track down.  - [[User:Tantek|Tantek]] 19:42, 2 June 2012 (UTC)
HOW MAKE ANYTHING OUT
<source lang=html4strict>
HOW MAKE EVERYTHING OUT
<span class="start dtstart">
HOW MAKE UNIVERSE OUT
<span class="value-title" title="2012-06-02T22:00:00-04:00"></span>
HOW THING BE OUT
10:00 pm
HOW ANYTHING BE OUT
</span>
HOW EVERYTHING BE OUT
</source>
HOW UNIVERSE BE OUT
 
HOW MAKE THING BE OUT
=== empty document from arjw.ifmw.mobi ===
HOW MAKE ANYTHING BE OUT
(needs investigation)
HOW MAKE EVERYTHING BE OUT
* Have been getting an error where it says that its a "empty document; no HTML can be found" from [https://arjw.ifmw.mobi/index.php my site]. As with the comment below, there are no issues with using Operator to extract. I used to use this service a good while ago, but since moving to PHP/HTML5 for this page, I'm getting this error. [[User:ARJWright|Antoine RJ Wright]] 04:17:49, 7 January 2010 (UTC)
HOW MAKE UNIVERSE BE OUT
 
HOW THING OUT
=== unable to extract hCards on marinersmexico ===
HOW ANYTHING OUT
(needs investigation)
HOW EVERYTHING OUT
* The last few days I've not been able to retrieve vCards from hCards on [http://www.marinersmexico.com/contact/ this site] using H2VX yet Operator is nicely extracting them.  Comments and insights appreciated. [[User:ChipD|ChipD]] 05:13, 12 November 2010 (UTC)
HOW UNIVERSE OUT
 
HOW MAKE THING OUT
=== hCard ids not working with referrer ===
HOW MAKE ANYTHING OUT
(needs investigation)
HOW MAKE EVERYTHING OUT
* Can't seem to get #hcard-ids working with the /referrer option. [[User:Jnpcl|Jnpcl]] 00:01, 14 October 2010 (UTC)
HOW MAKE UNIVERSE OUT
** Could you provide the URL you are having trouble with? [[User:Tantek|Tantek]] 18:51, 29 October 2010 (UTC)
HOW THING BE OUT
 
HOW ANYTHING BE OUT
=== hard to find URLs to put on a page ===
HOW EVERYTHING BE OUT
* As a Web page author I find the H2XV site a bit awkward to use -- it's difficult to find the URLs to use in my Web page. As an end-user it fine to have the H2VX bookmarklets in my toolbar, but as a page author I can't be sure everyone has the bookmarklets or Operator installed. [[User:Bob Jonkman|Bob Jonkman]] 00:56, 10 November 2009 (UTC)
HOW UNIVERSE BE OUT
 
HOW MAKE THING BE OUT
=== possible problem with iOS6 ===
HOW MAKE ANYTHING BE OUT
from: https://twitter.com/equivalentideas/status/275120059788169216
HOW MAKE EVERYTHING BE OUT
 
HOW MAKE UNIVERSE BE OUT
<blockquote class="twitter-tweet"><p>#microformats there seems to be a problem with downloading the #hcard via @h2vx in #IOS6 @t</p>&mdash; Luke Bacon (@equivalentideas) December 2, 2012</blockquote>
HOW THING OUT
 
HOW ANYTHING OUT
=== robots.txt prevents subscription in Google Reader ===
HOW EVERYTHING OUT
Google Reader won't subscribe to any h2vx hCalendar files due to robots.txt. [[User:TomMorris|TomMorris]] 15:33, 1 June 2011 (UTC)
HOW UNIVERSE OUT
:Google Calendar also fails because of their [https://h2vx.com/robots.txt robots.txt] which disallows robots from fetching and therefore caching the ical files. [[User:Jayvdb|Jayvdb]] 22:16, 5 May 2012 (UTC)
HOW MAKE THING OUT
 
HOW MAKE ANYTHING OUT
Apparently, I was correct in thinking Google would likely have a unique user-agent specifically for calendar fetches (see e.g. quote below) but they don't. It's not on [http://support.google.com/webmasters/bin/answer.py?hl=en&answer=1061943 the UA list] and I tested empirically (`sudo nc -v -l -p 80`) and it is a generic UA. ;( Someone should retest Google Reader to see if it works.
HOW MAKE EVERYTHING OUT
<blockquote>Google has several other user-agents, including Feedfetcher (user-agent Feedfetcher-Google). Since Feedfetcher requests come from explicit action by human users who have added the feeds to their [http://www.google.com/ig Google home page] or to [http://www.google.com/reader Google Reader]], and not from automated crawlers, Feedfetcher does not follow robots.txt guidelines. You can prevent Feedfetcher from crawling your site by configuring your server to serve a 404, 410, or other error status message to user-agent Feedfetcher-Google.[http://support.google.com/webmasters/bin/answer.py?answer=178852 More information about Feedfetcher.]</blockquote> &lt;ref>http://support.google.com/webmasters/bin/answer.py?hl=en&answer=182072&lt;/ref> --[[User:Jeremyb|Jeremyb]] 22:34, 12 June 2012 (UTC)
HOW MAKE UNIVERSE OUT
:On second thought, I tested w/ a real webserver (+tcpdump) to see if /robots.txt was fetched with a different agent than the actual feed. no such luck.
HOW THING BE OUT
<pre>From: googlebot(at)googlebot.com
HOW ANYTHING BE OUT
User-Agent: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)</pre>
HOW EVERYTHING BE OUT
:--[[User:Jeremyb|Jeremyb]] 22:34, 12 June 2012 (UTC)
HOW UNIVERSE BE OUT
 
HOW MAKE THING BE OUT
=== Date incorrect when not using abbr element for dtstart ===
HOW MAKE ANYTHING BE OUT
 
HOW MAKE EVERYTHING BE OUT
I had a date marked up like so &lt;em class="detail dtstart" title="2010-10-20">Wednesday, October 20, 2010&lt;/em>. It was not being parsed correctly until I changed it to use &lt;abbr>, but the element shouldn't really make any difference.
HOW MAKE UNIVERSE BE OUT
 
HOW THING OUT
=== .vcf not formed properly ===
HOW ANYTHING OUT
 
HOW EVERYTHING OUT
When opening the resultant .vcf files with Outlook, all non-standard characters are not shown correctly, due to the fact that the returned file is not encoded as UTF-8 without the BOM. Thus, these files are useless for use with Outlook - one of the most used e-mail clients.
HOW UNIVERSE OUT
 
HOW MAKE THING OUT
Can we get a UTF-8 file returned without the BOM?
HOW MAKE ANYTHING OUT
 
HOW MAKE EVERYTHING OUT
=== Missing data/Wrong encoding ===
HOW MAKE UNIVERSE OUT
 
HOW THING BE OUT
* We'd like to use your service for the new version of our location list ([http://www.freewave.at/en/ Free WiFi Hotspots in Austria]) but ran into problems:
HOW ANYTHING BE OUT
** After importing the vCard, the Mac OS X Address book showed only the phone number (not as work), the URL, zip code and city. No name and no street.
HOW EVERYTHING BE OUT
** The vCard itself is encoded in ISO-8859-1, although having “CHARSET=utf-8” instructions. The source is also encoded in UTF-8.
HOW UNIVERSE BE OUT
** Here's the HTML code, we've been using:
HOW MAKE THING BE OUT
<source lang=html4strict>
HOW MAKE ANYTHING BE OUT
<div class="vcard">
HOW MAKE EVERYTHING BE OUT
<h2 class="fn org"><img class="photo" src="http://static.freewave.at/logos/testa_rossa_caffe_150.gif" alt="Testa Rossa Caffèbar Logo" />Testa Rossa Caffèbar</h2>
HOW MAKE UNIVERSE BE OUT
<div class="adr work"><span class="street-address">Mahlerstraße 4 </span><br />
HOW THING OUT
<span class="postal-code">1010</span> <span class="locality">Wien</span><br />
HOW ANYTHING OUT
<span class="country-name">Österreich</span></div>
HOW EVERYTHING OUT
<div><span class="tel work">+43 699 161 616 61</span><br />
HOW UNIVERSE OUT
<a class="url work" href="http://www.testarossawien.at/">http://www.testarossawien.at/</a><br />
HOW MAKE THING OUT
<a class="email work" href="mailto:"></a></div>
HOW MAKE ANYTHING OUT
<div class="geo"><span class="latitude">48.20275</span>,<span class="longitude">16.37079</span></div>
HOW MAKE EVERYTHING OUT
</div>
HOW MAKE UNIVERSE OUT
</source>
HOW THING BE OUT
 
HOW ANYTHING BE OUT
Thanks! --[[User:Vividvisions|Vividvisions]] 17:25, 4 May 2010 (UTC)
HOW EVERYTHING BE OUT
 
HOW UNIVERSE BE OUT
I got the same type of problem with non ASCII content. Don't know which part is responsible, though. --[[User:jlgeering|Jean-Luc Geering]] 2010-05-10
HOW MAKE THING BE OUT
 
HOW MAKE ANYTHING BE OUT
+1, I was coaching the dudes at http://hagreve.com/ implementing hCalendar and they reached the roadblock of having the accented chars wrongly encoded on the .ics  They resorted to using other ways of building an ics. :sadface:
HOW MAKE EVERYTHING BE OUT
Thanks. -- [[User:andr3|andr3]]
HOW MAKE UNIVERSE BE OUT
 
HOW THING OUT
=== HTML5 support ===
HOW ANYTHING OUT
* <code>&lt;meta charset=utf-8&gt;</code> isn't recognized so the output is double encoded. [[User:Greut|Greut]] 11:12, 4 January 2010 (UTC)
HOW EVERYTHING OUT
* new HTML5 elements (such as header, footer, section) are not supported (this is because they are stripped out by PHP Tidy and thus ignored). [[User:Tantek|Tantek]] 16:13, 19 January 2010 (UTC) <br /> possible solutions:
HOW UNIVERSE OUT
** '''2019-03-07 UPDATE: https://h2vx.com/ updated with basic HTML5 element support.''' Still to-do: test cases and support with attributes like <code>&lt;time datetime&gt;</code> (couldn't find it in [https://github.com/microformats/h2vx.com/blob/master/ics/xhtml2vcal.xsl xhtml2vcal.xsl] or [https://github.com/microformats/h2vx.com/blob/master/vcf/xhtml2vcard.xsl xhtml2vcard.xsl])
HOW MAKE THING OUT
*** related GitHub Issue: [https://github.com/microformats/h2vx.com/issues/4 support time element for dtstart and dtend properties #4] specifically: <blockquote>prefer datetime attribute over the contents</blockquote>
HOW MAKE ANYTHING OUT
** '''2010-09-01 UPDATE: new HTML5 elements and <code>&lt;time datetime&gt;</code> preliminary support added to dev.h2vx.com''' - try it out - give feedback!
HOW MAKE EVERYTHING OUT
*** Once h2vx.com is updated, reply to https://twitter.com/marcustucker/status/268200044128251904
HOW MAKE UNIVERSE OUT
 
HOW THING BE OUT
<div class="discussion">
HOW ANYTHING BE OUT
'''Please give feedback on the https://dev.h2vx.com/ HTML5 support here:'''
HOW EVERYTHING BE OUT
* Is there a timeout/throttling on requests to dev.h2vx? I've been getting inconsistent returns on ics and webcal requests from the same markup. Don't know what else could be the issue. When it works, it works great though!
HOW UNIVERSE BE OUT
** Any throttling we've been adding manually as necessary. What URL are you trying? [[User:Tantek|Tantek]] 18:04, 14 July 2011 (UTC)
HOW MAKE THING BE OUT
* ...
HOW MAKE ANYTHING BE OUT
</div>
HOW MAKE EVERYTHING BE OUT
 
HOW MAKE UNIVERSE BE OUT
Previously:
HOW THING OUT
* Possible options
HOW ANYTHING OUT
** 1. Use a proper PHP html5lib (being coded by the HTML5 community, but not available/functional yet AFAIK) - still might do this long term.
HOW EVERYTHING OUT
** 2. Add a flag to the H2VX processing URL which says "I'm a crazy XML person and my markup is 100% well formed XML, please don't tidy, please break and fail to process if it's not well formed".
HOW UNIVERSE OUT
** in either case, new special HTML5 elements (like time) will require an update to [[X2V]] to know to properly handle/parse new semantic attributes (like datetime).
HOW MAKE THING OUT
 
HOW MAKE ANYTHING OUT
=== mouse events ===
HOW MAKE EVERYTHING OUT
* The "what are microformats?" style descriptions only appear on mouse-over of the trigger terms (those with class="term"). It does not appear at all when keyboard navigation is used, making it somewhat inaccessible. The problem here is that the trigger elements are the ones that should receive focus, but not being links they are not in the tabbing order so do not, hence the helper text never appears for keyboard users. [[User:Norm|Norm]] 10:39, 6 November 2009 (UTC)
HOW MAKE UNIVERSE OUT
** Quick fix: remove '''visibility:hidden''' from '''.term .info'''. [[User:Andr3|Andr3]]
HOW THING BE OUT
 
HOW ANYTHING BE OUT
=== page semantics ===
HOW EVERYTHING BE OUT
* &lt;i class="term"> should be made into &lt;em>'s for semantic reasons. ;) [[User:Andr3|Andr3]]
HOW UNIVERSE BE OUT
** Note that the <code>&lt;i></code> element is used deliberately for "instance" of a term - this is an [[HTML5]] semantic, and is more accurate in this instance than "em"phasis. — [[User:Tantek|Tantek]] 18:29, 11 November 2009 (UTC)
HOW MAKE THING BE OUT
 
HOW MAKE ANYTHING BE OUT
=== not possible to use dtstart with timezone in abbr title ===
HOW MAKE EVERYTHING BE OUT
* Adding a timezone to dtstart using abbr pattern leads to The Shining-style debug output repeating “Object is a string”. I tried adding a time with timezone via the value class pattern, and while the vcard downloads the time is incorrect ~~[[User:Oli|Oli]] 00:53 15 February 2010 (+09:00)
HOW MAKE UNIVERSE BE OUT
** Oli, could you provide a URL to a live example/test case that you were using so we can test with it to try to see exactly what is going on? Thanks! [[User:Tantek|Tantek]] 17:35, 15 February 2010 (UTC)
HOW THING OUT
 
HOW ANYTHING OUT
=== microformats2 support ===
HOW EVERYTHING OUT
[[microformats2]] support - when is it coming? from
HOW UNIVERSE OUT
* 2013-06-19: https://twitter.com/schofeld/status/347395201607806977 <blockquote>Wondering if h2vx will be (has been?) updated for #microformats2 or if the vision is that other forthcoming tools will make it redundant.</blockquote>
HOW MAKE THING OUT
* 2013-12-16: https://twitter.com/equivalentideas/status/412798976451031040 <blockquote>. @h2vx really needs to be update to support h-event #microformats2 https://github.com/microformats/h2vx.com @t is anyone working on this? Want help?</blockquote>
HOW MAKE ANYTHING OUT
* 2014-05-12: https://twitter.com/AndreJaenisch/status/462336787042807808 <blockquote>Lasst uns das #Web #semantisch machen! http://wp.me/p2RjXT-40 <br/>@t do you happen to know, when @h2vx will speak #microformats2? <br/>#SemanticWeb</blockquote>
HOW MAKE EVERYTHING OUT
* 2017-05-24: https://twitter.com/gemmaVNash/status/867355831699984384 <blockquote>@h2vx Tried to use latest version of h-card syntax on http://www.bgs.ac.uk/staff/profiles/0077.html but your app won't convert to vcf. Any ideas?</blockquote>
HOW MAKE UNIVERSE OUT
* 2017-07-21 issue filed: https://github.com/microformats/h2vx.com/issues/3
HOW THING BE OUT
** Please add more comments there if necessary.
HOW ANYTHING BE OUT
 
HOW EVERYTHING BE OUT
 
HOW UNIVERSE BE OUT
== resolved ==
HOW MAKE THING BE OUT
Resolved issues are moved to this section. If this grows too big we can move it to [[h2vx-issues-resolved]]
HOW MAKE ANYTHING BE OUT
* ...
HOW MAKE EVERYTHING BE OUT
 
HOW MAKE UNIVERSE BE OUT
=== 2019-03-07 HTML5 article support ===
HOW THING OUT
* [[HTML5]] support - update from dev to live per https://twitter.com/schofeld/status/347371870242361344 : <blockquote>@h2vx Seems vcard parsing fails if class is set on an <article> element: http://microformats.org/wiki/h2vx#feedback</blockquote>
HOW ANYTHING OUT
** 2019-03-07 https://h2vx.com/ updated with basic HTML5 element support — https://tantek.com/t4zN2
HOW EVERYTHING OUT
 
HOW UNIVERSE OUT
=== Fatal error Call-time pass-by-reference ===
HOW MAKE THING OUT
* 2015-10-18 resolved - should be fixed. Please retry your use-cases and move this back to being an open issue if you still see problems (and please provide URLs to the test cases). [[User:Tantek|Tantek]] 02:08, 19 October 2015 (UTC)
HOW MAKE ANYTHING OUT
 
HOW MAKE EVERYTHING OUT
Issue captured on github too: https://github.com/microformats/h2vx.com/issues/2
HOW MAKE UNIVERSE OUT
 
HOW THING BE OUT
Hi Tantek
HOW ANYTHING BE OUT
 
HOW EVERYTHING BE OUT
I've also encountered this issue - I'm guessing that someone has upgraded PHP on your server - the pass-by-reference behaviour is deprecated in PHP 5.  Would it be possible to refactor these functions to pass by value? We are consuming these services in a public site.
HOW UNIVERSE BE OUT
 
HOW MAKE THING BE OUT
Many thanks
HOW MAKE ANYTHING BE OUT
 
HOW MAKE EVERYTHING BE OUT
Shaun
HOW MAKE UNIVERSE BE OUT
 
HOW THING OUT
[[User:Dipdapdop|Dipdapdop]] 08:04, 14 October 2015 (UTC)
HOW ANYTHING OUT
 
HOW EVERYTHING OUT
Fatal error: Call-time pass-by-reference has been removed in /home/tantek/domains/h2vx.com/public_html/dev/ics/get-cal.php on line 141
HOW UNIVERSE OUT
 
HOW MAKE THING OUT
 
HOW MAKE ANYTHING OUT
'''The contact conversion service''' @ http://h2vx.com/vcf/ fails with the error :
HOW MAKE EVERYTHING OUT
Fatal error: Call-time pass-by-reference has been removed in /home/tantek/domains/h2vx.com/public_html/vcf/get-contact.php on line 106
HOW MAKE UNIVERSE OUT
 
HOW THING BE OUT
Why this error now ?
HOW ANYTHING BE OUT
Is it possible to repair it ?
HOW EVERYTHING BE OUT
This link is very useful
HOW UNIVERSE BE OUT
Thank you
HOW MAKE THING BE OUT
 
HOW MAKE ANYTHING BE OUT
The error is on line 106, looking at the source-code, 106 is a print statement. It might be useful to turn on error reporting http://php.net/manual/en/function.error-reporting.php to get a better explanation and what line in the code that is on the server is failing. Then we can debug. Like 114 the regular expression smells like it might be the problem. There is an & which would be pass-by-reference. - Brian
HOW MAKE EVERYTHING BE OUT
 
HOW MAKE UNIVERSE BE OUT
It is the line with <code>preg_match_all( '/FN.*?:(.*)/i', $Str, &$matches);</code> in it, both for get-contact and get-cal. - Tantek
HOW THING OUT
=== 2013-06-19 ===
HOW ANYTHING OUT
* 2013-06-19 h2vx vcf service fails to parse a vcard if the vcard class is set on an HTML5 <article> element. Will return with a test page URL. [[User:Urlyman|Urlyman]] 15:12, 19 June 2013 (UTC)
HOW EVERYTHING OUT
** Try it with dev.h2vx.com - which supports new HTML5 elements. - [[User:Tantek|Tantek]] 23:08, 28 September 2013 (UTC)
HOW UNIVERSE OUT
 
HOW MAKE THING OUT
=== 2009-11-11 ===
HOW MAKE ANYTHING OUT
* 2009-11-11 We were using the Technorati hosted service. Surprised to see it redirected to H2XV, took a minute to realize what was going on. Thanks for picking up the service! Both the hosting provider and the new user agent are blocked by default on our side to prevent scraping. To be more transparent, maybe you could change the UA similar to the old one: from <nowiki>"Technorati contacts proxy (http://technorati.com/contacts/)"</nowiki> to <nowiki>"H2VX contacts proxy (http://h2vx.com/vcf/)"</nowiki> [[User:DineMonkey|DineMonkey]] 15:47, 11 November 2009 (UTC)
HOW MAKE EVERYTHING OUT
** I've updated the user agent strings per your recommendation and documented them above as well. [[User:Tantek|Tantek]] 18:29, 11 November 2009 (UTC)
HOW MAKE UNIVERSE OUT
*** <nowiki>H2VX contacts proxy (http://h2vx.com/vcf/)</nowiki>
HOW THING BE OUT
*** <nowiki>H2VX events proxy (http://h2vx.com/ics/)</nowiki>
HOW ANYTHING BE OUT
 
HOW EVERYTHING BE OUT
== closed ==
HOW UNIVERSE BE OUT
Once a resolved issue has no further actions (and ideally is verified by the issue reporter), it can be closed and moved to this section. If this grows too big we can move it to [[h2vx-issues-closed]]
HOW MAKE THING BE OUT
* 2009-11-04 It would be good to have the option to pass "referer" instead of a URL. [[User:Adactio|Adactio]] 10:47, 4 November 2009 (UTC)
HOW MAKE ANYTHING BE OUT
** http://h2vx.com/vcf/referrer and http://h2vx.com/ics/referrer are now up and running. Example of /vcf/referrer is live on http://tantek.com/ and the alternate spelling /vcf/referer is used live on http://clearleft.com/ - as such, closing this issue. [[User:Tantek|Tantek]] 20:25, 5 November 2009 (UTC)
HOW MAKE EVERYTHING BE OUT
* ...
HOW MAKE UNIVERSE BE OUT
 
HOW THING OUT
== feedback ==
HOW ANYTHING OUT
Have feedback on H2VX like suggested improvements?
HOW EVERYTHING OUT
 
HOW UNIVERSE OUT
Please file an issue on the GitHub repo!
HOW MAKE THING OUT
* https://github.com/microformats/h2vx.com/issues
HOW MAKE ANYTHING OUT
 
HOW MAKE EVERYTHING OUT
Previous issues filed here that need to be processed (either done, or copied/moved to GitHub issue for tracking)
HOW MAKE UNIVERSE OUT
* "a short 'about' page would be worthwhile IMO, especially for adding to the homepage." - Norm on microformats-discuss.
HOW THING BE OUT
* It would be very useful to be able to POST or GET an HTML snippet to request a conversion. I have created a Javascript button that will easily rip out the code and send it to H2VX.com: http://1daylater.com/H2VX_snippets.html useful for dynamic or password protected webpages
HOW ANYTHING BE OUT
 
HOW EVERYTHING BE OUT
* ...
HOW UNIVERSE BE OUT
 
HOW MAKE THING BE OUT
== related ==
HOW MAKE ANYTHING BE OUT
There is at least one related H2V service that uses the same X2V XSLT files as H2VX:
HOW MAKE EVERYTHING BE OUT
* http://h2v.1daylater.com/
HOW MAKE UNIVERSE BE OUT
 
HOW THING OUT
== old ==
HOW ANYTHING OUT
Previously Technorati hosted X2V conversion services:
HOW EVERYTHING OUT
* [[feed.technorati.com/contacts]] - for hCards to vCards
HOW UNIVERSE OUT
* [[feed.technorati.com/events]] - for hCalendar to iCalendar
HOW MAKE THING OUT
 
HOW MAKE ANYTHING OUT
== see also ==
HOW MAKE EVERYTHING OUT
* [[X2V]]
HOW MAKE UNIVERSE OUT
* [[hCard]]
HOW THING BE OUT
* [[hCalendar]]
HOW ANYTHING BE OUT
* [[implementations]]
HOW EVERYTHING BE OUT
HOW UNIVERSE BE OUT
HOW MAKE THING BE OUT
HOW MAKE ANYTHING BE OUT
HOW MAKE EVERYTHING BE OUT
HOW MAKE UNIVERSE BE OUT
HOW THING OUT
HOW ANYTHING OUT
HOW EVERYTHING OUT
HOW UNIVERSE OUT
HOW MAKE THING OUT
HOW MAKE ANYTHING OUT
HOW MAKE EVERYTHING OUT
HOW MAKE UNIVERSE OUT
HOW THING BE OUT
HOW ANYTHING BE OUT
HOW EVERYTHING BE OUT
HOW UNIVERSE BE OUT
HOW MAKE THING BE OUT
HOW MAKE ANYTHING BE OUT
HOW MAKE EVERYTHING BE OUT
HOW MAKE UNIVERSE BE OUT
HOW THING OUT
HOW ANYTHING OUT
HOW EVERYTHING OUT
HOW UNIVERSE OUT
HOW MAKE THING OUT
HOW MAKE ANYTHING OUT
HOW MAKE EVERYTHING OUT
HOW MAKE UNIVERSE OUT
HOW THING BE OUT
HOW ANYTHING BE OUT
HOW EVERYTHING BE OUT
HOW UNIVERSE BE OUT
HOW MAKE THING BE OUT
HOW MAKE ANYTHING BE OUT
HOW MAKE EVERYTHING BE OUT
HOW MAKE UNIVERSE BE OUT
HOW THING OUT
HOW ANYTHING OUT
HOW EVERYTHING OUT
HOW UNIVERSE OUT
HOW MAKE THING OUT
HOW MAKE ANYTHING OUT
HOW MAKE EVERYTHING OUT
HOW MAKE UNIVERSE OUT
HOW THING BE OUT
HOW ANYTHING BE OUT
HOW EVERYTHING BE OUT
HOW UNIVERSE BE OUT
HOW MAKE THING BE OUT
HOW MAKE ANYTHING BE OUT
HOW MAKE EVERYTHING BE OUT
HOW MAKE UNIVERSE BE OUT
HOW THING OUT
HOW ANYTHING OUT
HOW EVERYTHING OUT
HOW UNIVERSE OUT
HOW MAKE THING OUT
HOW MAKE ANYTHING OUT
HOW MAKE EVERYTHING OUT
HOW MAKE UNIVERSE OUT
HOW THING BE OUT
HOW ANYTHING BE OUT
HOW EVERYTHING BE OUT
HOW UNIVERSE BE OUT
HOW MAKE THING BE OUT
HOW MAKE ANYTHING BE OUT
HOW MAKE EVERYTHING BE OUT
HOW MAKE UNIVERSE BE OUT
HOW THING OUT
HOW ANYTHING OUT
HOW EVERYTHING OUT
HOW UNIVERSE OUT
HOW MAKE THING OUT
HOW MAKE ANYTHING OUT
HOW MAKE EVERYTHING OUT
HOW MAKE UNIVERSE OUT
HOW THING BE OUT
HOW ANYTHING BE OUT
HOW EVERYTHING BE OUT
HOW UNIVERSE BE OUT
HOW MAKE THING BE OUT
HOW MAKE ANYTHING BE OUT
HOW MAKE EVERYTHING BE OUT
HOW MAKE UNIVERSE BE OUT

Latest revision as of 16:23, 18 July 2020


H2VX is a production deployment of the X2V hCard and hCalendar conversion transforms.

It converts hCard contacts and hCalendar events on web pages to .vcf and .ics respectively for use in desktop and other client software applications.

documentation

To convert hCards to vCards, go https://h2vx.com/vcf/ and enter the URL to the hCards.

To convert hCalendar to iCalendar, go https://h2vx.com/ics/ and enter the URL to the hCalendar events.

URLs

Links to H2VX.com to convert a URL (like http://microformats.org/wiki/events ) can be constructed as follows:

You may omit the leading "http://" from the URL to be converted for a briefer more readable URL:

download vCards from hCards
https://h2vx.com/vcf/URL
e.g. https://h2vx.com/vcf/microformats.org/wiki/events
download iCalendar from hCalendar
https://h2vx.com/ics/URL
e.g. https://h2vx.com/ics/microformats.org/wiki/events
subscribe to hCalendar from hCalendar
webcal://h2vx.com/ics/URL
e.g. webcal://h2vx.com/ics/microformats.org/wiki/events
https://h2vx.com/ics/sub/URL for systems which don't support auto-linking of webcal: URLs, e.g. MediaWiki, Twitter.
e.g. https://h2vx.com/ics/sub/microformats.org/wiki/events

user agent strings

H2VX uses two user agent strings, when retrieving hCards and hCalendars respectively:

  • H2VX contacts proxy (http://h2vx.com/vcf/)
  • H2VX events proxy (http://h2vx.com/ics/)

You may see occurrences of these in your web server logs when users of H2VX convert hCards and hCalendar events on your pages.

built

H2VX is built and maintained by Tantek with:

  • X2V XSLTs by Brian Suda
  • PHP get-contact.php get-cal.php originally written by Brian, updated/factored by Tantek with various improvements.
  • PHP common.php (and Javascript common.js) by Tantek which incorporate CASSISv0 open source from http://cassisproject.com/
  • XHTML1+CSS+JS front-end design/interface by Tantek (view source of h2vx.com in your browser for more).

open source

H2VX is available on the microformats github:

setting up your own H2VX

(in progress)

history

Some of the open source history behind H2VX can be found with history of X2V. E.g.

issues

Found a problem with H2VX?

Please:

  1. Check it with https://dev.h2vx.com/ to see if the dev version fixes it
  2. If not, add it to: https://github.com/microformats/h2vx.com/issues

Want to help?

Please move issues in this list to https://github.com/microformats/h2vx.com/issues, leaving the subheads intact for now with just a permalink to each github issue under each respective heading.

value class pattern empty span fails

  • This calendar: http://www.ustreetmusichall.com/calendar results in a ics file that gives Error at line 11: Unparseable date: "T220000" when imported into Google calendar
    • 2012-154 verified with both h2vx.com and dev.h2vx.com. Page uses value class pattern, in particular, empty span technique which seems valid. Need to make a test case of this to isolate and track down. - Tantek 19:42, 2 June 2012 (UTC)
<span class="start dtstart">
 <span class="value-title" title="2012-06-02T22:00:00-04:00"></span>
 10:00 pm
</span>

empty document from arjw.ifmw.mobi

(needs investigation)

  • Have been getting an error where it says that its a "empty document; no HTML can be found" from my site. As with the comment below, there are no issues with using Operator to extract. I used to use this service a good while ago, but since moving to PHP/HTML5 for this page, I'm getting this error. Antoine RJ Wright 04:17:49, 7 January 2010 (UTC)

unable to extract hCards on marinersmexico

(needs investigation)

  • The last few days I've not been able to retrieve vCards from hCards on this site using H2VX yet Operator is nicely extracting them. Comments and insights appreciated. ChipD 05:13, 12 November 2010 (UTC)

hCard ids not working with referrer

(needs investigation)

  • Can't seem to get #hcard-ids working with the /referrer option. Jnpcl 00:01, 14 October 2010 (UTC)
    • Could you provide the URL you are having trouble with? Tantek 18:51, 29 October 2010 (UTC)

hard to find URLs to put on a page

  • As a Web page author I find the H2XV site a bit awkward to use -- it's difficult to find the URLs to use in my Web page. As an end-user it fine to have the H2VX bookmarklets in my toolbar, but as a page author I can't be sure everyone has the bookmarklets or Operator installed. Bob Jonkman 00:56, 10 November 2009 (UTC)

possible problem with iOS6

from: https://twitter.com/equivalentideas/status/275120059788169216

robots.txt prevents subscription in Google Reader

Google Reader won't subscribe to any h2vx hCalendar files due to robots.txt. TomMorris 15:33, 1 June 2011 (UTC)

Google Calendar also fails because of their robots.txt which disallows robots from fetching and therefore caching the ical files. Jayvdb 22:16, 5 May 2012 (UTC)

Apparently, I was correct in thinking Google would likely have a unique user-agent specifically for calendar fetches (see e.g. quote below) but they don't. It's not on the UA list and I tested empirically (`sudo nc -v -l -p 80`) and it is a generic UA. ;( Someone should retest Google Reader to see if it works.

Google has several other user-agents, including Feedfetcher (user-agent Feedfetcher-Google). Since Feedfetcher requests come from explicit action by human users who have added the feeds to their Google home page or to Google Reader], and not from automated crawlers, Feedfetcher does not follow robots.txt guidelines. You can prevent Feedfetcher from crawling your site by configuring your server to serve a 404, 410, or other error status message to user-agent Feedfetcher-Google.More information about Feedfetcher.

<ref>http://support.google.com/webmasters/bin/answer.py?hl=en&answer=182072</ref> --Jeremyb 22:34, 12 June 2012 (UTC)

On second thought, I tested w/ a real webserver (+tcpdump) to see if /robots.txt was fetched with a different agent than the actual feed. no such luck.
From: googlebot(at)googlebot.com
User-Agent: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
--Jeremyb 22:34, 12 June 2012 (UTC)

Date incorrect when not using abbr element for dtstart

I had a date marked up like so <em class="detail dtstart" title="2010-10-20">Wednesday, October 20, 2010</em>. It was not being parsed correctly until I changed it to use <abbr>, but the element shouldn't really make any difference.

.vcf not formed properly

When opening the resultant .vcf files with Outlook, all non-standard characters are not shown correctly, due to the fact that the returned file is not encoded as UTF-8 without the BOM. Thus, these files are useless for use with Outlook - one of the most used e-mail clients.

Can we get a UTF-8 file returned without the BOM?

Missing data/Wrong encoding

  • We'd like to use your service for the new version of our location list (Free WiFi Hotspots in Austria) but ran into problems:
    • After importing the vCard, the Mac OS X Address book showed only the phone number (not as work), the URL, zip code and city. No name and no street.
    • The vCard itself is encoded in ISO-8859-1, although having “CHARSET=utf-8” instructions. The source is also encoded in UTF-8.
    • Here's the HTML code, we've been using:
<div class="vcard">
<h2 class="fn org"><img class="photo" src="http://static.freewave.at/logos/testa_rossa_caffe_150.gif" alt="Testa Rossa Caffèbar Logo" />Testa Rossa Caffèbar</h2>
<div class="adr work"><span class="street-address">Mahlerstraße 4 </span><br />
 <span class="postal-code">1010</span> <span class="locality">Wien</span><br />
 <span class="country-name">Österreich</span></div>
<div><span class="tel work">+43 699 161 616 61</span><br />
 <a class="url work" href="http://www.testarossawien.at/">http://www.testarossawien.at/</a><br />
 <a class="email work" href="mailto:"></a></div>
<div class="geo"><span class="latitude">48.20275</span>,<span class="longitude">16.37079</span></div>
</div>

Thanks! --Vividvisions 17:25, 4 May 2010 (UTC)

I got the same type of problem with non ASCII content. Don't know which part is responsible, though. --Jean-Luc Geering 2010-05-10

+1, I was coaching the dudes at http://hagreve.com/ implementing hCalendar and they reached the roadblock of having the accented chars wrongly encoded on the .ics They resorted to using other ways of building an ics. :sadface: Thanks. -- andr3

HTML5 support

  • <meta charset=utf-8> isn't recognized so the output is double encoded. Greut 11:12, 4 January 2010 (UTC)
  • new HTML5 elements (such as header, footer, section) are not supported (this is because they are stripped out by PHP Tidy and thus ignored). Tantek 16:13, 19 January 2010 (UTC)
    possible solutions:

Please give feedback on the https://dev.h2vx.com/ HTML5 support here:

  • Is there a timeout/throttling on requests to dev.h2vx? I've been getting inconsistent returns on ics and webcal requests from the same markup. Don't know what else could be the issue. When it works, it works great though!
    • Any throttling we've been adding manually as necessary. What URL are you trying? Tantek 18:04, 14 July 2011 (UTC)
  • ...

Previously:

  • Possible options
    • 1. Use a proper PHP html5lib (being coded by the HTML5 community, but not available/functional yet AFAIK) - still might do this long term.
    • 2. Add a flag to the H2VX processing URL which says "I'm a crazy XML person and my markup is 100% well formed XML, please don't tidy, please break and fail to process if it's not well formed".
    • in either case, new special HTML5 elements (like time) will require an update to X2V to know to properly handle/parse new semantic attributes (like datetime).

mouse events

  • The "what are microformats?" style descriptions only appear on mouse-over of the trigger terms (those with class="term"). It does not appear at all when keyboard navigation is used, making it somewhat inaccessible. The problem here is that the trigger elements are the ones that should receive focus, but not being links they are not in the tabbing order so do not, hence the helper text never appears for keyboard users. Norm 10:39, 6 November 2009 (UTC)
    • Quick fix: remove visibility:hidden from .term .info. Andr3

page semantics

  • <i class="term"> should be made into <em>'s for semantic reasons. ;) Andr3
    • Note that the <i> element is used deliberately for "instance" of a term - this is an HTML5 semantic, and is more accurate in this instance than "em"phasis. — Tantek 18:29, 11 November 2009 (UTC)

not possible to use dtstart with timezone in abbr title

  • Adding a timezone to dtstart using abbr pattern leads to The Shining-style debug output repeating “Object is a string”. I tried adding a time with timezone via the value class pattern, and while the vcard downloads the time is incorrect ~~Oli 00:53 15 February 2010 (+09:00)
    • Oli, could you provide a URL to a live example/test case that you were using so we can test with it to try to see exactly what is going on? Thanks! Tantek 17:35, 15 February 2010 (UTC)

microformats2 support

microformats2 support - when is it coming? from


resolved

Resolved issues are moved to this section. If this grows too big we can move it to h2vx-issues-resolved

  • ...

2019-03-07 HTML5 article support

Fatal error Call-time pass-by-reference

  • 2015-10-18 resolved - should be fixed. Please retry your use-cases and move this back to being an open issue if you still see problems (and please provide URLs to the test cases). Tantek 02:08, 19 October 2015 (UTC)

Issue captured on github too: https://github.com/microformats/h2vx.com/issues/2

Hi Tantek

I've also encountered this issue - I'm guessing that someone has upgraded PHP on your server - the pass-by-reference behaviour is deprecated in PHP 5. Would it be possible to refactor these functions to pass by value? We are consuming these services in a public site.

Many thanks

Shaun

Dipdapdop 08:04, 14 October 2015 (UTC)

Fatal error: Call-time pass-by-reference has been removed in /home/tantek/domains/h2vx.com/public_html/dev/ics/get-cal.php on line 141


The contact conversion service @ http://h2vx.com/vcf/ fails with the error : Fatal error: Call-time pass-by-reference has been removed in /home/tantek/domains/h2vx.com/public_html/vcf/get-contact.php on line 106

Why this error now ? Is it possible to repair it ? This link is very useful Thank you

The error is on line 106, looking at the source-code, 106 is a print statement. It might be useful to turn on error reporting http://php.net/manual/en/function.error-reporting.php to get a better explanation and what line in the code that is on the server is failing. Then we can debug. Like 114 the regular expression smells like it might be the problem. There is an & which would be pass-by-reference. - Brian

It is the line with preg_match_all( '/FN.*?:(.*)/i', $Str, &$matches); in it, both for get-contact and get-cal. - Tantek

2013-06-19

  • 2013-06-19 h2vx vcf service fails to parse a vcard if the vcard class is set on an HTML5 <article> element. Will return with a test page URL. Urlyman 15:12, 19 June 2013 (UTC)
    • Try it with dev.h2vx.com - which supports new HTML5 elements. - Tantek 23:08, 28 September 2013 (UTC)

2009-11-11

  • 2009-11-11 We were using the Technorati hosted service. Surprised to see it redirected to H2XV, took a minute to realize what was going on. Thanks for picking up the service! Both the hosting provider and the new user agent are blocked by default on our side to prevent scraping. To be more transparent, maybe you could change the UA similar to the old one: from "Technorati contacts proxy (http://technorati.com/contacts/)" to "H2VX contacts proxy (http://h2vx.com/vcf/)" DineMonkey 15:47, 11 November 2009 (UTC)
    • I've updated the user agent strings per your recommendation and documented them above as well. Tantek 18:29, 11 November 2009 (UTC)
      • H2VX contacts proxy (http://h2vx.com/vcf/)
      • H2VX events proxy (http://h2vx.com/ics/)

closed

Once a resolved issue has no further actions (and ideally is verified by the issue reporter), it can be closed and moved to this section. If this grows too big we can move it to h2vx-issues-closed

feedback

Have feedback on H2VX like suggested improvements?

Please file an issue on the GitHub repo!

Previous issues filed here that need to be processed (either done, or copied/moved to GitHub issue for tracking)

  • "a short 'about' page would be worthwhile IMO, especially for adding to the homepage." - Norm on microformats-discuss.
  • It would be very useful to be able to POST or GET an HTML snippet to request a conversion. I have created a Javascript button that will easily rip out the code and send it to H2VX.com: http://1daylater.com/H2VX_snippets.html useful for dynamic or password protected webpages
  • ...

related

There is at least one related H2V service that uses the same X2V XSLT files as H2VX:

old

Previously Technorati hosted X2V conversion services:

see also