Skip to content

Instantly share code, notes, and snippets.

@katagaki
Last active February 7, 2025 13:19
Show Gist options
  • Save katagaki/104aa07f7b61185253bffc5ad2babbc6 to your computer and use it in GitHub Desktop.
Save katagaki/104aa07f7b61185253bffc5ad2babbc6 to your computer and use it in GitHub Desktop.
Opener manifest (openerManifest-v5.json) archived from 20 January 2022 from https://github.com/timonus/OpenerManifest/blob/master/openerManifest-v5.json.
{
"actions":[
{
"title":"Open Tweet",
"regex":"https?://(mobile\\.|www\\.|m\\.)?twitter\\.com/(@?[a-zA-Z0-9_]{1,15}/)?(status|i/web/status|statuses|i/topics/tweet)/(\\d+).*$",
"testInputs":[
"https://twitter.com/zpower/status/588561590997352448",
"https://mobile.twitter.com/kiebk/status/599159327056863232?cn=cmVwbHk%3D&refsrc=email",
"https://twitter.com/i/web/status/814237378382622720",
"https://twitter.com/hamburger/statuses/221225038941126657",
"https://twitter.com/i/topics/tweet/1180616320599183360?cn=ZmxleGlibGVfcmVjcw%3D%3D&refsrc=email"
],
"formats":[
{
"appId":"twitter",
"format":"twitter://status?id=$4",
"testResults":[
"twitter://status?id=588561590997352448",
"twitter://status?id=599159327056863232",
"twitter://status?id=814237378382622720",
"twitter://status?id=221225038941126657",
"twitter://status?id=1180616320599183360"
]
},
{
"appId":"tweetbot",
"format":"tweetbot:///status/$4",
"testResults":[
"tweetbot:///status/588561590997352448",
"tweetbot:///status/599159327056863232",
"tweetbot:///status/814237378382622720",
"tweetbot:///status/221225038941126657",
"tweetbot:///status/1180616320599183360"
]
},
{
"appId":"twitterrific",
"format":"twitterrific:///tweet?id=$4",
"testResults":[
"twitterrific:///tweet?id=588561590997352448",
"twitterrific:///tweet?id=599159327056863232",
"twitterrific:///tweet?id=814237378382622720",
"twitterrific:///tweet?id=221225038941126657",
"twitterrific:///tweet?id=1180616320599183360"
]
},
{
"appId":"spring",
"format":"spring://twitter.com/x/status/$4",
"testResults":[
"spring://twitter.com/x/status/588561590997352448",
"spring://twitter.com/x/status/599159327056863232",
"spring://twitter.com/x/status/814237378382622720",
"spring://twitter.com/x/status/221225038941126657",
"spring://twitter.com/x/status/1180616320599183360"
]
},
{
"appId":"fenix",
"format":"fenix://tweet?id=$4",
"testResults":[
"fenix://tweet?id=588561590997352448",
"fenix://tweet?id=599159327056863232",
"fenix://tweet?id=814237378382622720",
"fenix://tweet?id=221225038941126657",
"fenix://tweet?id=1180616320599183360"
]
},
{
"appId":"aviary",
"format":"aviary://twitter.com/statuses/$4",
"testResults":[
"aviary://twitter.com/statuses/588561590997352448",
"aviary://twitter.com/statuses/599159327056863232",
"aviary://twitter.com/statuses/814237378382622720",
"aviary://twitter.com/statuses/221225038941126657",
"aviary://twitter.com/statuses/1180616320599183360"
]
}
]
},
{
"title":"Add Tweet to Collection",
"regex":"https?://(mobile\\.|www\\.|m\\.)?twitter\\.com/(@?[a-zA-Z0-9_]{1,15}/)?(status|i/web/status|statuses)/(\\d+).*$",
"testInputs":[
"https://twitter.com/zpower/status/588561590997352448",
"https://mobile.twitter.com/kiebk/status/599159327056863232?cn=cmVwbHk%3D&refsrc=email",
"https://twitter.com/i/web/status/814237378382622720",
"https://twitter.com/hamburger/statuses/221225038941126657"
],
"formats":[
{
"appId":"charm",
"format":"x-charm://collect/$4",
"testResults":[
"x-charm://collect/588561590997352448",
"x-charm://collect/599159327056863232",
"x-charm://collect/814237378382622720",
"x-charm://collect/221225038941126657"
]
}
]
},
{
"title":"Open Profile",
"regex":"https?://(mobile\\.|www\\.|m\\.)?twitter\\.com/@?(?!search)(?!login)([a-zA-Z0-9_]{1,15})(/with_replies|/following|/followers|/media|/favorites)?/?(\\?.*)?$",
"testInputs":[
"https://mobile.twitter.com/chillmage/with_replies",
"https://twitter.com/hashtag/ThingsILearnedFromTheLeft?src=hash",
"https://mobile.twitter.com/kiebk/status/599159327056863232",
"https://twitter.com/chriswelch?protected_redirect=true",
"https://twitter.com/search?q=opener%20app&src=typd",
"https://twitter.com/branches_app/",
"https://twitter.com/branches_app/?",
"https://mobile.twitter.com/FrancescoD_Ales/following",
"https://twitter.com/login?redirect_after_login=%2Fi%2Ftopics%2Ftweet%2F1180616320599183360%3Fcn%3DZmxleGlibGVfcmVjcw%253D%253D%26refsrc%3Demail"
],
"formats":[
{
"appId":"twitter",
"format":"twitter://user?screen_name=$2",
"testResults":[
"twitter://user?screen_name=chillmage",
null,
null,
"twitter://user?screen_name=chriswelch",
null,
"twitter://user?screen_name=branches_app",
"twitter://user?screen_name=branches_app",
"twitter://user?screen_name=FrancescoD_Ales",
null
]
},
{
"appId":"tweetbot",
"format":"tweetbot:///user_profile/$2",
"testResults":[
"tweetbot:///user_profile/chillmage",
null,
null,
"tweetbot:///user_profile/chriswelch",
null,
"tweetbot:///user_profile/branches_app",
"tweetbot:///user_profile/branches_app",
"tweetbot:///user_profile/FrancescoD_Ales",
null
]
},
{
"appId":"twitterrific",
"format":"twitterrific:///profile?screen_name=$2",
"testResults":[
"twitterrific:///profile?screen_name=chillmage",
null,
null,
"twitterrific:///profile?screen_name=chriswelch",
null,
"twitterrific:///profile?screen_name=branches_app",
"twitterrific:///profile?screen_name=branches_app",
"twitterrific:///profile?screen_name=FrancescoD_Ales",
null
]
},
{
"appId":"spring",
"format":"spring://twitter.com/$2",
"testResults":[
"spring://twitter.com/chillmage",
null,
null,
"spring://twitter.com/chriswelch",
null,
"spring://twitter.com/branches_app",
"spring://twitter.com/branches_app",
"spring://twitter.com/FrancescoD_Ales",
null
]
},
{
"appId":"fenix",
"format":"fenix://profile?screen_name=$2",
"testResults":[
"fenix://profile?screen_name=chillmage",
null,
null,
"fenix://profile?screen_name=chriswelch",
null,
"fenix://profile?screen_name=branches_app",
"fenix://profile?screen_name=branches_app",
"fenix://profile?screen_name=FrancescoD_Ales",
null
]
},
{
"appId":"aviary",
"format":"aviary://twitter.com/$2",
"testResults":[
"aviary://twitter.com/chillmage",
null,
null,
"aviary://twitter.com/chriswelch",
null,
"aviary://twitter.com/branches_app",
"aviary://twitter.com/branches_app",
"aviary://twitter.com/FrancescoD_Ales",
null
]
}
]
},
{
"title":"Open Profile",
"regex":"https?://(mobile\\.|www\\.|m\\.)?twitter\\.com/intent/user\\?.*screen_name=?@?([a-zA-Z0-9_]{1,15}).*$",
"testInputs":[
"https://twitter.com/intent/user?screen_name=addyosmani"
],
"formats":[
{
"appId":"twitter",
"format":"twitter://user?screen_name=$2",
"testResults":[
"twitter://user?screen_name=addyosmani"
]
},
{
"appId":"tweetbot",
"format":"tweetbot:///user_profile/$2",
"testResults":[
"tweetbot:///user_profile/addyosmani"
]
},
{
"appId":"twitterrific",
"format":"twitterrific:///profile?screen_name=$2",
"testResults":[
"twitterrific:///profile?screen_name=addyosmani"
]
},
{
"appId":"spring",
"format":"spring://twitter.com/$2",
"testResults":[
"spring://twitter.com/addyosmani"
]
},
{
"appId":"fenix",
"format":"fenix://profile?screen_name=$2",
"testResults":[
"fenix://profile?screen_name=addyosmani"
]
},
{
"appId":"aviary",
"format":"aviary://twitter.com/$2",
"testResults":[
"aviary://twitter.com/addyosmani"
]
}
]
},
{
"title":"Open Hashtag",
"regex":"https?://(mobile\\.|www\\.|m\\.)?twitter\\.com/hashtag/([a-zA-Z0-9_]+).*$",
"testInputs":[
"https://mobile.twitter.com/chillmage/with_replies",
"https://twitter.com/hashtag/ThingsILearnedFromTheLeft?src=hash"
],
"formats":[
{
"appId":"twitter",
"format":"twitter://search?query=%23$2",
"testResults":[
null,
"twitter://search?query=%23ThingsILearnedFromTheLeft"
]
},
{
"appId":"tweetbot",
"format":"tweetbot:///search?query=%23$2",
"testResults":[
null,
"tweetbot:///search?query=%23ThingsILearnedFromTheLeft"
]
},
{
"appId":"twitterrific",
"format":"twitterrific:///search?q=%23$2",
"testResults":[
null,
"twitterrific:///search?q=%23ThingsILearnedFromTheLeft"
]
},
{
"appId":"spring",
"format":"spring://search?text=%23$2",
"testResults":[
null,
"spring://search?text=%23ThingsILearnedFromTheLeft"
]
}
]
},
{
"title":"Open Search",
"regex":"https?://(mobile\\.|www\\.|m\\.)?twitter\\.com/search.*q=([^&]+).*$",
"testInputs":[
"https://twitter.com/search?f=tweets&vertical=default&q=To%20the%20dinosaurs%2C%20we%20live%20in%20a%20post-apocalyptic%20future&src=typd",
"https://twitter.com/search?q=opener%20app&src=typd",
"https://mobile.twitter.com/search?q=Panda%20amazon&s=typd"
],
"formats":[
{
"appId":"twitter",
"format":"twitter://search?query=$2",
"testResults":[
"twitter://search?query=To%20the%20dinosaurs%2C%20we%20live%20in%20a%20post-apocalyptic%20future",
"twitter://search?query=opener%20app",
"twitter://search?query=Panda%20amazon"
]
},
{
"appId":"tweetbot",
"format":"tweetbot:///search?query=$2",
"testResults":[
"tweetbot:///search?query=To%20the%20dinosaurs%2C%20we%20live%20in%20a%20post-apocalyptic%20future",
"tweetbot:///search?query=opener%20app",
"tweetbot:///search?query=Panda%20amazon"
]
},
{
"appId":"twitterrific",
"format":"twitterrific:///search?q=$2",
"testResults":[
"twitterrific:///search?q=To%20the%20dinosaurs%2C%20we%20live%20in%20a%20post-apocalyptic%20future",
"twitterrific:///search?q=opener%20app",
"twitterrific:///search?q=Panda%20amazon"
]
},
{
"appId":"spring",
"format":"spring://search?text=$2",
"testResults":[
"spring://search?text=To%20the%20dinosaurs%2C%20we%20live%20in%20a%20post-apocalyptic%20future",
"spring://search?text=opener%20app",
"spring://search?text=Panda%20amazon"
]
}
]
},
{
"title":"Open Moment",
"regex":"https?://(mobile\\.|www\\.)?twitter\\.com/i/moments/(\\d+).*$",
"testInputs":[
"https://twitter.com/i/moments/651796284307849217",
"https://mobile.twitter.com/i/moments/651796284307849217"
],
"formats":[
{
"appId":"twitter",
"format":"twitter://moment?moment_id=$2",
"testResults":[
"twitter://moment?moment_id=651796284307849217",
"twitter://moment?moment_id=651796284307849217"
]
}
]
},
{
"title":"Open Live Moment",
"regex":"https?://(mobile\\.|www\\.|m\\.)?twitter\\.com/i/live/(\\d+).*$",
"testInputs":[
"https://mobile.twitter.com/i/live/768633364911788032",
"https://twitter.com/i/live/768633364911788032"
],
"formats":[
{
"appId":"twitter",
"format":"twitter://live/timeline/$2",
"testResults":[
"twitter://live/timeline/768633364911788032",
"twitter://live/timeline/768633364911788032"
]
}
]
},
{
"title":"Open Event",
"regex":"https?://(mobile\\.|www\\.|m\\.)?twitter\\.com/i/events/(\\d+).*$",
"testInputs":[
"https://twitter.com/i/events/1180824138832723968"
],
"formats":[
{
"appId":"twitter",
"format":"twitter://events/timeline/$2",
"testResults":[
"twitter://events/timeline/1180824138832723968"
]
}
]
},
{
"title":"Open Space",
"regex":"https?://(mobile\\.|www\\.|m\\.)?twitter\\.com/i/spaces/(\\w+).*$",
"testInputs":[
"https://mobile.twitter.com/i/spaces/1nAKEYlloblKL"
],
"formats":[
{
"appId":"twitter",
"format":"twitter://spaces/$2",
"testResults":[
"twitter://spaces/1nAKEYlloblKL"
]
}
]
},
{
"title":"Open Collection",
"regex":"https?://(mobile\\.|www\\.|m\\.)?twitter\\.com/@?([a-zA-Z0-9_]{1,15})/timelines/(\\d+).*?$",
"testInputs":[
"https://twitter.com/benward/timelines/648313913201692672",
"https://twitter.com/@benward/timelines/648313913201692672",
"https://mobile.twitter.com/benward/timelines/648313913201692672",
"http://mobile.twitter.com/benward/timelines/648313913201692672?foo=bar"
],
"formats":[
{
"appId":"twitter",
"format":"twitter://custom_timeline?screen_name=$2&timeline_id=$3",
"testResults":[
"twitter://custom_timeline?screen_name=benward&timeline_id=648313913201692672",
"twitter://custom_timeline?screen_name=benward&timeline_id=648313913201692672",
"twitter://custom_timeline?screen_name=benward&timeline_id=648313913201692672",
"twitter://custom_timeline?screen_name=benward&timeline_id=648313913201692672"
]
}
]
},
{
"title":"Open List",
"regex":"https?://(mobile\\.|www\\.|m\\.)?twitter\\.com/@?(?!search|i)([a-zA-Z0-9_]{1,15})/lists/([^/]+)/?(\\?.*)?$",
"testInputs":[
"https://twitter.com/ImJeffBell/lists/jeff-s-central-asia-list",
"https://twitter.com/i/lists/1344918930687729664"
],
"formats":[
{
"appId":"tweetbot",
"format":"tweetbot://$2/list/$3",
"testResults":[
"tweetbot://ImJeffBell/list/jeff-s-central-asia-list",
null
]
},
{
"appId":"twitterrific",
"format":"twitterrific5://$2/list?name=$3",
"testResults":[
"twitterrific5://ImJeffBell/list?name=jeff-s-central-asia-list",
null
]
}
]
},
{
"title":"Open List",
"regex":"https?://(mobile\\.|www\\.|m\\.)?(twitter\\.com/@?(?!search)([a-zA-Z0-9_]{0,15})/lists/([^/]+)/?(\\?.*)?)$",
"testInputs":[
"https://twitter.com/ImJeffBell/lists/jeff-s-central-asia-list",
"https://twitter.com/i/lists/1344918930687729664"
],
"formats":[
{
"appId":"spring",
"format":"spring://$2",
"testResults":[
"spring://twitter.com/ImJeffBell/lists/jeff-s-central-asia-list",
"spring://twitter.com/i/lists/1344918930687729664"
]
}
]
},
{
"title":"Open Mute Filter",
"regex":"https?://(www\\.)?tapbots\\.com.*\\?url=.*$",
"testInputs":[
"https://tapbots.com/tweetbot/mute?url=tweetbot%3A%2F%2F%2Fmute%2Fkeyword%3Fregex%3D1%26text%3D%2528%253Fi%2529%2528keep%2520calm%2520and%2520%255Cw%252B%2529",
"http://tapbots.com/?url=tweetbot%3A%2F%2F%2Fmute%2Fkeyword%3FmuteLists%3D1%26regex%3D1%26text%3D%2528%253Fi%2529%2528pok.%2528%255CS%2529%257B3%252C%257D%257Cgym%2528%2520%2529%253Fbattle%2529"
],
"formats":[
{
"appId":"tweetbot",
"script":"function process(url, completionHandler) { completionHandler('tweetbot:///' + decodeURIComponent(url.split('tweetbot%3A%2F%2F%2F')[1])); }",
"script2":"function process(url, completionHandler) { completionHandler('tweetbot:///' + decodeURIComponent(url.split('tweetbot%3A%2F%2F%2F')[1])); }",
"testResults":[
"tweetbot:///mute/keyword?regex=1&text=%28%3Fi%29%28keep%20calm%20and%20%5Cw%2B%29",
"tweetbot:///mute/keyword?muteLists=1&regex=1&text=%28%3Fi%29%28pok.%28%5CS%29%7B3%2C%7D%7Cgym%28%20%29%3Fbattle%29"
]
}
]
},
{
"title":"Open Muffle",
"regex":"https?://(www\\.)?twitterrific\\.com/ios/muffle/?\\?add=([^&]*)$",
"testInputs":[
"http://twitterrific.com/ios/muffle?add=Imma%20let%20you%20finish%20%3A%3A%20Kanye"
],
"formats":[
{
"appId":"twitterrific",
"format":"twitterrific://muffle?add=$2",
"testResults":[
"twitterrific://muffle?add=Imma%20let%20you%20finish%20%3A%3A%20Kanye"
]
}
]
},
{
"title":"Compose Tweet",
"regex":"https?://(mobile\\.|www\\.|m\\.)?twitter\\.com/intent/tweet/?\\?.*$",
"testInputs":[
"https://twitter.com/intent/tweet/?url=https%3A%2F%2Fon.nrdc.org%2F2PyiQjG&text=Tell%20the%20%40StateDept%20to%20stop%20%23KeystoneXL.%20Submit%20a%20public%20comment%20today.%20via%20%40NRDC%20&original_referer=https%3A%2F%2Fact.nrdc.org%2Fletter%2Fkeystone-xl-181102%3Fsource%3Dact_nrdcnewsletter%26tkd%3D1023667%26utm_source%3Dnewsletterne%26utm_medium%3Dmainlinkne%26utm_campaign%3Demail%26t%3D7%26akid%3D2816%252E1023667%252EBUjNPI",
"https://twitter.com/intent/tweet?url=https%3A%2F%2Fon.nrdc.org%2F2PyiQjG&text=Tell%20the%20%40StateDept%20to%20stop%20%23KeystoneXL.%20Submit%20a%20public%20comment%20today.%20via%20%40NRDC%20",
"https://twitter.com/intent/tweet?text=Tell%20the%20%40StateDept%20to%20stop%20%23KeystoneXL.%20Submit%20a%20public%20comment%20today.%20via%20%40NRDC%20&url=https%3A%2F%2Fon.nrdc.org%2F2PyiQjG",
"https://twitter.com/intent/tweet?text=Tell%20the%20%40StateDept%20to%20stop%20%23KeystoneXL.%20Submit%20a%20public%20comment%20today.%20via%20%40NRDC%20",
"https://twitter.com/intent/tweet?url=https%3A%2F%2Fon.nrdc.org%2F2PyiQjG",
"https://twitter.com/intent/tweet?counturl=https%3A%2F%2Fwww.theverge.com%2F2018%2F11%2F8%2F18072998%2Ffacebook-portal-plus-smart-display-messenger-review-price-specs&text=Facebook+Portal+review%3A+trust+fail&url=https%3A%2F%2Fwww.theverge.com%2F2018%2F11%2F8%2F18072998%2Ffacebook-portal-plus-smart-display-messenger-review-price-specs&via=Verge",
"https://twitter.com/intent/tweet?text=foo&hashtags=bar,baz,whatup"
],
"formats":[
{
"appId":"twitter",
"script2":"function getParameterByName(url, name) { name = name.replace(RegExp('[\\[]'), '\\\\[').replace(RegExp('[\\]]'), '\\\\]'); var regex = RegExp('[\\\\?&]' + name + '=([^&#]*)'); results = regex.exec(url); return results === null ? '' : decodeURIComponent(results[1].replace(RegExp('\\\\+', 'g'), ' ')); } function process(url, completionHandler) { var link = getParameterByName(url, 'url'); var via = getParameterByName(url, 'via'); var result = getParameterByName(url, 'text'); if (link && link.length > 0) { if (result && result.length > 0) { result = result + ' ' + link; } else { result = link; } } if (via && via.length > 0) { if (result && result.length > 0) { result = result + ' via @' + via; } else { result = 'via @' + via; } } var hashtags = getParameterByName(url, 'hashtags'); var hashtagString; if (hashtags && hashtags.length > 0) { hashtagString = hashtags.split(',').map(function(x) { return '#' + x }).join(' '); } if (hashtagString && hashtagString.length > 0) { if (result && result.length > 0) { result = result + ' ' + hashtagString; } else { result = hashtagString; } } if (result && result.length > 0) { result = 'twitter://post?message=' + encodeURIComponent(result); } completionHandler(result); }",
"testResults":[
"twitter://post?message=Tell%20the%20%40StateDept%20to%20stop%20%23KeystoneXL.%20Submit%20a%20public%20comment%20today.%20via%20%40NRDC%20%20https%3A%2F%2Fon.nrdc.org%2F2PyiQjG",
"twitter://post?message=Tell%20the%20%40StateDept%20to%20stop%20%23KeystoneXL.%20Submit%20a%20public%20comment%20today.%20via%20%40NRDC%20%20https%3A%2F%2Fon.nrdc.org%2F2PyiQjG",
"twitter://post?message=Tell%20the%20%40StateDept%20to%20stop%20%23KeystoneXL.%20Submit%20a%20public%20comment%20today.%20via%20%40NRDC%20%20https%3A%2F%2Fon.nrdc.org%2F2PyiQjG",
"twitter://post?message=Tell%20the%20%40StateDept%20to%20stop%20%23KeystoneXL.%20Submit%20a%20public%20comment%20today.%20via%20%40NRDC%20",
"twitter://post?message=https%3A%2F%2Fon.nrdc.org%2F2PyiQjG",
"twitter://post?message=Facebook%20Portal%20review%3A%20trust%20fail%20https%3A%2F%2Fwww.theverge.com%2F2018%2F11%2F8%2F18072998%2Ffacebook-portal-plus-smart-display-messenger-review-price-specs%20via%20%40Verge",
"twitter://post?message=foo%20%23bar%20%23baz%20%23whatup"
]
},
{
"appId":"tweetbot",
"script2":"function getParameterByName(url, name) { name = name.replace(RegExp('[\\[]'), '\\\\[').replace(RegExp('[\\]]'), '\\\\]'); var regex = RegExp('[\\\\?&]' + name + '=([^&#]*)'); results = regex.exec(url); return results === null ? '' : decodeURIComponent(results[1].replace(RegExp('\\\\+', 'g'), ' ')); } function process(url, completionHandler) { var link = getParameterByName(url, 'url'); var via = getParameterByName(url, 'via'); var result = getParameterByName(url, 'text'); if (link && link.length > 0) { if (result && result.length > 0) { result = result + ' ' + link; } else { result = link; } } if (via && via.length > 0) { if (result && result.length > 0) { result = result + ' via @' + via; } else { result = 'via @' + via; } } var hashtags = getParameterByName(url, 'hashtags'); var hashtagString; if (hashtags && hashtags.length > 0) { hashtagString = hashtags.split(',').map(function(x) { return '#' + x }).join(' '); } if (hashtagString && hashtagString.length > 0) { if (result && result.length > 0) { result = result + ' ' + hashtagString; } else { result = hashtagString; } } if (result && result.length > 0) { result = 'tweetbot:///post?text=' + encodeURIComponent(result); } completionHandler(result); }",
"testResults":[
"tweetbot:///post?text=Tell%20the%20%40StateDept%20to%20stop%20%23KeystoneXL.%20Submit%20a%20public%20comment%20today.%20via%20%40NRDC%20%20https%3A%2F%2Fon.nrdc.org%2F2PyiQjG",
"tweetbot:///post?text=Tell%20the%20%40StateDept%20to%20stop%20%23KeystoneXL.%20Submit%20a%20public%20comment%20today.%20via%20%40NRDC%20%20https%3A%2F%2Fon.nrdc.org%2F2PyiQjG",
"tweetbot:///post?text=Tell%20the%20%40StateDept%20to%20stop%20%23KeystoneXL.%20Submit%20a%20public%20comment%20today.%20via%20%40NRDC%20%20https%3A%2F%2Fon.nrdc.org%2F2PyiQjG",
"tweetbot:///post?text=Tell%20the%20%40StateDept%20to%20stop%20%23KeystoneXL.%20Submit%20a%20public%20comment%20today.%20via%20%40NRDC%20",
"tweetbot:///post?text=https%3A%2F%2Fon.nrdc.org%2F2PyiQjG",
"tweetbot:///post?text=Facebook%20Portal%20review%3A%20trust%20fail%20https%3A%2F%2Fwww.theverge.com%2F2018%2F11%2F8%2F18072998%2Ffacebook-portal-plus-smart-display-messenger-review-price-specs%20via%20%40Verge",
"tweetbot:///post?text=foo%20%23bar%20%23baz%20%23whatup"
]
},
{
"appId":"twitterrific",
"script2":"function getParameterByName(url, name) { name = name.replace(RegExp('[\\[]'), '\\\\[').replace(RegExp('[\\]]'), '\\\\]'); var regex = RegExp('[\\\\?&]' + name + '=([^&#]*)'); results = regex.exec(url); return results === null ? '' : decodeURIComponent(results[1].replace(RegExp('\\\\+', 'g'), ' ')); } function process(url, completionHandler) { var link = getParameterByName(url, 'url'); var via = getParameterByName(url, 'via'); var result = getParameterByName(url, 'text'); if (link && link.length > 0) { if (result && result.length > 0) { result = result + ' ' + link; } else { result = link; } } if (via && via.length > 0) { if (result && result.length > 0) { result = result + ' via @' + via; } else { result = 'via @' + via; } } var hashtags = getParameterByName(url, 'hashtags'); var hashtagString; if (hashtags && hashtags.length > 0) { hashtagString = hashtags.split(',').map(function(x) { return '#' + x }).join(' '); } if (hashtagString && hashtagString.length > 0) { if (result && result.length > 0) { result = result + ' ' + hashtagString; } else { result = hashtagString; } } if (result && result.length > 0) { result = 'twitterrific:///post?message=' + encodeURIComponent(result); } completionHandler(result); }",
"testResults":[
"twitterrific:///post?message=Tell%20the%20%40StateDept%20to%20stop%20%23KeystoneXL.%20Submit%20a%20public%20comment%20today.%20via%20%40NRDC%20%20https%3A%2F%2Fon.nrdc.org%2F2PyiQjG",
"twitterrific:///post?message=Tell%20the%20%40StateDept%20to%20stop%20%23KeystoneXL.%20Submit%20a%20public%20comment%20today.%20via%20%40NRDC%20%20https%3A%2F%2Fon.nrdc.org%2F2PyiQjG",
"twitterrific:///post?message=Tell%20the%20%40StateDept%20to%20stop%20%23KeystoneXL.%20Submit%20a%20public%20comment%20today.%20via%20%40NRDC%20%20https%3A%2F%2Fon.nrdc.org%2F2PyiQjG",
"twitterrific:///post?message=Tell%20the%20%40StateDept%20to%20stop%20%23KeystoneXL.%20Submit%20a%20public%20comment%20today.%20via%20%40NRDC%20",
"twitterrific:///post?message=https%3A%2F%2Fon.nrdc.org%2F2PyiQjG",
"twitterrific:///post?message=Facebook%20Portal%20review%3A%20trust%20fail%20https%3A%2F%2Fwww.theverge.com%2F2018%2F11%2F8%2F18072998%2Ffacebook-portal-plus-smart-display-messenger-review-price-specs%20via%20%40Verge",
"twitterrific:///post?message=foo%20%23bar%20%23baz%20%23whatup"
]
},
{
"appId":"spring",
"script2":"function getParameterByName(url, name) { name = name.replace(RegExp('[\\[]'), '\\\\[').replace(RegExp('[\\]]'), '\\\\]'); var regex = RegExp('[\\\\?&]' + name + '=([^&#]*)'); results = regex.exec(url); return results === null ? '' : decodeURIComponent(results[1].replace(RegExp('\\\\+', 'g'), ' ')); } function process(url, completionHandler) { var link = getParameterByName(url, 'url'); var via = getParameterByName(url, 'via'); var result = getParameterByName(url, 'text'); if (link && link.length > 0) { if (result && result.length > 0) { result = result + ' ' + link; } else { result = link; } } if (via && via.length > 0) { if (result && result.length > 0) { result = result + ' via @' + via; } else { result = 'via @' + via; } } var hashtags = getParameterByName(url, 'hashtags'); var hashtagString; if (hashtags && hashtags.length > 0) { hashtagString = hashtags.split(',').map(function(x) { return '#' + x }).join(' '); } if (hashtagString && hashtagString.length > 0) { if (result && result.length > 0) { result = result + ' ' + hashtagString; } else { result = hashtagString; } } if (result && result.length > 0) { result = 'spring://post?text=' + encodeURIComponent(result); } completionHandler(result); }",
"testResults":[
"spring://post?text=Tell%20the%20%40StateDept%20to%20stop%20%23KeystoneXL.%20Submit%20a%20public%20comment%20today.%20via%20%40NRDC%20%20https%3A%2F%2Fon.nrdc.org%2F2PyiQjG",
"spring://post?text=Tell%20the%20%40StateDept%20to%20stop%20%23KeystoneXL.%20Submit%20a%20public%20comment%20today.%20via%20%40NRDC%20%20https%3A%2F%2Fon.nrdc.org%2F2PyiQjG",
"spring://post?text=Tell%20the%20%40StateDept%20to%20stop%20%23KeystoneXL.%20Submit%20a%20public%20comment%20today.%20via%20%40NRDC%20%20https%3A%2F%2Fon.nrdc.org%2F2PyiQjG",
"spring://post?text=Tell%20the%20%40StateDept%20to%20stop%20%23KeystoneXL.%20Submit%20a%20public%20comment%20today.%20via%20%40NRDC%20",
"spring://post?text=https%3A%2F%2Fon.nrdc.org%2F2PyiQjG",
"spring://post?text=Facebook%20Portal%20review%3A%20trust%20fail%20https%3A%2F%2Fwww.theverge.com%2F2018%2F11%2F8%2F18072998%2Ffacebook-portal-plus-smart-display-messenger-review-price-specs%20via%20%40Verge",
"spring://post?text=foo%20%23bar%20%23baz%20%23whatup"
]
}
]
},
{
"title":"Open Post",
"regex":"https?://(www\\.)?(instagram\\.com|instagr\\.am)/([a-zA-Z0-9_\\.]{1,30}/)?(p|tv|reel)/[a-zA-Z0-9_\\-\\.]+.*$",
"testInputs":[
"http://instagram.com/p/zAoa96gwQg",
"https://instagram.com/p/zAoa96gwQg/",
"https://instagram.com/p/zAoa96gwQg/?taken-by=lukesbeard",
"https://www.instagram.com/p/D/",
"https://www.instagram.com/p/J_NvB",
"https://www.instagram.com/p/BcETi8Fh-iInKXHOzaLYEuVlz03w9oqp0TzVI40/",
"https://www.instagram.com/tv/BkvoOs1ACGz/",
"https://www.instagram.com/vincentchu/p/BpBWf8cALX8/?utm_source=ig_twitter_share&igshid=11i7468xnbt7d",
"https://www.instagram.com/vincentchu/p/BpBWf8cALX8/",
"https://www.instagram.com/vincentchu/p/BpBWf8cALX8",
"https://www.instagram.com/reel/CCqOvqlHzgj/?igshid=i59fjzvymc8l"
],
"formats":[
{
"appId":"instagram",
"note":"How to generate Instagram media identifiers without making a request https://carrot.is/coding/instagram-ids / https://db.tt/U7zuLAVxbE. Max length 11 was found experimentally.",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); url = 'https://api.instagram.com/oembed?url=' + url; xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4) { if (xmlhttp.status == 200) { var res = JSON.parse(xmlhttp.responseText); completionHandler('instagram://media?id=' + res['media_id'].split('_')[0]); } else { completionHandler(null); } } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var results = RegExp('http(?:s)?://(?:www\\\\.)?(?:instagram\\\\.com|instagr\\\\.am)/(?:[a-zA-Z0-9_\\\\.]{1,30}/)?(?:p|tv|reel)/([a-zA-Z0-9_\\\\-]{1,11}).*$').exec(url); var match = results != null && results.length > 1 ? results[1] : null; var table = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; table += table.toLowerCase() + '0123456789-_'; var base64Digits = []; for (i = 0; i < match.length; i++) { var digit = table.indexOf(match.charAt(i)); base64Digits.push(digit); } completionHandler('instagram://media?id=' + base64DigitsToBase10String(base64Digits)); }",
"testResults":[
"instagram://media?id=918912099030336544",
"instagram://media?id=918912099030336544",
"instagram://media?id=918912099030336544",
"instagram://media?id=3",
"instagram://media?id=167566273",
"instagram://media?id=1658536526642407560",
"instagram://media?id=1814846106920559027",
"instagram://media?id=1891892270693660156",
"instagram://media?id=1891892270693660156",
"instagram://media?id=1891892270693660156",
"instagram://media?id=2353758603441027107"
]
}
]
},
{
"title":"Open Profile",
"regex":"https?://(www\\.)?(instagram\\.com|instagr\\.am)/(?!explore|p|tv)(stories/)?([a-zA-Z0-9_\\.]{1,30})(/|/?\\?)?.*$",
"testInputs":[
"http://instagr.am/timonus",
"https://www.instagram.com/noelwells/?hl=en",
"https://www.instagram.com/noelwells?hl=en",
"https://instagram.com/p/1t0oDmGQfp/",
"https://www.instagram.com/explore/",
"https://www.instagram.com/stories/ferdente/?utm_source=ig_embed&ig_mid=0A50ABCE-0598-4590-B167-00A6684637B0",
"https://www.instagram.com/stories/joezhougrams/2718742614626356513/",
"https://www.instagram.com/tv/CYLfVGTogYT/"
],
"formats":[
{
"appId":"instagram",
"format":"instagram://user?username=$4",
"testResults":[
"instagram://user?username=timonus",
"instagram://user?username=noelwells",
"instagram://user?username=noelwells",
null,
null,
"instagram://user?username=ferdente",
"instagram://user?username=joezhougrams",
null
]
}
]
},
{
"title":"Open Tag",
"regex":"https?://(www\\.)?(instagram\\.com|instagr\\.am)/(explore/)?tags/([a-zA-Z0-9_%]+).*$",
"testInputs":[
"https://instagram.com/explore/tags/darkroomapp/",
"https://instagram.com/explore/tags/%F0%9F%98%80/",
"https://instagram.com/tags/4thofjuly"
],
"formats":[
{
"appId":"instagram",
"format":"instagram://tag?name=$4",
"testResults":[
"instagram://tag?name=darkroomapp",
"instagram://tag?name=%F0%9F%98%80",
"instagram://tag?name=4thofjuly"
]
}
]
},
{
"title":"Open Location",
"regex":"https?://(www\\.)?(instagram\\.com|instagr\\.am)/explore/locations/(\\d+).*$",
"testInputs":[
"https://instagram.com/explore/locations/215262672/"
],
"formats":[
{
"appId":"instagram",
"format":"instagram://location?id=$3",
"testResults":[
"instagram://location?id=215262672"
]
}
]
},
{
"title":"Open Effect",
"regex":"https?://(www\\.)?(instagram\\.com|instagr\\.am)/(a/r.*effect_id=|ar/)(\\d+).*?$",
"testInputs":[
"https://www.instagram.com/a/r/?effect_id=389420945098555",
"https://www.instagram.com/ar/757239068446091"
],
"formats":[
{
"appId":"instagram",
"format":"instagram://story-camera/?effect_id=$4",
"testResults":[
"instagram://story-camera/?effect_id=389420945098555",
"instagram://story-camera/?effect_id=757239068446091"
]
}
]
},
{
"title":"Open Event",
"regex":"https?://(\\w+\\.)*facebook\\.com/(n/?\\?)?events/([^/]+/)*?(\\d+).*$",
"testInputs":[
"https://www.facebook.com/events/878295485593070/",
"https://www.facebook.com/n?events/878295485593070/",
"https://www.facebook.com/n/?events/878295485593070/",
"https://m.facebook.com/events/394680094069835?acontext=%7B%22ref%22%3A2%2C%22",
"https://www.facebook.com/events/the-center-bar/blues-and-bloodys-sunday-concert-series-at-the-center-bar/667662677050195/"
],
"formats":[
{
"appId":"facebook",
"format":"fb://event?id=$4",
"testResults":[
"fb://event?id=878295485593070",
"fb://event?id=878295485593070",
"fb://event?id=878295485593070",
"fb://event?id=394680094069835",
"fb://event?id=667662677050195"
]
}
]
},
{
"title":"Open Group",
"regex":"https?://(\\w+\\.)*facebook\\.com/(n/?\\?)?groups/([^/]+/)?(\\d+).*$",
"testInputs":[
"https://www.facebook.com/groups/158306764190707/",
"https://www.facebook.com/groups/158306764190707",
"https://www.facebook.com/groups/158306764190707?foo=bar",
"https://www.facebook.com/groups/158306764190707/?foo=bar",
"https://www.facebook.com/groups/it.jobs.croatia/1669475099985409/",
"https://www.facebook.com/groups/it.jobs.croatia/1669475099985409",
"https://www.facebook.com/groups/it.jobs.croatia/1669475099985409?foo=bar",
"https://www.facebook.com/groups/it.jobs.croatia/1669475099985409/?foo=bar",
"https://www.facebook.com/n?groups/it.jobs.croatia/1669475099985409/",
"https://www.facebook.com/n/?groups/it.jobs.croatia/1669475099985409/",
"https://www.facebook.com/groups/workoholic.zmanamiti/",
"https://www.facebook.com/groups/workoholic.zmanamiti",
"https://www.facebook.com/groups/workoholic.zmanamiti?foo=bar",
"https://www.facebook.com/groups/workoholic.zmanamiti/?foo=bar",
"https://www.facebook.com/groups/dogspotting/",
"https://www.facebook.com/groups/dogspotting",
"https://www.facebook.com/groups/dogspotting?foo=bar",
"https://www.facebook.com/groups/dogspotting/?foo=bar"
],
"formats":[
{
"appId":"facebook",
"format":"fb://group?id=$4",
"testResults":[
"fb://group?id=158306764190707",
"fb://group?id=158306764190707",
"fb://group?id=158306764190707",
"fb://group?id=158306764190707",
"fb://group?id=1669475099985409",
"fb://group?id=1669475099985409",
"fb://group?id=1669475099985409",
"fb://group?id=1669475099985409",
"fb://group?id=1669475099985409",
"fb://group?id=1669475099985409",
null,
null,
null,
null,
null,
null,
null,
null
]
}
]
},
{
"title":"Open Group",
"regex":"https?://(\\w+\\.)*facebook\\.com/groups/(?!\\d+)[^/]+(/(?!\\d+)[^/]*)?$",
"testInputs":[
"https://www.facebook.com/groups/158306764190707/",
"https://www.facebook.com/groups/158306764190707",
"https://www.facebook.com/groups/158306764190707?foo=bar",
"https://www.facebook.com/groups/158306764190707/?foo=bar",
"https://www.facebook.com/groups/it.jobs.croatia/1669475099985409/",
"https://www.facebook.com/groups/it.jobs.croatia/1669475099985409",
"https://www.facebook.com/groups/it.jobs.croatia/1669475099985409?foo=bar",
"https://www.facebook.com/groups/it.jobs.croatia/1669475099985409/?foo=bar",
"https://www.facebook.com/groups/workoholic.zmanamiti/",
"https://www.facebook.com/groups/workoholic.zmanamiti",
"https://www.facebook.com/groups/workoholic.zmanamiti?foo=bar",
"https://www.facebook.com/groups/workoholic.zmanamiti/?foo=bar",
"https://www.facebook.com/groups/dogspotting/",
"https://www.facebook.com/groups/dogspotting",
"https://www.facebook.com/groups/dogspotting?foo=bar",
"https://www.facebook.com/groups/dogspotting/?foo=bar"
],
"formats":[
{
"appId":"facebook",
"note":"when using UIWebView processor the loaded page doesn't seem to include fb:// links, so we fish for facebook.\\w+/groups/\\d+ instead",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = xmlhttp.responseText; var results = RegExp('facebook(?:\\\\.\\\\w+)+/groups/(\\\\d+)').exec(res); var match; if (results != null && results.length > 1) { match = 'fb://group/?id=' + results[1]; }; completionHandler(match); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('(fb://group(?:/)?\\\\?id=\\\\d+)').exec(res); var match = results != null && results.length > 1 ? results[1] : null; completionHandler(match); }",
"testResults":[
null,
null,
null,
null,
null,
null,
null,
null,
"fb://group/?id=389914698012638",
"fb://group/?id=389914698012638",
"fb://group/?id=389914698012638",
"fb://group/?id=389914698012638",
"fb://group/?id=10487409466",
"fb://group/?id=10487409466",
"fb://group/?id=10487409466",
"fb://group/?id=10487409466"
]
}
]
},
{
"title":"Open Photo",
"regex":"https?://(\\w+\\.)*facebook\\.com/(n/?\\?)?(photo(\\.php)?.*(\\?|&)fbid=|[^/]+/photos/[^/]+/)(\\d+).*?$",
"testInputs":[
"https://m.facebook.com/photo.php?fbid=10153892256554365",
"https://facebook.com/photo.php?fbid=10153892256554365",
"https://www.facebook.com/mauriciomacri/photos/a.105382683477.113835.55432788477/10153903314573478/",
"https://www.facebook.com/mauriciomacri/photos/a.105382683477.113835.55432788477/10153903314573478/?type=3&theater",
"https://www.facebook.com/n?photo.php&fbid=10159121928595063&set=a.10152710534540063.1073741825.776810062&type=3&medium=email&mid=5578d48f70a02G2a0d62e5G5578d928d0cd4G314&bcode=2.1503640444.AbwuEhN1mfMcSUYCPrA",
"https://www.facebook.com/n/?photo.php&fbid=10159121928595063&set=a.10152710534540063.1073741825.776810062&type=3&medium=email&mid=5578d48f70a02G2a0d62e5G5578d928d0cd4G314&bcode=2.1503640444.AbwuEhN1mfMcSUYCPrA",
"https://www.facebook.com/photo?fbid=1363164317164442&set=ms.c.eJxFztsNAzAIQ9GNKozNI~%3BsvViUl6e~_RrwBMIsNZSDHsg4E2rcpaD~_pA34WInUh~_wZtNAH~_InVQPKOWFTCce1AHPAYWxSVv24CTym0jxW8QAkhtYNWCxH8v2e3Y~%3BcUBfLXQvrA~-~-.bps"
],
"formats":[
{
"appId":"facebook",
"format":"fb://photo/?id=$6",
"testResults":[
"fb://photo/?id=10153892256554365",
"fb://photo/?id=10153892256554365",
"fb://photo/?id=10153903314573478",
"fb://photo/?id=10153903314573478",
"fb://photo/?id=10159121928595063",
"fb://photo/?id=10159121928595063",
"fb://photo/?id=1363164317164442"
]
}
]
},
{
"title":"Open Post",
"regex":"https?://(\\w+\\.)*facebook\\.com/(n/?\\?)?(groups(/|%2F))?(?!\\d+)([^/|%2F]+)(/|%2F)(posts|videos|permalink)(/|%2F)(.*?(/|%2F))?\\d+.*$",
"testInputs":[
"https://www.facebook.com/schrep/posts/10157765076449443",
"https://www.facebook.com/dbhuynh/posts/10107195283476043",
"https://www.facebook.com/n/?schrep/posts/10157765076449443",
"https://www.facebook.com/n/?dbhuynh/posts/10107195283476043",
"https://www.facebook.com/n?schrep/posts/10157765076449443",
"https://www.facebook.com/n?dbhuynh/posts/10107195283476043",
"https://www.facebook.com/n/?schrep%2Fposts%2F10157765076449443",
"https://www.facebook.com/n/?dbhuynh%2Fposts%2F10107195283476043",
"https://www.facebook.com/verge/videos/1558737434162594/",
"https://www.facebook.com/theclinicmiddleeast/videos/%D8%A7%D9%84%D8%A3%D8%B3%D8%AA%D8%A7%D8%B0-%D8%A7%D9%84%D8%AF%D9%83%D8%AA%D9%88%D8%B1-%D9%87%D8%A7%D9%86%D9%89-%D8%B1%D8%A7%D8%AC%D9%89-%D9%8A%D8%AA%D8%AD%D8%AF%D8%AB-%D8%B9%D9%86-%D8%A7%D9%84%D9%85%D8%AD%D8%A7%D9%81%D8%B8%D8%A9-%D8%B9%D9%84%D9%89-%D8%A7%D9%84%D9%82%D9%84%D8%A8/193851438356037/",
"https://www.facebook.com/techcrunch/videos/10156003235202952/",
"https://www.facebook.com/groups/pebble.junkies/permalink/2509170195827142/",
"https://www.facebook.com/LeeCampComedian/videos/lee-camp-live-stream-near-w-house-/686219335549785/",
"https://www.facebook.com/groups/2091316597837496/permalink/2160376570931498/",
"https://www.facebook.com/story.php?story_fbid=10104210605404813&id=206186",
"https://www.facebook.com/48894759275/posts/10157755508369276?sfns=mo"
],
"formats":[
{
"appId":"facebook",
"script2":"function process(url, completionHandler) { var urlResults = RegExp('http(?:s)?://(?:\\\\w+\\\\.)?facebook\\\\.com/(?:n/?\\\\?)?((?:groups(?:/|%2F))?[^/|%2F]+)(?:/|%2F)(?:posts|videos|permalink)(?:/|%2F)(?:.*?(?:/|%2F))?(\\\\d+)').exec(url); var profileURL = 'https://www.facebook.com/' + urlResults[1]; var res = httpRequest(profileURL); var results = RegExp('\"entity_id\\\":\"(\\\\d+)\"').exec(res); var match = results != null && results.length > 1 ? 'fb://story/?id=' + results[1] + '_' + urlResults[2] : null; completionHandler(match); }",
"testResults":[
"fb://story/?id=514244442_10157765076449443",
"fb://story/?id=1201819_10107195283476043",
"fb://story/?id=514244442_10157765076449443",
"fb://story/?id=1201819_10107195283476043",
"fb://story/?id=514244442_10157765076449443",
"fb://story/?id=1201819_10107195283476043",
"fb://story/?id=514244442_10157765076449443",
"fb://story/?id=1201819_10107195283476043",
"fb://story/?id=193742123995472_1558737434162594",
"fb://story/?id=309379733187186_193851438356037",
"fb://story/?id=8062627951_10156003235202952",
"fb://story/?id=595923150485199_2509170195827142",
"fb://story/?id=108248262571903_686219335549785",
null,
null,
null
]
}
]
},
{
"title":"Open Post",
"regex":"https?://(?:\\w+\\.)*facebook\\.com/(?:n/?\\?)?(?:groups(?:/|%2F))?(\\d+)(?:/|%2F)(?:posts|videos|permalink)(?:/|%2F)(\\d+).*$",
"testInputs":[
"https://www.facebook.com/schrep/posts/10157765076449443",
"https://www.facebook.com/dbhuynh/posts/10107195283476043",
"https://www.facebook.com/n/?schrep/posts/10157765076449443",
"https://www.facebook.com/n/?dbhuynh/posts/10107195283476043",
"https://www.facebook.com/n?schrep/posts/10157765076449443",
"https://www.facebook.com/n?dbhuynh/posts/10107195283476043",
"https://www.facebook.com/n/?schrep%2Fposts%2F10157765076449443",
"https://www.facebook.com/n/?dbhuynh%2Fposts%2F10107195283476043",
"https://www.facebook.com/verge/videos/1558737434162594/",
"https://www.facebook.com/theclinicmiddleeast/videos/%D8%A7%D9%84%D8%A3%D8%B3%D8%AA%D8%A7%D8%B0-%D8%A7%D9%84%D8%AF%D9%83%D8%AA%D9%88%D8%B1-%D9%87%D8%A7%D9%86%D9%89-%D8%B1%D8%A7%D8%AC%D9%89-%D9%8A%D8%AA%D8%AD%D8%AF%D8%AB-%D8%B9%D9%86-%D8%A7%D9%84%D9%85%D8%AD%D8%A7%D9%81%D8%B8%D8%A9-%D8%B9%D9%84%D9%89-%D8%A7%D9%84%D9%82%D9%84%D8%A8/193851438356037/",
"https://www.facebook.com/techcrunch/videos/10156003235202952/",
"https://www.facebook.com/groups/pebble.junkies/permalink/2509170195827142/",
"https://www.facebook.com/groups/2091316597837496/permalink/2160376570931498/",
"https://www.facebook.com/story.php?story_fbid=10104210605404813&id=206186",
"https://www.facebook.com/48894759275/posts/10157755508369276?sfns=mo"
],
"formats":[
{
"appId":"facebook",
"format":"fb://story/?id=$1_$2",
"testResults":[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
"fb://story/?id=2091316597837496_2160376570931498",
null,
"fb://story/?id=48894759275_10157755508369276"
]
}
]
},
{
"title":"Open Post",
"regex":"https?://(?:\\w+\\.)*facebook\\.com/(?:story|permalink)\\.php.*(?:story_fbid=(\\d+).*id=(\\d+)|id=(\\d+).*story_fbid=(\\d+)).*?$",
"testInputs":[
"https://m.facebook.com/story.php?story_fbid=1558737434162594&id=193742123995472&_rdr",
"https://m.facebook.com/story.php?&id=193742123995472&story_fbid=1558737434162594",
"https://www.facebook.com/story.php?story_fbid=10104210605404813&id=206186",
"https://www.facebook.com/permalink.php?story_fbid=812478915870003&id=739313369853225"
],
"formats":[
{
"appId":"facebook",
"format":"fb://story/?id=$2$3_$1$4",
"testResults":[
"fb://story/?id=193742123995472_1558737434162594",
"fb://story/?id=193742123995472_1558737434162594",
"fb://story/?id=206186_10104210605404813",
"fb://story/?id=739313369853225_812478915870003"
]
}
]
},
{
"regex":"https?://(\\w+\\.)*facebook\\.com/(?!.*(events|groups|photo|photos|videos|story|post|posts).*).*$",
"note":"This is meant as a catchall fallback that will run if all other dedicated Facebook actions fail. It tries to use markup on the page to open links, which works for things like Pages and some users.",
"testInputs":[
"https://www.facebook.com/events/878295485593070/",
"https://www.facebook.com/n?events/878295485593070/",
"https://www.facebook.com/n/?events/878295485593070/",
"https://m.facebook.com/events/394680094069835?acontext=%7B%22ref%22%3A2%2C%22",
"https://www.facebook.com/groups/158306764190707/",
"https://www.facebook.com/groups/158306764190707",
"https://www.facebook.com/groups/158306764190707?foo=bar",
"https://www.facebook.com/groups/158306764190707/?foo=bar",
"https://www.facebook.com/groups/it.jobs.croatia/1669475099985409/",
"https://www.facebook.com/groups/it.jobs.croatia/1669475099985409",
"https://www.facebook.com/groups/it.jobs.croatia/1669475099985409?foo=bar",
"https://www.facebook.com/groups/it.jobs.croatia/1669475099985409/?foo=bar",
"https://www.facebook.com/n?groups/it.jobs.croatia/1669475099985409/",
"https://www.facebook.com/n/?groups/it.jobs.croatia/1669475099985409/",
"https://www.facebook.com/groups/workoholic.zmanamiti/",
"https://www.facebook.com/groups/workoholic.zmanamiti",
"https://www.facebook.com/groups/workoholic.zmanamiti?foo=bar",
"https://www.facebook.com/groups/workoholic.zmanamiti/?foo=bar",
"https://www.facebook.com/groups/dogspotting/",
"https://www.facebook.com/groups/dogspotting",
"https://www.facebook.com/groups/dogspotting?foo=bar",
"https://www.facebook.com/groups/dogspotting/?foo=bar",
"https://www.facebook.com/groups/158306764190707/",
"https://www.facebook.com/groups/158306764190707",
"https://www.facebook.com/groups/158306764190707?foo=bar",
"https://www.facebook.com/groups/158306764190707/?foo=bar",
"https://www.facebook.com/groups/it.jobs.croatia/1669475099985409/",
"https://www.facebook.com/groups/it.jobs.croatia/1669475099985409",
"https://www.facebook.com/groups/it.jobs.croatia/1669475099985409?foo=bar",
"https://www.facebook.com/groups/it.jobs.croatia/1669475099985409/?foo=bar",
"https://www.facebook.com/groups/workoholic.zmanamiti/",
"https://www.facebook.com/groups/workoholic.zmanamiti",
"https://www.facebook.com/groups/workoholic.zmanamiti?foo=bar",
"https://www.facebook.com/groups/workoholic.zmanamiti/?foo=bar",
"https://www.facebook.com/groups/dogspotting/",
"https://www.facebook.com/groups/dogspotting",
"https://www.facebook.com/groups/dogspotting?foo=bar",
"https://www.facebook.com/groups/dogspotting/?foo=bar",
"https://m.facebook.com/photo.php?fbid=10153892256554365",
"https://facebook.com/photo.php?fbid=10153892256554365",
"https://www.facebook.com/mauriciomacri/photos/a.105382683477.113835.55432788477/10153903314573478/",
"https://www.facebook.com/mauriciomacri/photos/a.105382683477.113835.55432788477/10153903314573478/?type=3&theater",
"https://www.facebook.com/n?photo.php&fbid=10159121928595063&set=a.10152710534540063.1073741825.776810062&type=3&medium=email&mid=5578d48f70a02G2a0d62e5G5578d928d0cd4G314&bcode=2.1503640444.AbwuEhN1mfMcSUYCPrA",
"https://www.facebook.com/n/?photo.php&fbid=10159121928595063&set=a.10152710534540063.1073741825.776810062&type=3&medium=email&mid=5578d48f70a02G2a0d62e5G5578d928d0cd4G314&bcode=2.1503640444.AbwuEhN1mfMcSUYCPrA",
"https://www.facebook.com/timonus/posts/10154879225363318",
"https://www.facebook.com/dbhuynh/posts/10107195283476043",
"https://www.facebook.com/n/?timonus/posts/10154879225363318",
"https://www.facebook.com/n/?dbhuynh/posts/10107195283476043",
"https://www.facebook.com/n?timonus/posts/10154879225363318",
"https://www.facebook.com/n?dbhuynh/posts/10107195283476043",
"https://www.facebook.com/n/?timonus%2Fposts%2F10154879225363318",
"https://www.facebook.com/n/?dbhuynh%2Fposts%2F10107195283476043",
"https://www.facebook.com/verge/videos/1558737434162594/",
"https://www.facebook.com/theclinicmiddleeast/videos/%D8%A7%D9%84%D8%A3%D8%B3%D8%AA%D8%A7%D8%B0-%D8%A7%D9%84%D8%AF%D9%83%D8%AA%D9%88%D8%B1-%D9%87%D8%A7%D9%86%D9%89-%D8%B1%D8%A7%D8%AC%D9%89-%D9%8A%D8%AA%D8%AD%D8%AF%D8%AB-%D8%B9%D9%86-%D8%A7%D9%84%D9%85%D8%AD%D8%A7%D9%81%D8%B8%D8%A9-%D8%B9%D9%84%D9%89-%D8%A7%D9%84%D9%82%D9%84%D8%A8/193851438356037/",
"https://www.facebook.com/techcrunch/videos/10156003235202952/",
"https://www.facebook.com/story.php?story_fbid=10104210605404813&id=206186",
"https://m.facebook.com/story.php?story_fbid=1558737434162594&id=193742123995472&_rdr",
"https://m.facebook.com/story.php?&id=193742123995472&story_fbid=1558737434162594",
"https://www.facebook.com/story.php?story_fbid=10104210605404813&id=206186",
"break -- all above should fail to match",
"https://www.facebook.com/dickdoorduinfotografie/",
"https://www.facebook.com/timonus",
"https://m.facebook.com/pages/category/Agricultural-Service/Allathan-Associates-706694322720291/?locale2=en_GB",
"https://m.facebook.com/Alteama.co/"
],
"formats":[
{
"appId":"facebook",
"script2":"function process(url, completionHandler) { var res = httpRequest(url.replace('m.facebook', 'facebook')); var results = RegExp('ios.*?(fb://.*?)\"').exec(res); var match = results != null && results.length > 1 ? results[1] : null; completionHandler(match); }",
"testResults":[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
"fb://page/?id=2165095750195382",
null,
"fb://page/?id=706694322720291",
"fb://page/?id=1738406109724419"
]
}
]
},
{
"title":"Open Photo",
"regex":"https?://(www\\.)?500px\\.com/photo/(\\d+)((/|\\?).*)?$",
"testInputs":[
"https://500px.com/timonus",
"https://500px.com/photo/106606873/wood-anemone-by-fredrik-m%C3%B6rk",
"http://500px.com/photo/108545375"
],
"formats":[
{
"appId":"500px",
"format":"px://500px.com/photo/$2",
"testResults":[
null,
"px://500px.com/photo/106606873",
"px://500px.com/photo/108545375"
]
}
]
},
{
"title":"Open Profile",
"regex":"https?://(www\\.)?500px\\.com/(?!photo)([0-9a-zA-Z_-]+)(/|\\?)?.*$",
"testInputs":[
"https://500px.com/timonus",
"https://500px.com/photo/40145312/7-7-13-by-tim-johnsen?from=user_library"
],
"formats":[
{
"appId":"500px",
"format":"px://500px.com/$2",
"testResults":[
"px://500px.com/timonus",
null
]
}
]
},
{
"title":"Open Photo",
"regex":"https?://(?:m\\.|mobile\\.|www\\.)?flickr\\.com(?:/#|/browser/upgrade/\\?continue=)?/photos/([0-9a-zA-Z_@%-]+)/(\\d+)((/|\\?).*)?$",
"testInputs":[
"https://m.flickr.com/#/photos/27933390@N03/16929283568/",
"https://www.flickr.com/photos/27933390@N03/16929283568/",
"https://m.flickr.com/#/photos/27933390@N03/sets/72157651034989505/",
"https://www.flickr.com/photos/nikosaliagas/17076600439/",
"https://m.flickr.com/#/photos/nikosaliagas/17076600439/",
"https://www.flickr.com/browser/upgrade/?continue=/photos/sandra18e2010/17088623459/"
],
"formats":[
{
"appId":"flickr",
"format":"flickr://photos/$1/$2",
"testResults":[
"flickr://photos/27933390@N03/16929283568",
"flickr://photos/27933390@N03/16929283568",
null,
"flickr://photos/nikosaliagas/17076600439",
"flickr://photos/nikosaliagas/17076600439",
"flickr://photos/sandra18e2010/17088623459"
]
}
]
},
{
"title":"Open Profile",
"regex":"https?://(m\\.|mobile\\.|www\\.)?flickr\\.com(/#|/browser/upgrade/\\?continue=)?/(photos|people)/([0-9a-zA-Z_@%-]+)(/|\\?|/\\?.*)?$",
"testInputs":[
"https://m.flickr.com/#/photos/27933390@N03/",
"https://www.flickr.com/people/27933390@N03/",
"https://m.flickr.com/#/photos/27933390@N03/16929283568/",
"https://www.flickr.com/photos/27933390@N03/16929283568/",
"http://www.flickr.com/photos/robotspacer"
],
"formats":[
{
"appId":"flickr",
"format":"flickr://flickr.com/photos/$4",
"testResults":[
"flickr://flickr.com/photos/27933390@N03",
"flickr://flickr.com/photos/27933390@N03",
null,
null,
"flickr://flickr.com/photos/robotspacer"
]
}
]
},
{
"title":"Open Photoset",
"regex":"https?://(?:m\\.|mobile\\.|www\\.)?flickr\\.com(?:/#|/browser/upgrade/\\?continue=)?/photos/([0-9a-zA-Z_@%-]+)/sets/(\\d+)((/|\\?).*)?$",
"testInputs":[
"https://m.flickr.com/#/photos/27933390@N03/sets/72157651034989505/",
"https://m.flickr.com/#/photos/27933390@N03/16929283568/",
"https://www.flickr.com/photos/27933390@N03/16929283568/",
"https://flickr.com/photos/132073082@N06/sets/72157652589484615"
],
"formats":[
{
"appId":"flickr",
"format":"flickr://photos/$1/sets/$2",
"testResults":[
"flickr://photos/27933390@N03/sets/72157651034989505",
null,
null,
"flickr://photos/132073082@N06/sets/72157652589484615"
]
}
]
},
{
"title":"Open Group",
"regex":"https?://(m\\.|mobile\\.|www\\.)?flickr\\.com(/#|/browser/upgrade/\\?continue=)?/groups/([0-9a-zA-Z_@%-]+).*$",
"testInputs":[
"https://www.flickr.com/groups/lifehacker-workspace-showandtell/pool/"
],
"formats":[
{
"appId":"flickr",
"format":"flickr://groups/$3",
"testResults":[
"flickr://groups/lifehacker-workspace-showandtell"
]
}
]
},
{
"title":"Open Photo",
"regex":"https?://([a-zA-Z0-9_\\-\\.]+\\.)?vsco\\.com?/([a-zA-Z0-9_\\-\\.]+/)?media/(\\w+).*?$",
"testInputs":[
"http://jmcashdollar.vsco.co/media/53baaa357567083d5a8b460a",
"http://vsco.co/smotraghi/media/566f16b4d2a71c17049825ae"
],
"formats":[
{
"appId":"vscocam",
"format":"vsco://grid/$3",
"testResults":[
"vsco://grid/53baaa357567083d5a8b460a",
"vsco://grid/566f16b4d2a71c17049825ae"
]
}
]
},
{
"title":"Open Journal",
"regex":"https?://([a-zA-Z0-9_\\-\\.]+\\.)?vsco\\.com?/([a-zA-Z0-9_\\-\\.]+/)?journal/\\w+.*$",
"testInputs":[
"http://artistinitiative.vsco.co/journal/a-century-of-artifice-launch-recap",
"http://vsco.co/brendanryan/journal/iceland"
],
"formats":[
{
"appId":"vscocam",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = xmlhttp.responseText; var match = RegExp('(vsco://.*?)\"').exec(res)[1]; completionHandler(match); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var match = RegExp('(vsco://.*?)\"').exec(res)[1]; completionHandler(match); }",
"testResults":[
"vsco://user/556895/journal/5644edcf2b331e1d2f8b4569",
"vsco://user/28777/journal/575cad7e74e8a0e4638b456c"
]
}
]
},
{
"title":"Open Profile",
"regex":"https?://([a-zA-Z0-9_\\-\\.]+\\.)?vsco\\.com?((/[a-zA-Z0-9_\\-\\.]+)?(/(collection|images)|/?\\?).*|/)?$",
"testInputs":[
"http://vsco.co/vsco/collection/1",
"http://vsco.vsco.co/",
"http://vsco.vsco.co",
"http://vsco.vsco.co/?foo=bar",
"http://vsco.vsco.co?foo=bar",
"http://vsco.co/vsco/collection/1?foo=bar",
"http://vsco.co/yebster/images/1",
"http://jmcashdollar.vsco.co/grid/1",
"http://vsco.co/smotraghi/grid/1"
],
"formats":[
{
"appId":"vscocam",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = xmlhttp.responseText; var match = RegExp('(vsco://user/.*?)\"').exec(res)[1]; completionHandler(match); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var match = RegExp('(vsco://user/.*?)\"').exec(res)[1]; completionHandler(match); }",
"testResults":[
"vsco://user/113950/collection",
"vsco://user/113950/grid",
"vsco://user/113950/grid",
"vsco://user/113950/grid",
"vsco://user/113950/grid",
"vsco://user/113950/collection",
"vsco://user/22016668/grid",
null,
null
]
}
]
},
{
"title":"Open Blog",
"regex":"https?://(?:www\\.)?([a-zA-Z0-9_\\-]+)\\.tumblr\\.com(?:/(?!(post|image|tagged|app|search)/).*|\\?.*|#.*)?$",
"testInputs":[
"http://visualizingmath.tumblr.com/",
"http://instagram-engineering.tumblr.com",
"http://danielwellingtonwatches.tumblr.com?ref=blahblahblah",
"http://www.simplice.tumblr.com/",
"http://love-portlandia.tumblr.com/page/8",
"http://rickwebb.tumblr.com/post/556400952/the-never-call-there-are-some-people-who-love-to",
"http://2kindsofpeople.tumblr.com/tagged/003",
"https://www.tumblr.com/app/closeup",
"https://www.tumblr.com/search/Hartmut+Esslinger",
"https://www.tumblr.com/tagged/Hartmut+Esslinger"
],
"formats":[
{
"appId":"tumblr",
"format":"tumblr://x-callback-url/blog?blogName=$1",
"testResults":[
"tumblr://x-callback-url/blog?blogName=visualizingmath",
"tumblr://x-callback-url/blog?blogName=instagram-engineering",
"tumblr://x-callback-url/blog?blogName=danielwellingtonwatches",
"tumblr://x-callback-url/blog?blogName=simplice",
"tumblr://x-callback-url/blog?blogName=love-portlandia",
null,
null,
null,
null,
null
]
}
]
},
{
"title":"Open Blog",
"headers":1,
"regex":"https?://(?!.*\\.tumblr\\.com)[a-zA-Z0-9-\\.]+/(?!post|image|tagged|app|search).*\\n.*\"(?:(?i)X-Tumblr-User)\":\"([a-zA-Z0-9_\\-]+)\".*$",
"formats":[
{
"appId":"tumblr",
"format":"tumblr://x-callback-url/blog?blogName=$1"
}
]
},
{
"title":"Open Post",
"regex":"https?://(?:www\\.)?([a-zA-Z0-9_\\-]+)\\.tumblr\\.com/(?!tagged|page)\\w+/(\\d+)((/|\\?|#).*)?$",
"testInputs":[
"http://visualizingmath.tumblr.com/post/98266724851/hyrodium-the-curvature-of-curves-x-x",
"http://unskoolery.tumblr.com/post/90849039693/beesandbombs-stars-squares",
"http://unskoolery.tumblr.com/post/89946808518/spring-of-mathematics-spiroface-4-rolling",
"http://danielwellingtonwatches.tumblr.com/image/116512634509",
"http://danielwellingtonwatches.tumblr.com/post/116512634509/accessorizing-done-right",
"http://sknogis.tumblr.com/post/116915684039/8-great-google-maps-tips-for-android-and-ios#_=_",
"http://instagram-engineering.tumblr.com/post/117889701472/emojineering-part-1-machine-learning-for-emoji",
"http://rickwebb.tumblr.com/post/556400952/the-never-call-there-are-some-people-who-love-to",
"http://visualizingmath.tumblr.com/",
"http://zenchronicles.tumblr.com/post/119420987354",
"http://zenchronicles.tumblr.com/post/119442343829#_=_",
"http://2kindsofpeople.tumblr.com/tagged/003",
"http://love-portlandia.tumblr.com/page/8"
],
"formats":[
{
"appId":"tumblr",
"format":"tumblr://x-callback-url/blog?blogName=$1&postID=$2",
"testResults":[
"tumblr://x-callback-url/blog?blogName=visualizingmath&postID=98266724851",
"tumblr://x-callback-url/blog?blogName=unskoolery&postID=90849039693",
"tumblr://x-callback-url/blog?blogName=unskoolery&postID=89946808518",
"tumblr://x-callback-url/blog?blogName=danielwellingtonwatches&postID=116512634509",
"tumblr://x-callback-url/blog?blogName=danielwellingtonwatches&postID=116512634509",
"tumblr://x-callback-url/blog?blogName=sknogis&postID=116915684039",
"tumblr://x-callback-url/blog?blogName=instagram-engineering&postID=117889701472",
"tumblr://x-callback-url/blog?blogName=rickwebb&postID=556400952",
null,
"tumblr://x-callback-url/blog?blogName=zenchronicles&postID=119420987354",
"tumblr://x-callback-url/blog?blogName=zenchronicles&postID=119442343829",
null,
null
]
}
]
},
{
"title":"Open Post",
"regex":"https?://(www\\.)?[a-zA-Z0-9_\\-]+\\.tumblr\\.com/tagged/\\d+((/|\\?|#).*)?$",
"todo":"this is incorrect, this URL represents a search within a blog",
"testInputs":[
"http://2kindsofpeople.tumblr.com/tagged/003"
],
"formats":[
{
"appId":"tumblr",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = xmlhttp.responseText; var match = RegExp('([a-zA-Z0-9_\\-]+)\\.tumblr\\.com/post/(\\\\d+)').exec(res); var blogName = match[1]; var postID = match[2]; completionHandler('tumblr://x-callback-url/blog?blogName=' + blogName + '&postID=' + postID); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var match = RegExp('([a-zA-Z0-9_\\-]+)\\.tumblr\\.com/post/(\\\\d+)').exec(res); var blogName = match[1]; var postID = match[2]; completionHandler('tumblr://x-callback-url/blog?blogName=' + blogName + '&postID=' + postID); }",
"testResults":[
"tumblr://x-callback-url/blog?blogName=2kindsofpeople&postID=115652499436"
]
}
]
},
{
"title":"Open Post",
"regex":"https?://(?!.*\\.tumblr\\.com)[a-zA-Z0-9-.]+/(?!tagged)\\w+/(\\d+).*\\n.*\"(?:(?i)X-Tumblr-User)\":\"([a-zA-Z0-9_\\-]+)\".*$",
"headers":1,
"formats":[
{
"appId":"tumblr",
"format":"tumblr://x-callback-url/blog?blogName=$2&postID=$1"
}
]
},
{
"title":"Open Tag",
"regex":"https?://(www\\.)?tumblr\\.com/(tagged|search)/([^/]+)((/|\\?|#).*)?$",
"testInputs":[
"https://www.tumblr.com/search/Hartmut+Esslinger",
"https://www.tumblr.com/tagged/Hartmut+Esslinger"
],
"formats":[
{
"appId":"tumblr",
"format":"tumblr://x-callback-url/tag?tag=$3",
"testResults":[
"tumblr://x-callback-url/tag?tag=Hartmut+Esslinger",
"tumblr://x-callback-url/tag?tag=Hartmut+Esslinger"
]
}
]
},
{
"title":"Open Profile",
"regex":"https?://(?!(help|blog|engineering)\\.)(\\w+\\.)?pinterest(\\.\\w+)+/(?!pin|search|explore|categories|join)([a-zA-Z0-9-_]+)(/pins)?(/|/?\\?.*)?$",
"testInputs":[
"https://pinterest.com/cnnr/",
"https://www.pinterest.com/cnnr/",
"https://fr.pinterest.com/cnnr/",
"https://www.pinterest.com/timonus/?foo=bar",
"https://www.pinterest.com/techcrunch/pins/",
"https://www.pinterest.com/pin/515380751084154703/",
"https://www.pinterest.com/cnnr/what-time-is-it/",
"https://www.pinterest.com/search/pins/?q=cute%20animal",
"https://www.pinterest.com/explore/popular",
"https://www.pinterest.com/categories/popular",
"https://www.pinterest.com/join/?next=/pin/create/button/%3Furl%3Dhttps%253A%252F%252Fmedia0.giphy.com%252Fmedia%252FemWySpOLFLUAM%252Fgiphy.gif%26media%3Dhttps%253A%252F%252Fmedia0.giphy.com%252Fmedia%252FemWySpOLFLUAM%252Fgiphy.gif%26description%3Dvia%2520GIPHY",
"https://help.pinterest.com/cnnr/"
],
"formats":[
{
"appId":"pinterest",
"format":"pinterest://user/$4",
"testResults":[
"pinterest://user/cnnr",
"pinterest://user/cnnr",
"pinterest://user/cnnr",
"pinterest://user/timonus",
"pinterest://user/techcrunch",
null,
null,
null,
null,
null,
null,
null
]
}
]
},
{
"title":"Open Board",
"regex":"https?://(?!(?:help|blog|engineering|ct|newsroom)\\.)(?:\\w+\\.)?pinterest(?:\\.\\w+)+/(?!pin|search|explore|categories|discover)([a-zA-Z0-9-_]+)(?:/)(?!pins)([a-zA-Z0-9-_]+).*?$",
"testInputs":[
"https://pinterest.com/cnnr/what-time-is-it/",
"https://www.pinterest.com/cnnr/what-time-is-it/",
"https://fr.pinterest.com/cnnr/what-time-is-it/",
"https://www.pinterest.com/cnnr/what-time-is-it/?foo=bar",
"https://www.pinterest.com/pin/515380751084154703/",
"https://www.pinterest.com/search/pins/?q=cute%20animal",
"https://www.pinterest.com/chels/pins/",
"https://www.pinterest.com/explore/popular",
"https://www.pinterest.com/categories/popular",
"https://help.pinterest.com/categories/popular",
"https://blog.pinterest.com/en/search-outside-box-new-pinterest-visual-discovery-tools",
"https://engineering.pinterest.com/blog/engineering-shop-look-pinterest",
"https://fr.pinterest.com/discover/article/4896370179342087833/",
"https://ct.pinterest.com/_/_/redirect/?src=open&user_id=128282426794312100&url=https://prod-autopilot-services-amp.conde.io/the-new-yorker/culture/2017-in-review/the-best-new-yorker-photography-of-2017/amp",
"https://newsroom.pinterest.com/en/post/celebrating-pride-2018-at-pinterest"
],
"formats":[
{
"appId":"pinterest",
"format":"pinterest://board/$1/$2",
"testResults":[
"pinterest://board/cnnr/what-time-is-it",
"pinterest://board/cnnr/what-time-is-it",
"pinterest://board/cnnr/what-time-is-it",
"pinterest://board/cnnr/what-time-is-it",
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
]
}
]
},
{
"title":"Open Pin",
"regex":"https?://(?!(help|blog|engineering)\\.)(\\w+\\.)?pinterest(\\.\\w+)+/pin/(?!create)([a-zA-Z0-9_\\-]+).*?$",
"testInputs":[
"https://pinterest.com/pin/515380751084154703/",
"https://www.pinterest.com/pin/515380751084154703/",
"https://fr.pinterest.com/pin/515380751084154703/",
"https://www.pinterest.com/pin/A2xVdQAQgF0BNTgV0RsAAAA/",
"https://www.pinterest.com/pin/313844667760410380/sent/?invite_code=b8e10eef0a0b837be53d265575387572&sender=49258327082795975",
"https://www.pinterest.com/pin/create/button/?url=https%3A%2F%2Fmedia0.giphy.com%2Fmedia%2FemWySpOLFLUAM%2Fgiphy.gif&media=https%3A%2F%2Fmedia0.giphy.com%2Fmedia%2FemWySpOLFLUAM%2Fgiphy.gif&description=via%20GIPHY",
"https://help.pinterest.com/pin/515380751084154703/",
"https://www.pinterest.com/pin/Ao_PzYUzL9LOWzUcTbQAAAAnaaKeqzOc5SY8NCSo17aG-ZKP3o_HZgqBdw7E4fYzGcRIBuQe5Qv7MrT8ctEZycUxkuhedqsnzw/"
],
"formats":[
{
"appId":"pinterest",
"format":"pinterest://pin/$4",
"testResults":[
"pinterest://pin/515380751084154703",
"pinterest://pin/515380751084154703",
"pinterest://pin/515380751084154703",
"pinterest://pin/A2xVdQAQgF0BNTgV0RsAAAA",
"pinterest://pin/313844667760410380",
null,
null,
"pinterest://pin/Ao_PzYUzL9LOWzUcTbQAAAAnaaKeqzOc5SY8NCSo17aG-ZKP3o_HZgqBdw7E4fYzGcRIBuQe5Qv7MrT8ctEZycUxkuhedqsnzw"
]
}
]
},
{
"title":"Open Search",
"regex":"https?://(?!(?:help|blog|engineering)\\.)(?:\\w+\\.)?pinterest(?:\\.\\w+)+/search/([^/|\\?]+).*q=([^&]+).*$",
"testInputs":[
"https://pinterest.com/search/pins/?q=cute%20animal",
"https://www.pinterest.com/search/pins/?q=cute%20animal",
"https://fr.pinterest.com/search/pins/?q=cute%20animal",
"https://www.pinterest.com/search/people/?q=tim%20johnsen&rs=typed&0=tim%7Ctyped&1=johnsen%7Ctyped",
"https://help.pinterest.com/search/pins/?q=cute%20animal"
],
"formats":[
{
"appId":"pinterest",
"format":"pinterest://search/$1/?q=$2",
"testResults":[
"pinterest://search/pins/?q=cute%20animal",
"pinterest://search/pins/?q=cute%20animal",
"pinterest://search/pins/?q=cute%20animal",
"pinterest://search/people/?q=tim%20johnsen",
null
]
}
]
},
{
"title":"Open Category",
"regex":"https?://(?!(help|blog|engineering)\\.)(\\w+\\.)?pinterest(\\.\\w+)+/(categories|explore)(/[^\\/\\?#]+)?.*?",
"testInputs":[
"https://www.pinterest.com/categories",
"https://www.pinterest.com/categories/",
"https://www.pinterest.com/categories/popular",
"https://www.pinterest.com/explore",
"https://www.pinterest.com/explore/",
"https://www.pinterest.com/explore/popular",
"https://help.pinterest.com/explore/popular"
],
"formats":[
{
"appId":"pinterest",
"format":"pinterest://categories$5",
"testResults":[
"pinterest://categories",
"pinterest://categories/",
"pinterest://categories/popular",
"pinterest://categories",
"pinterest://categories/",
"pinterest://categories/popular",
null
]
}
]
},
{
"title":"Open Topic",
"regex":"https?://(www\\.)?flipboard\\.com/topic/.*$",
"testInputs":[
"https://flipboard.com/topic/independenceday"
],
"formats":[
{
"appId":"flipboard",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = xmlhttp.responseText; var match = RegExp('(flipboard://.*?)\"').exec(res)[1]; completionHandler(match); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var match = RegExp('(flipboard://.*?)\"').exec(res)[1]; completionHandler(match); }",
"testResults":[
"flipboard://showSection/flipboard/topic%252Findependenceday?title=July%204th%20on%20Flipboard"
]
}
]
},
{
"title":"Open Section",
"regex":"https?://(www\\.)?flipboard\\.com/(@\\w+(/\\w*(-\\w*)+)?|section/.*).*$",
"testInputs":[
"https://flipboard.com/@timonus",
"https://flipboard.com/@timonus/aural-siebp7eqy",
"https://flipboard.com/section/foodies-217ha2rt47oa1f62?flipit=http%3A%2F%2Fflip.it%2FMS9XR&intent=gift_of_flipboard"
],
"formats":[
{
"appId":"flipboard",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = xmlhttp.responseText; var match = RegExp('(flipboard://.*?)\"').exec(res)[1]; completionHandler(match); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var match = RegExp('(flipboard://.*?)\"').exec(res)[1]; completionHandler(match); }",
"testResults":[
"flipboard://showSection/flipboard/user%252F3204246?title=Tim%20Johnsen%20on%20Flipboard",
"flipboard://showSection/sid/siebp7eqy/timonus?title=Aural%20on%20Flipboard",
"flipboard://flipit?url=http%3A%2F%2Fflip.it%2FMS9XR"
]
}
]
},
{
"title":"Open Profile",
"regex":"https?://(\\w+\\.)?weibo\\.(com|cn)/((u|d)/)?(\\w+)(/\\?.*|/)?$",
"testInputs":[
"http://weibo.com/2616423197",
"http://weibo.com/u/2616423197",
"http://weibo.com/2616423197/Cmjs2vh5Q?from=page_1005052616423197_profile&wvr=6&mod=weibotime",
"http://m.weibo.cn/d/ifixit2016",
"http://m.weibo.cn/ifixit2016"
],
"formats":[
{
"appId":"weibo",
"format":"sinaweibo://userinfo?uid=$5",
"testResults":[
"sinaweibo://userinfo?uid=2616423197",
"sinaweibo://userinfo?uid=2616423197",
null,
"sinaweibo://userinfo?uid=ifixit2016",
"sinaweibo://userinfo?uid=ifixit2016"
]
}
]
},
{
"title":"Open Profile",
"regex":"https?://(\\w+\\.)?weibo\\.(com|cn)/(u/)?(\\d+)(/\\?.*|/)?$",
"testInputs":[
"http://weibo.com/2616423197",
"http://weibo.com/u/2616423197",
"http://weibo.com/2616423197/Cmjs2vh5Q?from=page_1005052616423197_profile&wvr=6&mod=weibotime",
"http://m.weibo.cn/d/ifixit2016",
"http://m.weibo.cn/ifixit2016"
],
"formats":[
{
"appId":"weibointernational",
"format":"weibointernational://userprofile?userid=$4",
"testResults":[
"weibointernational://userprofile?userid=2616423197",
"weibointernational://userprofile?userid=2616423197",
null,
null,
null
]
},
{
"appId":"moke",
"format":"moke:///user?id=$4",
"testResults":[
"moke:///user?id=2616423197",
"moke:///user?id=2616423197",
null,
null,
null
]
}
]
},
{
"title":"Open Profile",
"regex":"https?://(\\w+\\.)?weibo\\.(com|cn)/(d/)?(?!\\d+)(\\w+)(/\\?.*|/)?$",
"testInputs":[
"http://weibo.com/2616423197",
"http://weibo.com/u/2616423197",
"http://weibo.com/2616423197/Cmjs2vh5Q?from=page_1005052616423197_profile&wvr=6&mod=weibotime",
"http://m.weibo.cn/d/ifixit2016",
"http://m.weibo.cn/ifixit2016"
],
"formats":[
{
"appId":"weibointernational",
"format":"weibointernational://userprofile?username=$4",
"testResults":[
null,
null,
null,
"weibointernational://userprofile?username=ifixit2016",
"weibointernational://userprofile?username=ifixit2016"
]
},
{
"appId":"moke",
"format":"moke:///user?domain=$4",
"testResults":[
null,
null,
null,
"moke:///user?domain=ifixit2016",
"moke:///user?domain=ifixit2016"
]
}
]
},
{
"title":"Open Status",
"regex":"(https?://(?:\\w+\\.)?weibo\\.(?:com|cn)/(?:\\d+|status)/((\\d+)|(\\w+)).*)$",
"testInputs":[
"http://weibo.com/2616423197/Cmjs2vh5Q?from=page_1005052616423197_profile&wvr=6&mod=weibotime",
"http://m.weibo.cn/5524254784/D5ZxyE1tM",
"http://m.weibo.cn/status/D5ZxyE1tM",
"http://m.weibo.cn/status/4066781620224386"
],
"formats":[
{
"appId":"weibo",
"format":"sinaweibo://detail?mblogid=$2",
"testResults":[
"sinaweibo://detail?mblogid=Cmjs2vh5Q",
"sinaweibo://detail?mblogid=D5ZxyE1tM",
"sinaweibo://detail?mblogid=D5ZxyE1tM",
"sinaweibo://detail?mblogid=4066781620224386"
]
},
{
"appId":"weibointernational",
"format":"weibointernational://detail?weiboid=$2",
"testResults":[
"weibointernational://detail?weiboid=Cmjs2vh5Q",
"weibointernational://detail?weiboid=D5ZxyE1tM",
"weibointernational://detail?weiboid=D5ZxyE1tM",
"weibointernational://detail?weiboid=4066781620224386"
]
},
{
"appId":"moke",
"format":"moke:///status?mid=$4&id=$3",
"testResults":[
"moke:///status?mid=Cmjs2vh5Q&id=",
"moke:///status?mid=D5ZxyE1tM&id=",
"moke:///status?mid=D5ZxyE1tM&id=",
"moke:///status?mid=&id=4066781620224386"
]
}
]
},
{
"title":"Open Status",
"regex":"https?://(?:\\w+\\.)?weico\\.cc/share/.*\\?weibo_id=((\\d+)|(\\w+)).*?$",
"testInputs":[
"http://fx.weico.cc/share/17463951.html?weibo_id=4202871811882629",
"http://fx.weico.cc/share/17463951.html?weibo_id=4202871811882629&foo=bar"
],
"formats":[
{
"appId":"weibo",
"format":"sinaweibo://detail?mblogid=$1",
"testResults":[
"sinaweibo://detail?mblogid=4202871811882629",
"sinaweibo://detail?mblogid=4202871811882629"
]
},
{
"appId":"weibointernational",
"format":"weibointernational://detail?weiboid=$1",
"testResults":[
"weibointernational://detail?weiboid=4202871811882629",
"weibointernational://detail?weiboid=4202871811882629"
]
},
{
"appId":"moke",
"format":"moke:///status?mid=$3&id=$2",
"testResults":[
"moke:///status?mid=&id=4202871811882629",
"moke:///status?mid=&id=4202871811882629"
]
}
]
},
{
"title":"Open Post",
"regex":"https?://blog\\.sina\\.(com|cn|com\\.cn)/(.*/)?s/blog_(\\w+)\\.html.*$",
"testInputs":[
"http://blog.sina.cn/dpool/blog/s/blog_51177cc40102w0k1.html?cid=95642&vt=4",
"http://blog.sina.com.cn/s/blog_6051fbeb0102vtou.html#cre=blogpc&mod=g&loc=8&r=h&rfunc=-1",
"http://blog.sina.com.cn/s/blog_6051fbeb0102vtou.html"
],
"formats":[
{
"appId":"sinablog",
"format":"sinablog://blog.sina.com.cn?from=sinacn&jumptype=app&articleid=$3",
"testResults":[
"sinablog://blog.sina.com.cn?from=sinacn&jumptype=app&articleid=51177cc40102w0k1",
"sinablog://blog.sina.com.cn?from=sinacn&jumptype=app&articleid=6051fbeb0102vtou",
"sinablog://blog.sina.com.cn?from=sinacn&jumptype=app&articleid=6051fbeb0102vtou"
]
}
]
},
{
"title":"Open Venue",
"regex":"https?://(?:m\\.|www\\.|mobile\\.)?foursquare\\.com(?:/mobile)?/(?:v|venue)(?:/\\S+)?/([:hex:]{24}).*$",
"testInputs":[
"https://foursquare.com/v/ritual-coffee-roasters/42853f80f964a5200c231fe3",
"https://foursquare.com/v/42853f80f964a5200c231fe3"
],
"formats":[
{
"appId":"foursquare",
"format":"foursquare://venues/$1",
"testResults":[
"foursquare://venues/42853f80f964a5200c231fe3",
"foursquare://venues/42853f80f964a5200c231fe3"
]
},
{
"appId":"googlemaps",
"script":"function process(url, completionHandler) { var match = RegExp('http(?:s)?://.*foursquare\\.com/(?:v|venue)/(?:.*/)?(\\\\w+).*$').exec(url); var venueIdentifier = match[1]; url = 'https://api.foursquare.com/v2/venues/' + venueIdentifier + '?v=20140921&client_id=Q5H4T3CZWKEKK3QKQKIIKWGISC1UKY2IXJ4BZCZXCLDQ0IMR&client_secret=J1TZFLIIZ4LK3I55AIFV3AW3Z4ICLAQIQ5KPNLTPT3ST03XH'; var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = JSON.parse(xmlhttp.responseText); completionHandler('comgooglemaps://?q=' + res['response']['venue']['location']['lat'] + ',' + res['response']['venue']['location']['lng']); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var match = RegExp('http(?:s)?://.*foursquare\\.com/(?:v|venue)/(?:.*/)?(\\\\w+).*$').exec(url); var venueIdentifier = match[1]; url = 'https://api.foursquare.com/v2/venues/' + venueIdentifier + '?v=20140921&client_id=Q5H4T3CZWKEKK3QKQKIIKWGISC1UKY2IXJ4BZCZXCLDQ0IMR&client_secret=J1TZFLIIZ4LK3I55AIFV3AW3Z4ICLAQIQ5KPNLTPT3ST03XH'; var res = jsonRequest(url); completionHandler('comgooglemaps://?q=' + res['response']['venue']['location']['lat'] + ',' + res['response']['venue']['location']['lng']); }",
"testResults":[
"comgooglemaps://?q=37.756501,-122.421146",
"comgooglemaps://?q=37.756501,-122.421146"
]
},
{
"appId":"applemaps",
"script":"function process(url, completionHandler) { var match = RegExp('http(?:s)?://.*foursquare\\.com/(?:v|venue)/(?:.*/)?(\\\\w+).*$').exec(url); var venueIdentifier = match[1]; url = 'https://api.foursquare.com/v2/venues/' + venueIdentifier + '?v=20140921&client_id=Q5H4T3CZWKEKK3QKQKIIKWGISC1UKY2IXJ4BZCZXCLDQ0IMR&client_secret=J1TZFLIIZ4LK3I55AIFV3AW3Z4ICLAQIQ5KPNLTPT3ST03XH'; var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = JSON.parse(xmlhttp.responseText); completionHandler('maps://maps.apple.com/maps?q=' + encodeURIComponent(res['response']['venue']['name']) + '&ll=' + res['response']['venue']['location']['lat'] + ',' + res['response']['venue']['location']['lng']); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var match = RegExp('http(?:s)?://.*foursquare\\.com/(?:v|venue)/(?:.*/)?(\\\\w+).*$').exec(url); var venueIdentifier = match[1]; url = 'https://api.foursquare.com/v2/venues/' + venueIdentifier + '?v=20140921&client_id=Q5H4T3CZWKEKK3QKQKIIKWGISC1UKY2IXJ4BZCZXCLDQ0IMR&client_secret=J1TZFLIIZ4LK3I55AIFV3AW3Z4ICLAQIQ5KPNLTPT3ST03XH'; var res = jsonRequest(url); completionHandler('maps://maps.apple.com/maps?q=' + encodeURIComponent(res['response']['venue']['name']) + '&ll=' + res['response']['venue']['location']['lat'] + ',' + res['response']['venue']['location']['lng']); }",
"testResults":[
"maps://maps.apple.com/maps?q=Ritual%20Coffee%20Roasters&ll=37.756501,-122.421146",
"maps://maps.apple.com/maps?q=Ritual%20Coffee%20Roasters&ll=37.756501,-122.421146"
]
},
{
"appId":"waze",
"script":"function process(url, completionHandler) { var match = RegExp('http(?:s)?://.*foursquare\\.com/(?:v|venue)/(?:.*/)?(\\\\w+).*$').exec(url); var venueIdentifier = match[1]; url = 'https://api.foursquare.com/v2/venues/' + venueIdentifier + '?v=20140921&client_id=Q5H4T3CZWKEKK3QKQKIIKWGISC1UKY2IXJ4BZCZXCLDQ0IMR&client_secret=J1TZFLIIZ4LK3I55AIFV3AW3Z4ICLAQIQ5KPNLTPT3ST03XH'; var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = JSON.parse(xmlhttp.responseText); completionHandler('waze://?q=' + encodeURIComponent(res['response']['venue']['name']) + '&ll=' + res['response']['venue']['location']['lat'] + ',' + res['response']['venue']['location']['lng']); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var match = RegExp('http(?:s)?://.*foursquare\\.com/(?:v|venue)/(?:.*/)?(\\\\w+).*$').exec(url); var venueIdentifier = match[1]; url = 'https://api.foursquare.com/v2/venues/' + venueIdentifier + '?v=20140921&client_id=Q5H4T3CZWKEKK3QKQKIIKWGISC1UKY2IXJ4BZCZXCLDQ0IMR&client_secret=J1TZFLIIZ4LK3I55AIFV3AW3Z4ICLAQIQ5KPNLTPT3ST03XH'; var res = jsonRequest(url); completionHandler('waze://?q=' + encodeURIComponent(res['response']['venue']['name']) + '&ll=' + res['response']['venue']['location']['lat'] + ',' + res['response']['venue']['location']['lng']); }",
"testResults":[
"waze://?q=Ritual%20Coffee%20Roasters&ll=37.756501,-122.421146",
"waze://?q=Ritual%20Coffee%20Roasters&ll=37.756501,-122.421146"
]
},
{
"appId":"transit",
"script":"function process(url, completionHandler) { var match = RegExp('http(?:s)?://.*foursquare\\.com/(?:v|venue)/(?:.*/)?(\\\\w+).*$').exec(url); var venueIdentifier = match[1]; url = 'https://api.foursquare.com/v2/venues/' + venueIdentifier + '?v=20140921&client_id=Q5H4T3CZWKEKK3QKQKIIKWGISC1UKY2IXJ4BZCZXCLDQ0IMR&client_secret=J1TZFLIIZ4LK3I55AIFV3AW3Z4ICLAQIQ5KPNLTPT3ST03XH'; var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = JSON.parse(xmlhttp.responseText); completionHandler('transit://directions?to=' + res['response']['venue']['location']['lat'] + ',' + res['response']['venue']['location']['lng']); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var match = RegExp('http(?:s)?://.*foursquare\\.com/(?:v|venue)/(?:.*/)?(\\\\w+).*$').exec(url); var venueIdentifier = match[1]; url = 'https://api.foursquare.com/v2/venues/' + venueIdentifier + '?v=20140921&client_id=Q5H4T3CZWKEKK3QKQKIIKWGISC1UKY2IXJ4BZCZXCLDQ0IMR&client_secret=J1TZFLIIZ4LK3I55AIFV3AW3Z4ICLAQIQ5KPNLTPT3ST03XH'; var res = jsonRequest(url); completionHandler('transit://directions?to=' + res['response']['venue']['location']['lat'] + ',' + res['response']['venue']['location']['lng']); }",
"testResults":[
"transit://directions?to=37.756501,-122.421146",
"transit://directions?to=37.756501,-122.421146"
]
},
{
"appId":"citymapper",
"script":"function process(url, completionHandler) { var match = RegExp('http(?:s)?://.*foursquare\\.com/(?:v|venue)/(?:.*/)?(\\\\w+).*$').exec(url); var venueIdentifier = match[1]; url = 'https://api.foursquare.com/v2/venues/' + venueIdentifier + '?v=20140921&client_id=Q5H4T3CZWKEKK3QKQKIIKWGISC1UKY2IXJ4BZCZXCLDQ0IMR&client_secret=J1TZFLIIZ4LK3I55AIFV3AW3Z4ICLAQIQ5KPNLTPT3ST03XH'; var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = JSON.parse(xmlhttp.responseText); completionHandler('citymapper://x-callback-url/directions?endcoord=' + res['response']['venue']['location']['lat'] + ',' + res['response']['venue']['location']['lng'] + '&endname=' + encodeURIComponent(res['response']['venue']['name'])); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var match = RegExp('http(?:s)?://.*foursquare\\.com/(?:v|venue)/(?:.*/)?(\\\\w+).*$').exec(url); var venueIdentifier = match[1]; url = 'https://api.foursquare.com/v2/venues/' + venueIdentifier + '?v=20140921&client_id=Q5H4T3CZWKEKK3QKQKIIKWGISC1UKY2IXJ4BZCZXCLDQ0IMR&client_secret=J1TZFLIIZ4LK3I55AIFV3AW3Z4ICLAQIQ5KPNLTPT3ST03XH'; var res = jsonRequest(url); completionHandler('citymapper://x-callback-url/directions?endcoord=' + res['response']['venue']['location']['lat'] + ',' + res['response']['venue']['location']['lng'] + '&endname=' + encodeURIComponent(res['response']['venue']['name'])); }",
"testResults":[
"citymapper://x-callback-url/directions?endcoord=37.756501,-122.421146&endname=Ritual%20Coffee%20Roasters",
"citymapper://x-callback-url/directions?endcoord=37.756501,-122.421146&endname=Ritual%20Coffee%20Roasters"
]
}
]
},
{
"title":"Open List",
"regex":"https?://(m\\.|mobile\\.|www\\.)?foursquare\\.com/((user/\\d+|[a-zA-Z0-9_%\\-]+)/list|list)/[a-zA-Z0-9_%\\-]+.*$",
"testInputs":[
"https://foursquare.com/foursquare/list/13-architectural-marvels-in-nyc",
"https://foursquare.com/foursquare/list/5550f48b498e5d3067c36795",
"https://foursquare.com/user/25939842/list/secret-place-caf%C3%A9?s=n"
],
"formats":[
{
"appId":"foursquare",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = xmlhttp.responseText; var match = RegExp('(foursquare://.*?)\"').exec(res)[1]; completionHandler(match); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var match = RegExp('(foursquare://.*?)\"').exec(res)[1]; completionHandler(match); }",
"testResults":[
"foursquare://lists/5550f48b498e5d3067c36795",
"foursquare://lists/5550f48b498e5d3067c36795",
"foursquare://lists/55e1f6be498e9d91bb52dee6"
]
}
]
},
{
"title":"Open Tip",
"regex":"https?://(m\\.|www\\.|mobile\\.)?foursquare\\.com(/mobile)?/item/([:hex:]{24})/?.*$",
"testInputs":[
"https://foursquare.com/item/552b6f5f498e0073829b16b1"
],
"formats":[
{
"appId":"foursquare",
"format":"foursquare://tips/$3",
"testResults":[
"foursquare://tips/552b6f5f498e0073829b16b1"
]
}
]
},
{
"title":"Open Profile",
"regex":"https?://(m\\.|www\\.|mobile\\.)?foursquare\\.com(/mobile)?/(u|user)/(\\d+)/?.*$",
"testInputs":[
"http://foursquare.com/u/558158",
"https://foursquare.com/user/558158"
],
"formats":[
{
"appId":"foursquare",
"format":"foursquare://users/$4",
"testResults":[
"foursquare://users/558158",
"foursquare://users/558158"
]
}
]
},
{
"title":"Open Search",
"regex":"https?://(m\\.|www\\.|mobile\\.)?foursquare\\.com(/mobile)?/explore.*q=([^&]+).*?$",
"testInputs":[
"https://foursquare.com/explore?q=bars",
"https://foursquare.com/explore/?q=bars"
],
"formats":[
{
"appId":"foursquare",
"format":"foursquare://venues/explore?query=$3",
"testResults":[
"foursquare://venues/explore?query=bars",
"foursquare://venues/explore?query=bars"
]
}
]
},
{
"title":"Open Check-in",
"regex":"https?://(www\\.)?swarmapp\\.com(/(user/)?\\w+)?/checkin/([a-fA-F0-9]+\\?s=[a-zA-Z0-9_-]+).*$",
"testInputs":[
"https://www.swarmapp.com/checkin/5500f9a8498efebcbce3b88e?s=7mh4SF_b0MM2qFM3aJEzQpu-SDo&ref=tw",
"https://www.swarmapp.com/timonus/checkin/5500f9a8498efebcbce3b88e?s=7mh4SF_b0MM2qFM3aJEzQpu-SDo&ref=tw",
"https://www.swarmapp.com/user/558158/checkin/52bc9b4c498e386effc388fd?s=-jomjqIt5Ds8SXkJ81ek3bjGe0g&ref=tw",
"https://www.swarmapp.com/c/cnwYJbPfuAd"
],
"formats":[
{
"appId":"swarm",
"format":"swarm://checkins/$4",
"testResults":[
"swarm://checkins/5500f9a8498efebcbce3b88e?s=7mh4SF_b0MM2qFM3aJEzQpu-SDo",
"swarm://checkins/5500f9a8498efebcbce3b88e?s=7mh4SF_b0MM2qFM3aJEzQpu-SDo",
"swarm://checkins/52bc9b4c498e386effc388fd?s=-jomjqIt5Ds8SXkJ81ek3bjGe0g",
null
]
}
]
},
{
"title":"Open Check-in",
"regex":"https?://(www\\.)?swarmapp\\.com/c/[a-zA-Z0-9_-]+.*$",
"testInputs":[
"https://www.swarmapp.com/c/cnwYJbPfuAd"
],
"formats":[
{
"appId":"swarm",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = xmlhttp.responseText; var match = RegExp('(swarm://.*?)\"').exec(res)[1]; completionHandler(match); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var match = RegExp('(swarm://.*?)\"').exec(res)[1]; completionHandler(match); }",
"testResults":[
"swarm://checkins/54dc6e7d498e6f759fed73ad?s=9Mrny6Nrgw8DeC5kn1m79HuAx_E"
]
}
]
},
{
"title":"Open Venue",
"regex":"https?://(www\\.)?swarmapp\\.com/((\\w+/)?checkin/|c/).*$",
"testInputs":[
"https://www.swarmapp.com/checkin/5500f9a8498efebcbce3b88e?s=7mh4SF_b0MM2qFM3aJEzQpu-SDo&ref=tw",
"https://www.swarmapp.com/timonus/checkin/5500f9a8498efebcbce3b88e?s=7mh4SF_b0MM2qFM3aJEzQpu-SDo&ref=tw",
"https://www.swarmapp.com/c/cnwYJbPfuAd"
],
"formats":[
{
"appId":"foursquare",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = xmlhttp.responseText; var match = RegExp('foursquare\\.com/(?:v|venue)/(?:.*?/)?(\\\\w+)').exec(res)[1]; completionHandler('foursquare://venues/' + match); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var match = RegExp('foursquare\\.com/(?:v|venue)/(?:.*?/)?(\\\\w+)').exec(res)[1]; completionHandler('foursquare://venues/' + match); }",
"testResults":[
"foursquare://venues/49ba1cbdf964a5205d531fe3",
"foursquare://venues/49ba1cbdf964a5205d531fe3",
"foursquare://venues/43e879cbf964a5200f2f1fe3"
]
}
]
},
{
"title":"Open Listing",
"regex":"https?://(\\w+\\.)*airbnb(\\.\\w+)+/(rooms|listings)/(\\d+).*$",
"testInputs":[
"https://m.airbnb.com/listings/3342418",
"https://airbnb.com/rooms/3342418",
"https://www.airbnb.com/rooms/3342418",
"https://www.airbnb.fr/rooms/5224117",
"https://th.airbnb.com/rooms/27010371"
],
"formats":[
{
"appId":"airbnb",
"format":"airbnb://rooms/$4",
"testResults":[
"airbnb://rooms/3342418",
"airbnb://rooms/3342418",
"airbnb://rooms/3342418",
"airbnb://rooms/5224117",
"airbnb://rooms/27010371"
]
}
]
},
{
"title":"Open Experience",
"regex":"https?://(\\w+\\.)*airbnb(\\.\\w+)+/experiences/(\\d+).*$",
"testInputs":[
"https://www.airbnb.com/experiences/70986?source=p2&searchId=648044c8-7f3b-4d66-bc3d-d65b1a86a6ac&pdpReferrer=12&pdpContext%5Bmt_pdp_referrer_id%5D=25",
"http://th.airbnb.com/experiences/70986"
],
"formats":[
{
"appId":"airbnb",
"format":"airbnb://d/experiences/$3",
"testResults":[
"airbnb://d/experiences/70986",
"airbnb://d/experiences/70986"
]
}
]
},
{
"title":"Open Check-in",
"regex":"https?://(www\\.)?(untappd\\.com/user/[a-zA-Z0-9_\\-\\.]+/checkin/|(untp\\.beer|untpd\\.it)/s/c)(\\d+).*$",
"testInputs":[
"https://untappd.com/user/timonus/checkin/236836284",
"http://untp.beer/s/c237644605",
"http://untpd.it/s/c237644605"
],
"formats":[
{
"appId":"untappd",
"format":"untappd:///?checkin=$4",
"testResults":[
"untappd:///?checkin=236836284",
"untappd:///?checkin=237644605",
"untappd:///?checkin=237644605"
]
}
]
},
{
"title":"Open Beer",
"regex":"https?://(www\\.)?untappd\\.com/b/[a-zA-Z0-9_\\-\\.]+/(\\d+).*$",
"testInputs":[
"https://untappd.com/b/schlafly-beer-the-saint-louis-brewery-pumpkin-ale/8263"
],
"formats":[
{
"appId":"untappd",
"format":"untappd:///?beer=$2",
"testResults":[
"untappd:///?beer=8263"
]
}
]
},
{
"title":"Check in with beer",
"regex":"https?://(www\\.)?untappd\\.com/b/[a-zA-Z0-9_\\-\\.]+/(\\d+).*$",
"testInputs":[
"https://untappd.com/b/schlafly-beer-the-saint-louis-brewery-pumpkin-ale/8263"
],
"formats":[
{
"appId":"tappdthat",
"format":"tappdthat://checkin/?beerID=$2",
"testResults":[
"tappdthat://checkin/?beerID=8263"
]
}
]
},
{
"title":"Open Business",
"regex":"https?://(www\\.|mobile\\.|m\\.)?yelp(\\.[a-z]+)+/biz/([a-zA-Z0-9%\\-]+).*$",
"testInputs":[
"http://www.yelp.com/biz/sinh-sinh-restaurant-houston?pt=check_in&ref=twitter&v=4b",
"http://www.yelp.co.jp/biz/%E3%81%9F%E3%81%BE%E3%83%97%E3%83%A9%E3%83%BC%E3%82%B6%E3%83%86%E3%83%A9%E3%82%B9-%E7%A5%9E%E5%A5%88%E5%B7%9D%E7%9C%8C%E6%A8%AA%E6%B5%9C%E5%B8%82",
"http://www.yelp.ca/biz/104-sushi-and-co-surrey?hrid=YGeO5KIST5a0VuAZj8YNLg&pt=check_in&ref=twitter&v=4b"
],
"formats":[
{
"appId":"yelp",
"format":"yelp:///biz/$3",
"testResults":[
"yelp:///biz/sinh-sinh-restaurant-houston",
"yelp:///biz/%E3%81%9F%E3%81%BE%E3%83%97%E3%83%A9%E3%83%BC%E3%82%B6%E3%83%86%E3%83%A9%E3%82%B9-%E7%A5%9E%E5%A5%88%E5%B7%9D%E7%9C%8C%E6%A8%AA%E6%B5%9C%E5%B8%82",
"yelp:///biz/104-sushi-and-co-surrey"
]
}
]
},
{
"title":"View Photos",
"regex":"https?://(www\\.|mobile\\.|m\\.)?yelp(\\.[a-z]+)+/biz_photos/([a-zA-Z0-9%\\-]+).*$",
"testInputs":[
"http://www.yelp.com/biz_photos/service-max-cleaning-and-restoration-miami-3"
],
"formats":[
{
"appId":"yelp",
"format":"yelp:///biz/photos?biz_id=$3",
"testResults":[
"yelp:///biz/photos?biz_id=service-max-cleaning-and-restoration-miami-3"
]
}
]
},
{
"regex":"https?://(((?:www\\.)?google(?:\\.\\w+)+/maps)|(maps\\.google(\\.\\w+)+).*)",
"testInputs":[
"https://www.google.com/maps/place/Anchor+Brewing+Company/@37.7632216,-122.4009458,15z/data=!4m2!3m1!1s0x0:0x976aee276c5079b2?sa=X&ei=q1qQVaLFN8WqogSI6bsw&ved=0CM4BEPwSMBc",
"https://www.google.com/maps/place/Indiegogo,+965+Mission+St,+San+Francisco,+CA+94103/data=!4m2!3m1!1s0x808f7e29d40a8017:0x80a0cb606fe684b2?hl=en-US&dg=dbrw&newdg=1",
"https://maps.google.com/[email protected],-122.1836",
"http://maps.google.co.jp/maps?f=q&hl=ja&geocode=&q=-39.23774,175.3048&ie=UTF8&ll=-39.23774,175.3048&z=6",
"https://www.google.com/maps/dir/214+Homer+Ave,+Palo+Alto,+CA+94301,+USA/San+Francisco+Opera,+San+Francisco+War+Memorial+and+Performing+Arts+Center,+301+Van+Ness+Ave,+San+Francisco,+CA+94102/@37.6108546,-122.4548997,11z/am=t/data=!3m1!4b1!4m19!4m18!1m5!1m1!1s0x808fbb3b6e108ded:0x4a4eb4485d32172b!2m2!1d-122.1585457!2d37.4424932!1m5!1m1!1s0x80858099b080c0e5:0x9ee8deb0a62242a0!2m2!1d-122.4210431!2d37.7785738!2m3!6e1!7e2!8j1450377000!3e3!5i1",
"https://www.google.com/maps?t=m&ll=37.780670,-122.442896&q=Marked+Location",
"https://www.google.com/maps?q=Taquer%C3%ADa+El+Farolito,+2779+Mission+St,+San+Francisco,+CA+94110&ftid=0x808f7e474d4864e5:0xc3479e37f17ac921&hl=en-US&gl=us&shorturl=1"
],
"formats":[
{
"appId":"googlemaps",
"format":"comgooglemapsurl://$1",
"testResults":[
"comgooglemapsurl://www.google.com/maps/place/Anchor+Brewing+Company/@37.7632216,-122.4009458,15z/data=!4m2!3m1!1s0x0:0x976aee276c5079b2?sa=X&ei=q1qQVaLFN8WqogSI6bsw&ved=0CM4BEPwSMBc",
"comgooglemapsurl://www.google.com/maps/place/Indiegogo,+965+Mission+St,+San+Francisco,+CA+94103/data=!4m2!3m1!1s0x808f7e29d40a8017:0x80a0cb606fe684b2?hl=en-US&dg=dbrw&newdg=1",
"comgooglemapsurl://maps.google.com/[email protected],-122.1836",
"comgooglemapsurl://maps.google.co.jp/maps?f=q&hl=ja&geocode=&q=-39.23774,175.3048&ie=UTF8&ll=-39.23774,175.3048&z=6",
"comgooglemapsurl://www.google.com/maps/dir/214+Homer+Ave,+Palo+Alto,+CA+94301,+USA/San+Francisco+Opera,+San+Francisco+War+Memorial+and+Performing+Arts+Center,+301+Van+Ness+Ave,+San+Francisco,+CA+94102/@37.6108546,-122.4548997,11z/am=t/data=!3m1!4b1!4m19!4m18!1m5!1m1!1s0x808fbb3b6e108ded:0x4a4eb4485d32172b!2m2!1d-122.1585457!2d37.4424932!1m5!1m1!1s0x80858099b080c0e5:0x9ee8deb0a62242a0!2m2!1d-122.4210431!2d37.7785738!2m3!6e1!7e2!8j1450377000!3e3!5i1",
"comgooglemapsurl://www.google.com/maps?t=m&ll=37.780670,-122.442896&q=Marked+Location",
"comgooglemapsurl://www.google.com/maps?q=Taquer%C3%ADa+El+Farolito,+2779+Mission+St,+San+Francisco,+CA+94110&ftid=0x808f7e474d4864e5:0xc3479e37f17ac921&hl=en-US&gl=us&shorturl=1"
]
}
]
},
{
"regex":"https?://((?:www\\.)?google(?:\\.\\w+)+/maps/place/([^/]+)/(?:(?:@(([^/]+,[^/]+)(?:,[^/]+))|(?!data)([^/]+)))?.*)$",
"testInputs":[
"https://www.google.com/maps/place/Anchor+Brewing+Company/@37.7632216,-122.4009458,15z/data=!4m2!3m1!1s0x0:0x976aee276c5079b2?sa=X&ei=q1qQVaLFN8WqogSI6bsw&ved=0CM4BEPwSMBc",
"https://www.google.com/maps/place/Indiegogo,+965+Mission+St,+San+Francisco,+CA+94103/data=!4m2!3m1!1s0x808f7e29d40a8017:0x80a0cb606fe684b2?hl=en-US&dg=dbrw&newdg=1",
"https://maps.google.com/[email protected],-122.1836",
"http://maps.google.co.jp/maps?f=q&hl=ja&geocode=&q=-39.23774,175.3048&ie=UTF8&ll=-39.23774,175.3048&z=6"
],
"formats":[
{
"appId":"applemaps",
"format":"maps://maps.apple.com/maps?q=$2&ll=$3&address=$5",
"testResults":[
"maps://maps.apple.com/maps?q=Anchor+Brewing+Company&ll=37.7632216,-122.4009458,15z&address=",
"maps://maps.apple.com/maps?q=Indiegogo,+965+Mission+St,+San+Francisco,+CA+94103&ll=&address=",
null,
null
]
},
{
"appId":"waze",
"format":"waze://?q=$2&ll=$3",
"testResults":[
"waze://?q=Anchor+Brewing+Company&ll=37.7632216,-122.4009458,15z",
"waze://?q=Indiegogo,+965+Mission+St,+San+Francisco,+CA+94103&ll=",
null,
null
]
},
{
"appId":"citymapper",
"format":"citymapper://x-callback-url/directions?endcoord=$4&endname=$2&endaddress=$5",
"testResults":[
"citymapper://x-callback-url/directions?endcoord=37.7632216,-122.4009458&endname=Anchor+Brewing+Company&endaddress=",
"citymapper://x-callback-url/directions?endcoord=&endname=Indiegogo,+965+Mission+St,+San+Francisco,+CA+94103&endaddress=",
null,
null
]
}
]
},
{
"regex":"https?://(www\\.|maps\\.)?google(\\.\\w+)+/maps/search/@?([^/,]+,[^/,]+)(,[^/]+)?.*$",
"testInputs":[
"https://www.google.com/maps/search/37.755225,-122.476069",
"https://www.google.com/maps/search/37.755225,-122.476069/data=!4m2!2m1!4b1?hl=en-US&gl=us&dg=dbrw&newdg=1",
"https://maps.google.com/maps/search/37.755225,-122.476069",
"https://maps.google.com/maps/search/37.755225,-122.476069/data=!4m2!2m1!4b1?hl=en-US&gl=us&dg=dbrw&newdg=1",
"https://www.google.com/maps/search/37.755225,-122.476069,15z",
"https://www.google.com/maps/search/@37.755225,-122.476069"
],
"formats":[
{
"appId":"applemaps",
"format":"maps://maps.apple.com/maps?q=$3",
"testResults":[
"maps://maps.apple.com/maps?q=37.755225,-122.476069",
"maps://maps.apple.com/maps?q=37.755225,-122.476069",
"maps://maps.apple.com/maps?q=37.755225,-122.476069",
"maps://maps.apple.com/maps?q=37.755225,-122.476069",
"maps://maps.apple.com/maps?q=37.755225,-122.476069",
"maps://maps.apple.com/maps?q=37.755225,-122.476069"
]
},
{
"appId":"waze",
"format":"waze://?q=$3",
"testResults":[
"waze://?q=37.755225,-122.476069",
"waze://?q=37.755225,-122.476069",
"waze://?q=37.755225,-122.476069",
"waze://?q=37.755225,-122.476069",
"waze://?q=37.755225,-122.476069",
"waze://?q=37.755225,-122.476069"
]
}
]
},
{
"regex":"https?://(www\\.google(\\.\\w+)+/maps(?!/place/.*).*(\\?.*))",
"testInputs":[
"https://www.google.com/maps/place/Anchor+Brewing+Company/@37.7632216,-122.4009458,15z/data=!4m2!3m1!1s0x0:0x976aee276c5079b2?sa=X&ei=q1qQVaLFN8WqogSI6bsw&ved=0CM4BEPwSMBc",
"https://maps.google.com/[email protected],-122.1836",
"http://maps.google.co.jp/maps?f=q&hl=ja&geocode=&q=-39.23774,175.3048&ie=UTF8&ll=-39.23774,175.3048&z=6",
"https://www.google.com/maps?q=Taquer%C3%ADa+El+Farolito,+2779+Mission+St,+San+Francisco,+CA+94110&ftid=0x808f7e474d4864e5:0xc3479e37f17ac921&hl=en-US&gl=us&shorturl=1"
],
"formats":[
{
"appId":"applemaps",
"format":"maps://maps.apple.com/maps$3",
"testResults":[
null,
null,
null,
"maps://maps.apple.com/maps?q=Taquer%C3%ADa+El+Farolito,+2779+Mission+St,+San+Francisco,+CA+94110&ftid=0x808f7e474d4864e5:0xc3479e37f17ac921&hl=en-US&gl=us&shorturl=1"
]
},
{
"appId":"waze",
"format":"waze://$3",
"testResults":[
null,
null,
null,
"waze://?q=Taquer%C3%ADa+El+Farolito,+2779+Mission+St,+San+Francisco,+CA+94110&ftid=0x808f7e474d4864e5:0xc3479e37f17ac921&hl=en-US&gl=us&shorturl=1"
]
}
]
},
{
"regex":"https?://(maps\\.google(\\.\\w+)+/(?!maps/place/.*).*(\\?.*))",
"testInputs":[
"https://www.google.com/maps/place/Anchor+Brewing+Company/@37.7632216,-122.4009458,15z/data=!4m2!3m1!1s0x0:0x976aee276c5079b2?sa=X&ei=q1qQVaLFN8WqogSI6bsw&ved=0CM4BEPwSMBc",
"https://maps.google.com/[email protected],-122.1836",
"http://maps.google.co.jp/maps?f=q&hl=ja&geocode=&q=-39.23774,175.3048&ie=UTF8&ll=-39.23774,175.3048&z=6",
"https://www.google.com/maps?q=Taquer%C3%ADa+El+Farolito,+2779+Mission+St,+San+Francisco,+CA+94110&ftid=0x808f7e474d4864e5:0xc3479e37f17ac921&hl=en-US&gl=us&shorturl=1"
],
"formats":[
{
"appId":"applemaps",
"format":"maps://maps.apple.com/maps$3",
"testResults":[
null,
"maps://maps.apple.com/[email protected],-122.1836",
"maps://maps.apple.com/maps?f=q&hl=ja&geocode=&q=-39.23774,175.3048&ie=UTF8&ll=-39.23774,175.3048&z=6",
null
]
},
{
"appId":"waze",
"format":"waze://$3",
"testResults":[
null,
"waze://[email protected],-122.1836",
"waze://?f=q&hl=ja&geocode=&q=-39.23774,175.3048&ie=UTF8&ll=-39.23774,175.3048&z=6",
null
]
}
]
},
{
"regex":"https?://maps\\.apple\\.com/?(maps/?)?\\?(.*)",
"testInputs":[
"http://maps.apple.com/maps?address=620%20Treat%20Ave%20San%20Francisco%20CA%2094110-2016%20United%20States&auid=8554658162390289549&ll=37.760092,-122.414035&lsp=9902&q=Southern%20Pacific%20Brewing&t=r",
"http://maps.apple.com/maps/?address=620%20Treat%20Ave%20San%20Francisco%20CA%2094110-2016%20United%20States&auid=8554658162390289549&ll=37.760092,-122.414035&lsp=9902&q=Southern%20Pacific%20Brewing&t=r",
"http://maps.apple.com/maps?address=967%20Mission%20St%20San%20Francisco%20CA%2094103%20United%20States&ll=37.781510,-122.407999&t=m",
"http://maps.apple.com/?lsp=6489&sll=34.045802,-118.260574&q=645%20W%209th%20St%20%23110-140%20Los%20Angeles%20CA%2090015-1640%20United%20States",
"http://maps.apple.com/?lsp=9902&auid=5554799088491316685&sll=28.026687,-81.617854&q=Dundee%20Elementary%20School&hnear=215%20E%20Frederick%20Ave%2C%20Dundee%2C%20FL%20%2033838-4238%2C%20United%20States",
"https://maps.apple.com/?address=1%20Dana%20St,%20Cambridge,%20MA%20%2002138,%20United%20States&ll=42.369732,-71.110707&q=1%20Dana%20St",
"https://maps.apple.com?address=1%20Dana%20St,%20Cambridge,%20MA%20%2002138,%20United%20States&ll=42.369732,-71.110707&q=1%20Dana%20St",
"https://maps.apple.com/?ll=37.336733,-122.031641&q=Marked%20Location&_ext=EiYplZqo4IaqQkAxpge19GKCXsA5E3DOPK2rQkBByor116mBXsBQBA%3D%3D&t=m"
],
"formats":[
{
"appId":"applemaps",
"format":"maps://maps.apple.com/maps?$2",
"testResults":[
"maps://maps.apple.com/maps?address=620%20Treat%20Ave%20San%20Francisco%20CA%2094110-2016%20United%20States&auid=8554658162390289549&ll=37.760092,-122.414035&lsp=9902&q=Southern%20Pacific%20Brewing&t=r",
"maps://maps.apple.com/maps?address=620%20Treat%20Ave%20San%20Francisco%20CA%2094110-2016%20United%20States&auid=8554658162390289549&ll=37.760092,-122.414035&lsp=9902&q=Southern%20Pacific%20Brewing&t=r",
"maps://maps.apple.com/maps?address=967%20Mission%20St%20San%20Francisco%20CA%2094103%20United%20States&ll=37.781510,-122.407999&t=m",
"maps://maps.apple.com/maps?lsp=6489&sll=34.045802,-118.260574&q=645%20W%209th%20St%20%23110-140%20Los%20Angeles%20CA%2090015-1640%20United%20States",
"maps://maps.apple.com/maps?lsp=9902&auid=5554799088491316685&sll=28.026687,-81.617854&q=Dundee%20Elementary%20School&hnear=215%20E%20Frederick%20Ave%2C%20Dundee%2C%20FL%20%2033838-4238%2C%20United%20States",
"maps://maps.apple.com/maps?address=1%20Dana%20St,%20Cambridge,%20MA%20%2002138,%20United%20States&ll=42.369732,-71.110707&q=1%20Dana%20St",
"maps://maps.apple.com/maps?address=1%20Dana%20St,%20Cambridge,%20MA%20%2002138,%20United%20States&ll=42.369732,-71.110707&q=1%20Dana%20St",
"maps://maps.apple.com/maps?ll=37.336733,-122.031641&q=Marked%20Location&_ext=EiYplZqo4IaqQkAxpge19GKCXsA5E3DOPK2rQkBByor116mBXsBQBA%3D%3D&t=m"
]
},
{
"appId":"googlemaps",
"script":"function getParameterByName(url, name) { name = name.replace(RegExp('[\\[]'), '\\\\[').replace(RegExp('[\\]]'), '\\\\]'); var regex = RegExp('[\\\\?&]' + name + '=([^&#]*)'); results = regex.exec(url); return results === null ? '' : decodeURIComponent(results[1].replace(RegExp('\\\\+', 'g'), ' ')); } function process(url, completionHandler) { var appleAddress = getParameterByName(url, 'address'); if (appleAddress == null || appleAddress.length == 0) { appleAddress = getParameterByName(url, 'hnear'); } var appleLL = getParameterByName(url, 'll'); if (!appleLL) { appleLL = getParameterByName(url, 'sll'); } var appleQ = getParameterByName(url, 'q'); var googleQ= ''; var googleCenter = ''; if (appleAddress != null && appleAddress.length > 0) { googleQ = appleAddress; } else if (appleQ != null) { googleQ = appleQ; } if (appleLL != null && appleLL.length > 0) { googleCenter = appleLL; } var query = ''; if (googleQ.length > 0) { query = 'q=' + encodeURIComponent(googleQ); } if (googleCenter.length > 0) { if (query.length > 0) { query = query + '%20'; } query = query + '@' + googleCenter; } var url = 'comgooglemaps://?' + query; completionHandler(url); }",
"script2":"function getParameterByName(url, name) { name = name.replace(RegExp('[\\[]'), '\\\\[').replace(RegExp('[\\]]'), '\\\\]'); var regex = RegExp('[\\\\?&]' + name + '=([^&#]*)'); results = regex.exec(url); return results === null ? '' : decodeURIComponent(results[1].replace(RegExp('\\\\+', 'g'), ' ')); } function process(url, completionHandler) { var appleAddress = getParameterByName(url, 'address'); if (appleAddress == null || appleAddress.length == 0) { appleAddress = getParameterByName(url, 'hnear'); } var appleLL = getParameterByName(url, 'll'); if (!appleLL) { appleLL = getParameterByName(url, 'sll'); } var appleQ = getParameterByName(url, 'q'); var googleQ= ''; var googleCenter = ''; if (appleAddress != null && appleAddress.length > 0) { googleQ = appleAddress; } else if (appleQ != null) { googleQ = appleQ; } if (appleLL != null && appleLL.length > 0) { googleCenter = appleLL; } var query = ''; if (googleQ.length > 0) { query = 'q=' + encodeURIComponent(googleQ); } if (googleCenter.length > 0) { if (query.length > 0) { query = query + '%20'; } query = query + '@' + googleCenter; } var url = 'comgooglemaps://?' + query; completionHandler(url); }",
"testResults":[
"comgooglemaps://?q=620%20Treat%20Ave%20San%20Francisco%20CA%2094110-2016%20United%20States%[email protected],-122.414035",
"comgooglemaps://?q=620%20Treat%20Ave%20San%20Francisco%20CA%2094110-2016%20United%20States%[email protected],-122.414035",
"comgooglemaps://?q=967%20Mission%20St%20San%20Francisco%20CA%2094103%20United%20States%[email protected],-122.407999",
"comgooglemaps://?q=645%20W%209th%20St%20%23110-140%20Los%20Angeles%20CA%2090015-1640%20United%20States%[email protected],-118.260574",
"comgooglemaps://?q=215%20E%20Frederick%20Ave%2C%20Dundee%2C%20FL%20%2033838-4238%2C%20United%20States%[email protected],-81.617854",
"comgooglemaps://?q=1%20Dana%20St%2C%20Cambridge%2C%20MA%20%2002138%2C%20United%20States%[email protected],-71.110707",
"comgooglemaps://?q=1%20Dana%20St%2C%20Cambridge%2C%20MA%20%2002138%2C%20United%20States%[email protected],-71.110707",
"comgooglemaps://?q=Marked%20Location%[email protected],-122.031641"
]
},
{
"appId":"waze",
"script":"function getParameterByName(url, name) { name = name.replace(RegExp('[\\[]'), '\\\\[').replace(RegExp('[\\]]'), '\\\\]'); var regex = RegExp('[\\\\?&]' + name + '=([^&#]*)'); results = regex.exec(url); return results === null ? '' : decodeURIComponent(results[1].replace(RegExp('\\\\+', 'g'), ' ')); } function process(url, completionHandler) { var appleAddress = getParameterByName(url, 'address'); if (appleAddress == null || appleAddress.length == 0) { appleAddress = getParameterByName(url, 'hnear'); } var appleLL = getParameterByName(url, 'll'); if (!appleLL) { appleLL = getParameterByName(url, 'sll'); } var appleQ = getParameterByName(url, 'q'); var googleQ= ''; var googleCenter = ''; if (appleQ != null) { googleQ = appleQ; } if (appleAddress != null && appleAddress.length > 0) { if (googleQ.length > 0) { googleQ = googleQ + ','; } googleQ = googleQ + appleAddress; } if (appleLL != null && appleLL.length > 0) { googleCenter = appleLL; } var query = ''; if (googleQ.length > 0) { query = 'q=' + encodeURIComponent(googleQ); } if (googleCenter.length > 0) { if (query.length > 0) { query = query + '&'; } query = query + 'll=' + googleCenter; } var url = 'waze://?' + query; completionHandler(url); }",
"script2":"function getParameterByName(url, name) { name = name.replace(RegExp('[\\[]'), '\\\\[').replace(RegExp('[\\]]'), '\\\\]'); var regex = RegExp('[\\\\?&]' + name + '=([^&#]*)'); results = regex.exec(url); return results === null ? '' : decodeURIComponent(results[1].replace(RegExp('\\\\+', 'g'), ' ')); } function process(url, completionHandler) { var appleAddress = getParameterByName(url, 'address'); if (appleAddress == null || appleAddress.length == 0) { appleAddress = getParameterByName(url, 'hnear'); } var appleLL = getParameterByName(url, 'll'); if (!appleLL) { appleLL = getParameterByName(url, 'sll'); } var appleQ = getParameterByName(url, 'q'); var googleQ= ''; var googleCenter = ''; if (appleQ != null) { googleQ = appleQ; } if (appleAddress != null && appleAddress.length > 0) { if (googleQ.length > 0) { googleQ = googleQ + ','; } googleQ = googleQ + appleAddress; } if (appleLL != null && appleLL.length > 0) { googleCenter = appleLL; } var query = ''; if (googleQ.length > 0) { query = 'q=' + encodeURIComponent(googleQ); } if (googleCenter.length > 0) { if (query.length > 0) { query = query + '&'; } query = query + 'll=' + googleCenter; } var url = 'waze://?' + query; completionHandler(url); }",
"testResults":[
"waze://?q=Southern%20Pacific%20Brewing%2C620%20Treat%20Ave%20San%20Francisco%20CA%2094110-2016%20United%20States&ll=37.760092,-122.414035",
"waze://?q=Southern%20Pacific%20Brewing%2C620%20Treat%20Ave%20San%20Francisco%20CA%2094110-2016%20United%20States&ll=37.760092,-122.414035",
"waze://?q=967%20Mission%20St%20San%20Francisco%20CA%2094103%20United%20States&ll=37.781510,-122.407999",
"waze://?q=645%20W%209th%20St%20%23110-140%20Los%20Angeles%20CA%2090015-1640%20United%20States&ll=34.045802,-118.260574",
"waze://?q=Dundee%20Elementary%20School%2C215%20E%20Frederick%20Ave%2C%20Dundee%2C%20FL%20%2033838-4238%2C%20United%20States&ll=28.026687,-81.617854",
"waze://?q=1%20Dana%20St%2C1%20Dana%20St%2C%20Cambridge%2C%20MA%20%2002138%2C%20United%20States&ll=42.369732,-71.110707",
"waze://?q=1%20Dana%20St%2C1%20Dana%20St%2C%20Cambridge%2C%20MA%20%2002138%2C%20United%20States&ll=42.369732,-71.110707",
"waze://?q=Marked%20Location&ll=37.336733,-122.031641"
]
}
]
},
{
"title":"Open Collection",
"regex":"https?(://(collections|guides)\\.apple\\.com/.*)$",
"testInputs":[
"https://collections.apple.com/collection?_col=CgcxLzMxLzIwEg0Irk0Qr9%2BCmIiSz%2FkEEg4Irk0QorvTr%2FXIjdyiARIOCK5NEJefgoXilL6esgESDgiuTRDM8uqdsMXMuu0BEg4Irk0Qj%2BCD%2Bo2Kj9WoAQ%3D%3D",
"https://guides.apple.com/?ug=Cgbnj77loLQSngEaYuOAkjAwNC0wODYxLCDljJfmtbfpgZPmnK3luYzluILmuIXnlLDljLosIOWMl%2BmHjjHmnaEx5LiB55uuMi0yNiwg44Ko44Oh44Op44Or44OJ44Kw44Oq44O844Oz5YyX6YeOIhIJ2QLnMW%2BBRUARE8t3OqGtYUAqJOaJi%2BOCqOODoeODqeODq%2BODieOCsOODquODvOODs%2BWMl%2BmHjhKDARpT44CSMDAzLTAwMjEsIOWMl%2Ba1t%2BmBk%2BacreW5jOW4gueZveefs%2BWMuiwg5qCE6YCaMTfkuIHnm644LTIwLCDjgrDjg6njg7Pjg5Ljg6vljZfpg7ciEgnprjYQ3INFQBFq6FVTyK1hQCoY5omL44Kw44Op44Oz44OS44Or5Y2X6YO3EpIBGlvjgJIwMDMtMDAyNywg5YyX5rW36YGT5pyt5bmM5biC55m955%2Bz5Yy6LCDmnKzpgJo05LiB55uu5YyXMi04LCDjgq%2Fjg6rjg7zjg7Pjg6rjg5Djg7znmb3nn7MyIhIJQnkfR3OGRUARkdGmjyWtYUAqH%2BaJi%2BOCr%2BODquODvOODs%2BODquODkOODvOeZveefszISeRpB44CSMDAzLTAwMjgsIOWMl%2Ba1t%2BmBk%2BacreW5jOW4gueZveefs%2BWMuiwg5bmz5ZKM6YCaM%2BS4geebruWNlzItMTIiEgkiQ4PWloZFQBHpjxd1Ka1hQCog5omL55m955%2BzMS3jgq%2Fjg6rjg7zjg7Pjg6rjg5Djg7wSexpC44CSMDYyLTA5MjIsIOWMl%2Ba1t%2BmBk%2BacreW5jOW4guixiuW5s%2BWMuiwg5Lit44Gu5bO2MuadoTEw5LiB55uuNi0yIhIJ5wkSfr%2BCRUARAced%2F3arYUAqIeaJi%2BS4reOBruWztuOCr%2BODquODvOODs%2BODquODkOODvBJvGkLjgJIwNjItMDA1NCwg5YyX5rW36YGT5pyt5bmM5biC6LGK5bmz5Yy6LCDmnIjlr5LmnbE05p2hOeS4geebrjYtMTEiEgmc57WHJ4RFQBHSN4WnGK1hQCoV5omL44Kr44O844K15pyI5a%2BS5p2xEmgaQeOAkjAwMy0wMDI1LCDljJfmtbfpgZPmnK3luYzluILnmb3nn7PljLosIOacrOmDt%2BmAmjbkuIHnm67ljJc3LTIwIhIJ9DaC36yFRUARqdgyKDWtYUAqD%2BOCteODs%2BODj%2BOCpOODhBJiGkHjgJIwNjItMDA1Miwg5YyX5rW36YGT5pyt5bmM5biC6LGK5bmz5Yy6LCDmnIjlr5LmnbEy5p2hM%2BS4geebrjMtOSISCTFFU%2FvyhEVAEYIH2djIrGFAKgnkuK3plpPngrkSaxo744CSMDA1LTAwMDMsIOWMl%2Ba1t%2BmBk%2BacreW5jOW4guWNl%2BWMuiwg5r6E5bedM%2BadoTHkuIHnm64zLTEiEglaLBdWdIJFQBEU2ejdsathQCoY5r6E5bed44OR44O844Kv44OP44Kk44OgEmoaQOOAkjAwNC0wMDY5LCDljJfmtbfpgZPmnK3luYzluILljprliKXljLosIOWOmuWIpeeUuuWxseacrDc1MC0xMTciEgl%2B3a%2FoQYdFQBGEJxOQt65hQCoS6Zmk6Zuq5qmf5b6F5qmf5aC0ElwaL%2BWMl%2Ba1t%2BmBk%2BacreW5jOW4giwg6Je75bKp5bGx6Kaz5YWJ6Ieq5YuV6LuK6YGTIhIJlURPv2SBRUAR0e0XjTSqYUAqFeW3puS6rOWcn%2BWgtOOAgOmHjeapnxJZGj7jgJIwNjMtMDgzNiwg5YyX5rW36YGT5pyt5bmM5biC6KW%2F5Yy6LCDnmbrlr5IxNuadoTEz5LiB55uuMy01NSISCbPCgupAjkVAEaon%2BAE%2BqWFAKgNUQ00SKyISCXgtyJxCkUVAEdYUD6H5rWFAKhXjgrnjg4jjg6zjg7zjg4jlnJ%2FloLQ%3D"
],
"formats":[
{
"appId":"applemaps",
"format":"maps$1",
"testResults":[
"maps://collections.apple.com/collection?_col=CgcxLzMxLzIwEg0Irk0Qr9%2BCmIiSz%2FkEEg4Irk0QorvTr%2FXIjdyiARIOCK5NEJefgoXilL6esgESDgiuTRDM8uqdsMXMuu0BEg4Irk0Qj%2BCD%2Bo2Kj9WoAQ%3D%3D",
"maps://guides.apple.com/?ug=Cgbnj77loLQSngEaYuOAkjAwNC0wODYxLCDljJfmtbfpgZPmnK3luYzluILmuIXnlLDljLosIOWMl%2BmHjjHmnaEx5LiB55uuMi0yNiwg44Ko44Oh44Op44Or44OJ44Kw44Oq44O844Oz5YyX6YeOIhIJ2QLnMW%2BBRUARE8t3OqGtYUAqJOaJi%2BOCqOODoeODqeODq%2BODieOCsOODquODvOODs%2BWMl%2BmHjhKDARpT44CSMDAzLTAwMjEsIOWMl%2Ba1t%2BmBk%2BacreW5jOW4gueZveefs%2BWMuiwg5qCE6YCaMTfkuIHnm644LTIwLCDjgrDjg6njg7Pjg5Ljg6vljZfpg7ciEgnprjYQ3INFQBFq6FVTyK1hQCoY5omL44Kw44Op44Oz44OS44Or5Y2X6YO3EpIBGlvjgJIwMDMtMDAyNywg5YyX5rW36YGT5pyt5bmM5biC55m955%2Bz5Yy6LCDmnKzpgJo05LiB55uu5YyXMi04LCDjgq%2Fjg6rjg7zjg7Pjg6rjg5Djg7znmb3nn7MyIhIJQnkfR3OGRUARkdGmjyWtYUAqH%2BaJi%2BOCr%2BODquODvOODs%2BODquODkOODvOeZveefszISeRpB44CSMDAzLTAwMjgsIOWMl%2Ba1t%2BmBk%2BacreW5jOW4gueZveefs%2BWMuiwg5bmz5ZKM6YCaM%2BS4geebruWNlzItMTIiEgkiQ4PWloZFQBHpjxd1Ka1hQCog5omL55m955%2BzMS3jgq%2Fjg6rjg7zjg7Pjg6rjg5Djg7wSexpC44CSMDYyLTA5MjIsIOWMl%2Ba1t%2BmBk%2BacreW5jOW4guixiuW5s%2BWMuiwg5Lit44Gu5bO2MuadoTEw5LiB55uuNi0yIhIJ5wkSfr%2BCRUARAced%2F3arYUAqIeaJi%2BS4reOBruWztuOCr%2BODquODvOODs%2BODquODkOODvBJvGkLjgJIwNjItMDA1NCwg5YyX5rW36YGT5pyt5bmM5biC6LGK5bmz5Yy6LCDmnIjlr5LmnbE05p2hOeS4geebrjYtMTEiEgmc57WHJ4RFQBHSN4WnGK1hQCoV5omL44Kr44O844K15pyI5a%2BS5p2xEmgaQeOAkjAwMy0wMDI1LCDljJfmtbfpgZPmnK3luYzluILnmb3nn7PljLosIOacrOmDt%2BmAmjbkuIHnm67ljJc3LTIwIhIJ9DaC36yFRUARqdgyKDWtYUAqD%2BOCteODs%2BODj%2BOCpOODhBJiGkHjgJIwNjItMDA1Miwg5YyX5rW36YGT5pyt5bmM5biC6LGK5bmz5Yy6LCDmnIjlr5LmnbEy5p2hM%2BS4geebrjMtOSISCTFFU%2FvyhEVAEYIH2djIrGFAKgnkuK3plpPngrkSaxo744CSMDA1LTAwMDMsIOWMl%2Ba1t%2BmBk%2BacreW5jOW4guWNl%2BWMuiwg5r6E5bedM%2BadoTHkuIHnm64zLTEiEglaLBdWdIJFQBEU2ejdsathQCoY5r6E5bed44OR44O844Kv44OP44Kk44OgEmoaQOOAkjAwNC0wMDY5LCDljJfmtbfpgZPmnK3luYzluILljprliKXljLosIOWOmuWIpeeUuuWxseacrDc1MC0xMTciEgl%2B3a%2FoQYdFQBGEJxOQt65hQCoS6Zmk6Zuq5qmf5b6F5qmf5aC0ElwaL%2BWMl%2Ba1t%2BmBk%2BacreW5jOW4giwg6Je75bKp5bGx6Kaz5YWJ6Ieq5YuV6LuK6YGTIhIJlURPv2SBRUAR0e0XjTSqYUAqFeW3puS6rOWcn%2BWgtOOAgOmHjeapnxJZGj7jgJIwNjMtMDgzNiwg5YyX5rW36YGT5pyt5bmM5biC6KW%2F5Yy6LCDnmbrlr5IxNuadoTEz5LiB55uuMy01NSISCbPCgupAjkVAEaon%2BAE%2BqWFAKgNUQ00SKyISCXgtyJxCkUVAEdYUD6H5rWFAKhXjgrnjg4jjg6zjg7zjg4jlnJ%2FloLQ%3D"
]
}
]
},
{
"regex":"https?://(?:\\w+\\.)*waze\\.com/(livemap|live-map)/directions.*(latlng=|to=ll\\.)((\\d|.)*(%2C|,)(\\d|.)*).*?$",
"testInputs":[
"https://www.waze.com/livemap/directions?latlng=37.789814%2C-122.395356",
"https://www.waze.com/livemap/directions?latlng=37.789814,-122.395356",
"https://www.waze.com/live-map/directions?to=ll.37.922122,-122.025082"
],
"formats":[
{
"appId":"waze",
"format":"waze://?ll=$3",
"testResults":[
"waze://?ll=37.789814%2C-122.395356",
"waze://?ll=37.789814,-122.395356",
"waze://?ll=37.922122,-122.025082"
]
},
{
"appId":"applemaps",
"format":"maps://maps.apple.com/maps?q=$3&ll=$3",
"testResults":[
"maps://maps.apple.com/maps?q=37.789814%2C-122.395356&ll=37.789814%2C-122.395356",
"maps://maps.apple.com/maps?q=37.789814,-122.395356&ll=37.789814,-122.395356",
"maps://maps.apple.com/maps?q=37.922122,-122.025082&ll=37.922122,-122.025082"
]
},
{
"appId":"googlemaps",
"format":"comgooglemaps://?q=$3&center=$3",
"testResults":[
"comgooglemaps://?q=37.789814%2C-122.395356&center=37.789814%2C-122.395356",
"comgooglemaps://?q=37.789814,-122.395356&center=37.789814,-122.395356",
"comgooglemaps://?q=37.922122,-122.025082&center=37.922122,-122.025082"
]
},
{
"appId":"citymapper",
"format":"citymapper://x-callback-url/directions?endcoord=$3",
"testResults":[
"citymapper://x-callback-url/directions?endcoord=37.789814%2C-122.395356",
"citymapper://x-callback-url/directions?endcoord=37.789814,-122.395356",
"citymapper://x-callback-url/directions?endcoord=37.922122,-122.025082"
]
},
{
"appId":"transit",
"format":"transit://directions?to=$3",
"testResults":[
"transit://directions?to=37.789814%2C-122.395356",
"transit://directions?to=37.789814,-122.395356",
"transit://directions?to=37.922122,-122.025082"
]
}
]
},
{
"regex":"https?://(www\\.)?waze\\.to/?\\?([^#]+).*$",
"testInputs":[
"http://waze.to/?ll=34.042892,-118.245853&navigate=yes",
"https://www.waze.to/?q=burgers"
],
"formats":[
{
"appId":"waze",
"format":"waze://?$2",
"testResults":[
"waze://?ll=34.042892,-118.245853&navigate=yes",
"waze://?q=burgers"
]
},
{
"appId":"applemaps",
"format":"maps://maps.apple.com/maps?$2",
"testResults":[
"maps://maps.apple.com/maps?ll=34.042892,-118.245853&navigate=yes",
"maps://maps.apple.com/maps?q=burgers"
]
}
]
},
{
"regex":"https?://(?:www\\.)?waze\\.to/?\\?(?:.+&)?ll=([^&]+).*$",
"testInputs":[
"http://waze.to/?ll=34.042892,-118.245853&navigate=yes",
"https://www.waze.to/?q=burgers"
],
"formats":[
{
"appId":"googlemaps",
"format":"comgooglemaps://?q=$1&center=$1",
"testResults":[
"comgooglemaps://?q=34.042892,-118.245853&center=34.042892,-118.245853",
null
]
}
]
},
{
"regex":"https?://(\\w+\\.)*(maps\\.(apple|google)(\\.\\w+)+|google(\\.\\w+)+/maps|waze\\.to).*(ll=|@)([\\-0-9\\.]+,[\\-0-9\\.]+).*?$",
"testInputs":[
"http://maps.google.co.jp/maps?f=q&hl=ja&geocode=&q=-39.23774,175.3048&ie=UTF8&ll=-39.23774,175.3048&z=6",
"https://www.google.com/maps/place/Schwartz+and+Architecture/@37.7588677,-122.4044106,17z/data=!3m1!4b1!4m5!3m4!1s0x808f7e355b27add5:0xbea02036f8bac009!8m2!3d37.7588677!4d-122.4022219",
"http://maps.apple.com/maps?address=620%20Treat%20Ave%20San%20Francisco%20CA%2094110-2016%20United%20States&auid=8554658162390289549&ll=37.760092,-122.414035&lsp=9902&q=Southern%20Pacific%20Brewing&t=r",
"http://maps.apple.com/maps?address=967%20Mission%20St%20San%20Francisco%20CA%2094103%20United%20States&ll=37.781510,-122.407999&t=m",
"http://maps.apple.com/?lsp=6489&sll=34.045802,-118.260574&q=645%20W%209th%20St%20%23110-140%20Los%20Angeles%20CA%2090015-1640%20United%20States",
"http://maps.apple.com/?lsp=9902&auid=5554799088491316685&sll=28.026687,-81.617854&q=Dundee%20Elementary%20School&hnear=215%20E%20Frederick%20Ave%2C%20Dundee%2C%20FL%20%2033838-4238%2C%20United%20States",
"http://waze.to/?ll=34.042892,-118.245853&navigate=yes",
"https://maps.google.com/maps?hl=en-us&client=safari&yv=2&um=1&ie=UTF-8&fb=1&gl=us&entry=s&sa=X&ftid=0x89ace4f20060d85d:0x6f60980dc6d325c2&gmm=CgIgAQ%3D%3D"
],
"formats":[
{
"appId":"transit",
"format":"transit://directions?to=$7",
"testResults":[
"transit://directions?to=-39.23774,175.3048",
"transit://directions?to=37.7588677,-122.4044106",
"transit://directions?to=37.760092,-122.414035",
"transit://directions?to=37.781510,-122.407999",
"transit://directions?to=34.045802,-118.260574",
"transit://directions?to=28.026687,-81.617854",
"transit://directions?to=34.042892,-118.245853",
null
]
},
{
"appId":"citymapper",
"format":"citymapper://x-callback-url/directions?endcoord=$7",
"testResults":[
"citymapper://x-callback-url/directions?endcoord=-39.23774,175.3048",
"citymapper://x-callback-url/directions?endcoord=37.7588677,-122.4044106",
"citymapper://x-callback-url/directions?endcoord=37.760092,-122.414035",
"citymapper://x-callback-url/directions?endcoord=37.781510,-122.407999",
"citymapper://x-callback-url/directions?endcoord=34.045802,-118.260574",
"citymapper://x-callback-url/directions?endcoord=28.026687,-81.617854",
"citymapper://x-callback-url/directions?endcoord=34.042892,-118.245853",
null
]
}
]
},
{
"regex":"https?://(((\\w+\\.)?(youtube\\.com|youtu\\.be))/(?!redirect).*)$",
"testInputs":[
"https://m.youtube.com/watch?v=MTY1Kje0yLg",
"https://www.youtube.com/embed/0uY7gLZDmn4?start=96",
"https://www.youtube.com/watch?v=MFzDaBzBlL0&app=desktop",
"https://youtu.be/mzun7_Ynmks",
"http://youtu.be/JEiSTzK-A2A",
"https://youtu.be/yWDJoJm-Rk0?t=4m30s",
"https://www.youtube.com/watch?v=S4WNO4tchUk",
"https://www.youtube.com/watch?v=ngElkyQ6Rhs",
"https://www.youtube.com/user/timonominus",
"https://m.youtube.com/user/timonominus",
"https://www.youtube.com/channel/UC4eYXhJI4-7wSWc8UNRwD4A",
"https://www.youtube.com/channel/UCqPTgFxqw_46kJGmEznQqqQ",
"https://www.youtube.com/playlist?list=PL2ED57C3E5C561B91",
"https://www.youtube.com/vintagespace",
"https://www.youtube.com/redirect?q=https%3A%2F%2Fwww.instagram.com%2Fbuzzfeedmexico&redir_token=we4J0KCg2kOCbalPCznDnG1dyUJ8MTU0ODA0MTkzOUAxNTQ3OTU1NTM5&v=Umj1ZWr-CAs&event=video_description"
],
"formats":[
{
"appId":"youtube",
"format":"vnd.youtube://$1",
"testResults":[
"vnd.youtube://m.youtube.com/watch?v=MTY1Kje0yLg",
"vnd.youtube://www.youtube.com/embed/0uY7gLZDmn4?start=96",
"vnd.youtube://www.youtube.com/watch?v=MFzDaBzBlL0&app=desktop",
"vnd.youtube://youtu.be/mzun7_Ynmks",
"vnd.youtube://youtu.be/JEiSTzK-A2A",
"vnd.youtube://youtu.be/yWDJoJm-Rk0?t=4m30s",
"vnd.youtube://www.youtube.com/watch?v=S4WNO4tchUk",
"vnd.youtube://www.youtube.com/watch?v=ngElkyQ6Rhs",
"vnd.youtube://www.youtube.com/user/timonominus",
"vnd.youtube://m.youtube.com/user/timonominus",
"vnd.youtube://www.youtube.com/channel/UC4eYXhJI4-7wSWc8UNRwD4A",
"vnd.youtube://www.youtube.com/channel/UCqPTgFxqw_46kJGmEznQqqQ",
"vnd.youtube://www.youtube.com/playlist?list=PL2ED57C3E5C561B91",
"vnd.youtube://www.youtube.com/vintagespace",
null
]
}
]
},
{
"title":"Open Video",
"regex":"https?://(\\w+\\.)*(youtu\\.be/|youtube\\.com/(embed/|.*(\\?|&)v=))([a-zA-Z0-9_\\-]+).*?((\\?|&)(start|t)=\\w+)?.*?$",
"testInputs":[
"https://m.youtube.com/watch?v=MTY1Kje0yLg",
"https://www.youtube.com/embed/0uY7gLZDmn4?start=96",
"https://www.youtube.com/watch?v=MFzDaBzBlL0&app=desktop",
"https://youtu.be/mzun7_Ynmks",
"http://youtu.be/JEiSTzK-A2A",
"https://youtu.be/yWDJoJm-Rk0?t=4m30s",
"https://www.youtube.com/watch?v=S4WNO4tchUk",
"https://www.youtube.com/watch?v=ngElkyQ6Rhs",
"https://music.youtube.com/watch?v=KVQxACAEpso&feature=share"
],
"formats":[
{
"appId":"ivory",
"format":"ivory://https://www.youtube.com/watch?v=$5",
"testResults":[
"ivory://https://www.youtube.com/watch?v=MTY1Kje0yLg",
"ivory://https://www.youtube.com/watch?v=0uY7gLZDmn4",
"ivory://https://www.youtube.com/watch?v=MFzDaBzBlL0",
"ivory://https://www.youtube.com/watch?v=mzun7_Ynmks",
"ivory://https://www.youtube.com/watch?v=JEiSTzK-A2A",
"ivory://https://www.youtube.com/watch?v=yWDJoJm-Rk0",
"ivory://https://www.youtube.com/watch?v=S4WNO4tchUk",
"ivory://https://www.youtube.com/watch?v=ngElkyQ6Rhs",
"ivory://https://www.youtube.com/watch?v=KVQxACAEpso"
]
},
{
"appId":"musi",
"format":"musi://track/$5",
"testResults":[
"musi://track/MTY1Kje0yLg",
"musi://track/0uY7gLZDmn4",
"musi://track/MFzDaBzBlL0",
"musi://track/mzun7_Ynmks",
"musi://track/JEiSTzK-A2A",
"musi://track/yWDJoJm-Rk0",
"musi://track/S4WNO4tchUk",
"musi://track/ngElkyQ6Rhs",
"musi://track/KVQxACAEpso"
]
},
{
"appId":"youplayer",
"format":"youplayer://youtube.com/watch?v=$5",
"testResults":[
"youplayer://youtube.com/watch?v=MTY1Kje0yLg",
"youplayer://youtube.com/watch?v=0uY7gLZDmn4",
"youplayer://youtube.com/watch?v=MFzDaBzBlL0",
"youplayer://youtube.com/watch?v=mzun7_Ynmks",
"youplayer://youtube.com/watch?v=JEiSTzK-A2A",
"youplayer://youtube.com/watch?v=yWDJoJm-Rk0",
"youplayer://youtube.com/watch?v=S4WNO4tchUk",
"youplayer://youtube.com/watch?v=ngElkyQ6Rhs",
"youplayer://youtube.com/watch?v=KVQxACAEpso"
]
},
{
"appId":"protube",
"format":"protube://video/$5",
"testResults":[
"protube://video/MTY1Kje0yLg",
"protube://video/0uY7gLZDmn4",
"protube://video/MFzDaBzBlL0",
"protube://video/mzun7_Ynmks",
"protube://video/JEiSTzK-A2A",
"protube://video/yWDJoJm-Rk0",
"protube://video/S4WNO4tchUk",
"protube://video/ngElkyQ6Rhs",
"protube://video/KVQxACAEpso"
]
},
{
"appId":"waffle",
"format":"com.arturremizov.waffle://PopularTodayWidget?videoIdentifier=$5",
"testResults":[
"com.arturremizov.waffle://PopularTodayWidget?videoIdentifier=MTY1Kje0yLg",
"com.arturremizov.waffle://PopularTodayWidget?videoIdentifier=0uY7gLZDmn4",
"com.arturremizov.waffle://PopularTodayWidget?videoIdentifier=MFzDaBzBlL0",
"com.arturremizov.waffle://PopularTodayWidget?videoIdentifier=mzun7_Ynmks",
"com.arturremizov.waffle://PopularTodayWidget?videoIdentifier=JEiSTzK-A2A",
"com.arturremizov.waffle://PopularTodayWidget?videoIdentifier=yWDJoJm-Rk0",
"com.arturremizov.waffle://PopularTodayWidget?videoIdentifier=S4WNO4tchUk",
"com.arturremizov.waffle://PopularTodayWidget?videoIdentifier=ngElkyQ6Rhs",
"com.arturremizov.waffle://PopularTodayWidget?videoIdentifier=KVQxACAEpso"
]
},
{
"appId":"cornertube",
"format":"cornertube://video/https://youtu.be/$5",
"testResults":[
"cornertube://video/https://youtu.be/MTY1Kje0yLg",
"cornertube://video/https://youtu.be/0uY7gLZDmn4",
"cornertube://video/https://youtu.be/MFzDaBzBlL0",
"cornertube://video/https://youtu.be/mzun7_Ynmks",
"cornertube://video/https://youtu.be/JEiSTzK-A2A",
"cornertube://video/https://youtu.be/yWDJoJm-Rk0",
"cornertube://video/https://youtu.be/S4WNO4tchUk",
"cornertube://video/https://youtu.be/ngElkyQ6Rhs",
"cornertube://video/https://youtu.be/KVQxACAEpso"
]
},
{
"appId":"piptube",
"format":"piptube://openvideo?url=https://www.youtube.com/watch?v=$5",
"testResults":[
"piptube://openvideo?url=https://www.youtube.com/watch?v=MTY1Kje0yLg",
"piptube://openvideo?url=https://www.youtube.com/watch?v=0uY7gLZDmn4",
"piptube://openvideo?url=https://www.youtube.com/watch?v=MFzDaBzBlL0",
"piptube://openvideo?url=https://www.youtube.com/watch?v=mzun7_Ynmks",
"piptube://openvideo?url=https://www.youtube.com/watch?v=JEiSTzK-A2A",
"piptube://openvideo?url=https://www.youtube.com/watch?v=yWDJoJm-Rk0",
"piptube://openvideo?url=https://www.youtube.com/watch?v=S4WNO4tchUk",
"piptube://openvideo?url=https://www.youtube.com/watch?v=ngElkyQ6Rhs",
"piptube://openvideo?url=https://www.youtube.com/watch?v=KVQxACAEpso"
]
},
{
"appId":"syndromi",
"format":"syndromi://video?id=$5",
"testResults":[
"syndromi://video?id=MTY1Kje0yLg",
"syndromi://video?id=0uY7gLZDmn4",
"syndromi://video?id=MFzDaBzBlL0",
"syndromi://video?id=mzun7_Ynmks",
"syndromi://video?id=JEiSTzK-A2A",
"syndromi://video?id=yWDJoJm-Rk0",
"syndromi://video?id=S4WNO4tchUk",
"syndromi://video?id=ngElkyQ6Rhs",
"syndromi://video?id=KVQxACAEpso"
]
},
{
"appId":"xapp",
"format":"xapp://?videoURL=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D$5",
"testResults":[
"xapp://?videoURL=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DMTY1Kje0yLg",
"xapp://?videoURL=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D0uY7gLZDmn4",
"xapp://?videoURL=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DMFzDaBzBlL0",
"xapp://?videoURL=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Dmzun7_Ynmks",
"xapp://?videoURL=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DJEiSTzK-A2A",
"xapp://?videoURL=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DyWDJoJm-Rk0",
"xapp://?videoURL=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DS4WNO4tchUk",
"xapp://?videoURL=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DngElkyQ6Rhs",
"xapp://?videoURL=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DKVQxACAEpso"
]
}
]
},
{
"title":"Open Profile",
"regex":"https?://(www\\.|m\\.)?youtube\\.com/user/([\\w]+).*$",
"testInputs":[
"https://www.youtube.com/user/timonominus",
"https://m.youtube.com/user/timonominus"
],
"formats":[
{
"appId":"youplayer",
"format":"youplayer://youtube.com/user/$2",
"testResults":[
"youplayer://youtube.com/user/timonominus",
"youplayer://youtube.com/user/timonominus"
]
},
{
"appId":"protube",
"format":"protube://user/$2",
"testResults":[
"protube://user/timonominus",
"protube://user/timonominus"
]
}
]
},
{
"title":"Open Channel",
"regex":"https?://(www\\.|m\\.)?youtube\\.com/channel/([a-zA-Z0-9_\\-]+).*$",
"testInputs":[
"https://www.youtube.com/channel/UC4eYXhJI4-7wSWc8UNRwD4A",
"https://www.youtube.com/channel/UCqPTgFxqw_46kJGmEznQqqQ"
],
"formats":[
{
"appId":"youplayer",
"format":"youplayer://youtube.com/channel/$2",
"testResults":[
"youplayer://youtube.com/channel/UC4eYXhJI4-7wSWc8UNRwD4A",
"youplayer://youtube.com/channel/UCqPTgFxqw_46kJGmEznQqqQ"
]
},
{
"appId":"protube",
"format":"protube://channel/$2",
"testResults":[
"protube://channel/UC4eYXhJI4-7wSWc8UNRwD4A",
"protube://channel/UCqPTgFxqw_46kJGmEznQqqQ"
]
}
]
},
{
"title":"Open Playlist",
"regex":"https?://(www\\.|m\\.)?youtube\\.com/playlist.*list=([a-zA-Z0-9_\\-]+).*?$",
"testInputs":[
"https://www.youtube.com/playlist?list=PL2ED57C3E5C561B91"
],
"formats":[
{
"appId":"youtubemusic",
"format":"youtubemusic://youtube.com/playlist?list=$2",
"testResults":[
"youtubemusic://youtube.com/playlist?list=PL2ED57C3E5C561B91"
]
},
{
"appId":"youplayer",
"format":"youplayer://youtube.com/playlist?list=$2",
"testResults":[
"youplayer://youtube.com/playlist?list=PL2ED57C3E5C561B91"
]
},
{
"appId":"protube",
"format":"protube://playlist/$2",
"testResults":[
"protube://playlist/PL2ED57C3E5C561B91"
]
}
]
},
{
"regex":"https?://(\\w+\\.)*(((youtube\\.com|youtu\\.be))/(?!redirect).*)$",
"testInputs":[
"https://m.youtube.com/watch?v=MTY1Kje0yLg",
"https://www.youtube.com/embed/0uY7gLZDmn4?start=96",
"https://www.youtube.com/watch?v=MFzDaBzBlL0&app=desktop",
"https://youtu.be/mzun7_Ynmks",
"http://youtu.be/JEiSTzK-A2A",
"https://youtu.be/yWDJoJm-Rk0?t=4m30s",
"https://www.youtube.com/watch?v=S4WNO4tchUk",
"https://www.youtube.com/watch?v=ngElkyQ6Rhs",
"https://www.youtube.com/user/timonominus",
"https://m.youtube.com/user/timonominus",
"https://www.youtube.com/channel/UC4eYXhJI4-7wSWc8UNRwD4A",
"https://www.youtube.com/channel/UCqPTgFxqw_46kJGmEznQqqQ",
"https://www.youtube.com/playlist?list=PL2ED57C3E5C561B91",
"https://www.youtube.com/vintagespace",
"https://www.youtube.com/redirect?q=https%3A%2F%2Fwww.instagram.com%2Fbuzzfeedmexico&redir_token=we4J0KCg2kOCbalPCznDnG1dyUJ8MTU0ODA0MTkzOUAxNTQ3OTU1NTM5&v=Umj1ZWr-CAs&event=video_description",
"https://music.youtube.com/watch?v=KVQxACAEpso&feature=share",
"https://music.youtube.com/explore"
],
"formats":[
{
"appId":"youtubemusic",
"format":"youtubemusic://music.$2",
"testResults":[
"youtubemusic://music.youtube.com/watch?v=MTY1Kje0yLg",
"youtubemusic://music.youtube.com/embed/0uY7gLZDmn4?start=96",
"youtubemusic://music.youtube.com/watch?v=MFzDaBzBlL0&app=desktop",
"youtubemusic://music.youtu.be/mzun7_Ynmks",
"youtubemusic://music.youtu.be/JEiSTzK-A2A",
"youtubemusic://music.youtu.be/yWDJoJm-Rk0?t=4m30s",
"youtubemusic://music.youtube.com/watch?v=S4WNO4tchUk",
"youtubemusic://music.youtube.com/watch?v=ngElkyQ6Rhs",
"youtubemusic://music.youtube.com/user/timonominus",
"youtubemusic://music.youtube.com/user/timonominus",
"youtubemusic://music.youtube.com/channel/UC4eYXhJI4-7wSWc8UNRwD4A",
"youtubemusic://music.youtube.com/channel/UCqPTgFxqw_46kJGmEznQqqQ",
"youtubemusic://music.youtube.com/playlist?list=PL2ED57C3E5C561B91",
"youtubemusic://music.youtube.com/vintagespace",
null,
"youtubemusic://music.youtube.com/watch?v=KVQxACAEpso&feature=share",
"youtubemusic://music.youtube.com/explore"
]
}
]
},
{
"title":"Open Stream",
"regex":"https?://(?!clips\\.)([a-zA-Z0-9_\\-]+\\.)*twitch\\.tv/(?!directory|videos|v)(\\w+)(?!.*/v/\\d+).*$",
"testInputs":[
"http://www.twitch.tv/imaginedragons",
"http://es-es.twitch.tv/doctorepollo/",
"http://www.twitch.tv/fragbitelive/v/4776592",
"http://www.twitch.tv/directory/game/Minecraft",
"https://m.twitch.tv/videos/390659869?t=4h28m20s",
"https://clips.twitch.tv/LongResoluteStarlingPeteZaroll"
],
"formats":[
{
"appId":"twitch",
"format":"twitch://stream/$2",
"testResults":[
"twitch://stream/imaginedragons",
"twitch://stream/doctorepollo",
null,
null,
null,
null
]
}
]
},
{
"title":"Open Game Directory",
"regex":"https?://([a-zA-Z0-9_\\-]+\\.)*twitch\\.tv/directory/game/([a-zA-Z0-9_\\-%]+).*$",
"testInputs":[
"http://www.twitch.tv/directory/game/Minecraft"
],
"formats":[
{
"appId":"twitch",
"format":"twitch://game/$2",
"testResults":[
"twitch://game/Minecraft"
]
}
]
},
{
"title":"Open Video",
"regex":"https?://([a-zA-Z0-9_\\-]+\\.)*twitch\\.tv/((?!directory)(\\w+)/v|videos)/((?i)video(%\\d.)*)?(\\d+).*$",
"testInputs":[
"http://www.twitch.tv/fragbitelive/v/4776592",
"https://www.twitch.tv/videos/212106676",
"https://m.twitch.tv/videos/390659869?t=4h28m20s",
"https://www.twitch.tv/videos/Video%7D%7C%7B502981705"
],
"formats":[
{
"appId":"twitch",
"format":"twitch://video/v$6",
"testResults":[
"twitch://video/v4776592",
"twitch://video/v212106676",
"twitch://video/v390659869",
"twitch://video/v502981705"
]
}
]
},
{
"title":"Open Dubsmash",
"regex":"https?://api\\.dubsmash\\.com/goto/(\\w+).*$",
"testInputs":[
"https://api.dubsmash.com/goto/73a225"
],
"formats":[
{
"appId":"dubsmash",
"format":"dubsmash://1/snip/$1",
"testResults":[
"dubsmash://1/snip/73a225"
]
}
]
},
{
"title":"Open File",
"regex":"https?://(www\\.)?dropbox\\.com/s/\\w+.*$",
"testInputs":[
"https://www.dropbox.com/s/i2iy9bgprh52k4c/1435444012.108938.jpg?dl=0"
],
"formats":[
{
"appId":"dropbox",
"script":"function process(url, completionHandler) { completionHandler('dbapi-6:/1/viewLink?url=' + encodeURIComponent(url)); }",
"script2":"function process(url, completionHandler) { completionHandler('dbapi-6:/1/viewLink?url=' + encodeURIComponent(url)); }",
"testResults":[
"dbapi-6:/1/viewLink?url=https%3A%2F%2Fwww.dropbox.com%2Fs%2Fi2iy9bgprh52k4c%2F1435444012.108938.jpg%3Fdl%3D0"
]
}
]
},
{
"title":"Open Folder",
"regex":"https?://(www\\.)?dropbox\\.com/sh/\\w+.*$",
"testInputs":[
"https://www.dropbox.com/sh/a7sn3ichcezsw43/AACFYITTfhjek2w7LITs4Slma?dl=0"
],
"formats":[
{
"appId":"dropbox",
"script":"function process(url, completionHandler) { completionHandler('dbapi-6:/1/viewLink?url=' + encodeURIComponent(url)); }",
"script2":"function process(url, completionHandler) { completionHandler('dbapi-6:/1/viewLink?url=' + encodeURIComponent(url)); }",
"testResults":[
"dbapi-6:/1/viewLink?url=https%3A%2F%2Fwww.dropbox.com%2Fsh%2Fa7sn3ichcezsw43%2FAACFYITTfhjek2w7LITs4Slma%3Fdl%3D0"
]
}
]
},
{
"regex":"(https?://drive\\.google\\.com/(open|file|folder|drive/folders).*)$",
"testInputs":[
"https://drive.google.com/open?id=1W64thRDqmKiDwsuK_j1IkxnCVeBfs7wwSXBbLxnsitL_D9-qAt4",
"https://drive.google.com/file/d/1W64thRDqmKiDwsuK_j1IkxnCVeBfs7wwSXBbLxnsitL_D9-qAt4/view",
"https://drive.google.com/folderview?id=0B6ru5l1lH3_7bVIwN1RBaVpETDg&usp=sharing",
"https://drive.google.com/drive/folders/0B-9Li62rpt59czJhdXRCeGlOdDA"
],
"formats":[
{
"appId":"googledrive",
"format":"googledrive://$1",
"testResults":[
"googledrive://https://drive.google.com/open?id=1W64thRDqmKiDwsuK_j1IkxnCVeBfs7wwSXBbLxnsitL_D9-qAt4",
"googledrive://https://drive.google.com/file/d/1W64thRDqmKiDwsuK_j1IkxnCVeBfs7wwSXBbLxnsitL_D9-qAt4/view",
"googledrive://https://drive.google.com/folderview?id=0B6ru5l1lH3_7bVIwN1RBaVpETDg&usp=sharing",
"googledrive://https://drive.google.com/drive/folders/0B-9Li62rpt59czJhdXRCeGlOdDA"
]
}
]
},
{
"regex":"https?://m\\.box\\.com/shared_item/(.*)$",
"testInputs":[
"https://m.box.com/shared_item/https%3A%2F%2Fapp.box.com%2Fs%2Fawrlik8v6w83ugx7q2swmekfw3irm28l"
],
"formats":[
{
"appId":"box",
"format":"boxopenshared://shared_item?url=$1",
"testResults":[
"boxopenshared://shared_item?url=https%3A%2F%2Fapp.box.com%2Fs%2Fawrlik8v6w83ugx7q2swmekfw3irm28l"
]
}
]
},
{
"regex":"https?://(app\\.)?box\\.com/s/(\\w+).*$",
"testInputs":[
"https://app.box.com/s/awrlik8v6w83ugx7q2swmekfw3irm28l",
"https://app.box.com/s/20bj5ye64j9dlqdnkrig"
],
"formats":[
{
"appId":"box",
"format":"boxopenshared://shared_item?url=https%3A%2F%2Fapp.box.com%2Fs%2F$2",
"testResults":[
"boxopenshared://shared_item?url=https%3A%2F%2Fapp.box.com%2Fs%2Fawrlik8v6w83ugx7q2swmekfw3irm28l",
"boxopenshared://shared_item?url=https%3A%2F%2Fapp.box.com%2Fs%2F20bj5ye64j9dlqdnkrig"
]
}
]
},
{
"title":"Open Profile",
"regex":"https?://(www\\.)?vimeo\\.com/([a-zA-Z](\\w+))/?(\\?.*)?$",
"testInputs":[
"http://www.vimeo.com/timonus",
"http://vimeo.com/timonus/",
"http://vimeo.com/timonus?foo=bar",
"http://vimeo.com/timonus/?foo=bar",
"http://vimeo.com/channels/nicetype",
"http://vimeo.com/categories/animation"
],
"formats":[
{
"appId":"vimeo",
"format":"vimeo://app.vimeo.com/users/$2",
"testResults":[
"vimeo://app.vimeo.com/users/timonus",
"vimeo://app.vimeo.com/users/timonus",
"vimeo://app.vimeo.com/users/timonus",
"vimeo://app.vimeo.com/users/timonus",
null,
null
]
}
]
},
{
"title":"Open Video",
"regex":"https?://(www\\.|player\\.)?vimeo\\.com/(video/)?(\\d+)/?.*$",
"testInputs":[
"https://www.vimeo.com/121634963",
"https://vimeo.com/125074876?ref=tw-share",
"https://vimeo.com/125074876/?ref=tw-share",
"https://player.vimeo.com/video/220770851"
],
"formats":[
{
"appId":"vimeo",
"format":"vimeo://app.vimeo.com/videos/$3",
"testResults":[
"vimeo://app.vimeo.com/videos/121634963",
"vimeo://app.vimeo.com/videos/125074876",
"vimeo://app.vimeo.com/videos/125074876",
"vimeo://app.vimeo.com/videos/220770851"
]
},
{
"appId":"xapp",
"format":"xapp://?videoURL=https%3A%2F%2Fvimeo.com%2F$3",
"testResults":[
"xapp://?videoURL=https%3A%2F%2Fvimeo.com%2F121634963",
"xapp://?videoURL=https%3A%2F%2Fvimeo.com%2F125074876",
"xapp://?videoURL=https%3A%2F%2Fvimeo.com%2F125074876",
"xapp://?videoURL=https%3A%2F%2Fvimeo.com%2F220770851"
]
}
]
},
{
"title":"Open Channel",
"regex":"https?://(www\\.)?vimeo\\.com/channels/(\\w+)/?(\\?.*)?$",
"testInputs":[
"http://www.vimeo.com/channels/nicetype",
"http://vimeo.com/channels/nicetype/",
"http://vimeo.com/channels/nicetype?foo=bar",
"http://vimeo.com/channels/nicetype/?foo=bar"
],
"formats":[
{
"appId":"vimeo",
"format":"vimeo://app.vimeo.com/channels/$2",
"testResults":[
"vimeo://app.vimeo.com/channels/nicetype",
"vimeo://app.vimeo.com/channels/nicetype",
"vimeo://app.vimeo.com/channels/nicetype",
"vimeo://app.vimeo.com/channels/nicetype"
]
}
]
},
{
"title":"Open Category",
"regex":"https?://(www\\.)?vimeo\\.com/categories/(\\w+)/?(\\?.*)?$",
"testInputs":[
"http://www.vimeo.com/categories/animation",
"http://vimeo.com/categories/animation/",
"http://vimeo.com/categories/animation?foo=bar",
"http://vimeo.com/categories/animation/?foo=bar"
],
"formats":[
{
"appId":"vimeo",
"format":"vimeo://app.vimeo.com/categories/$2",
"testResults":[
"vimeo://app.vimeo.com/categories/animation",
"vimeo://app.vimeo.com/categories/animation",
"vimeo://app.vimeo.com/categories/animation",
"vimeo://app.vimeo.com/categories/animation"
]
}
]
},
{
"title":"Open Video",
"regex":"https?://(\\w+\\.)?youku\\.com/v_show/id_(\\w+).*$",
"testInputs":[
"http://v.youku.com/v_show/id_XNDI2Mjk2MTg0.html"
],
"formats":[
{
"appId":"youku",
"format":"youku://play?vid=$2",
"testResults":[
"youku://play?vid=XNDI2Mjk2MTg0"
]
},
{
"appId":"youkuhd",
"format":"youkuhd://play?vid=$2",
"testResults":[
"youkuhd://play?vid=XNDI2Mjk2MTg0"
]
}
]
},
{
"title":"Open Video",
"regex":"https?://(www\\.)?bilibili\\.com/(.*/)?video/av(\\d+).*$",
"testInputs":[
"http://www.bilibili.com/video/av2782208/",
"http://www.bilibili.com/mobile/video/av2782168.html?utm_source=twitterfeed&utm_medium=twitter"
],
"formats":[
{
"appId":"bilibili",
"format":"bilibili://av/$3",
"testResults":[
"bilibili://av/2782208",
"bilibili://av/2782168"
]
}
]
},
{
"title":"Open Video",
"regex":"https?://(www\\.)?hulu(\\.\\w+)+/watch/(\\d+).*$",
"testInputs":[
"http://www.hulu.com/watch/804690?linkId=14918334",
"http://www.hulu.com/watch/143935"
],
"formats":[
{
"appId":"hulu",
"format":"hulu://w/$3",
"testResults":[
"hulu://w/804690",
"hulu://w/143935"
]
}
]
},
{
"title":"Open Track",
"regex":"https?://(play\\.|open\\.|www\\.)?spotify\\.com/track/([:alnum:]+).*$",
"testInputs":[
"http://open.spotify.com/track/5QZJAcP4nu3xL2NQV4AVHO",
"https://play.spotify.com/track/77Ezu3tBE7gmzQ4mRnZZUf?play=true"
],
"formats":[
{
"appId":"spotify",
"format":"spotify:track:$2",
"testResults":[
"spotify:track:5QZJAcP4nu3xL2NQV4AVHO",
"spotify:track:77Ezu3tBE7gmzQ4mRnZZUf"
]
}
]
},
{
"title":"Open Album",
"regex":"https?://(play\\.|open\\.|www\\.)?spotify\\.com/album/([:alnum:]+).*$",
"testInputs":[
"http://open.spotify.com/album/6BK3muExDOuk0VnyMn9NVw",
"https://open.spotify.com/album/4G8WKL5DGAFbWNTXxp3emz?utm_content=http%3A%2F%2Fsmarturl.it%2FWowGuauSP&utm_medium=email&utm_umg_et=1543198706&utm_source=ExactTarget&utm_campaign=21323559"
],
"formats":[
{
"appId":"spotify",
"format":"spotify:album:$2",
"testResults":[
"spotify:album:6BK3muExDOuk0VnyMn9NVw",
"spotify:album:4G8WKL5DGAFbWNTXxp3emz"
]
}
]
},
{
"title":"Open Playlist",
"regex":"https?://(play\\.|open\\.|www\\.)?spotify\\.com/(user/(\\w+)/)?playlist/([:alnum:]+).*$",
"testInputs":[
"https://open.spotify.com/user/naveenium/playlist/1zw42kQZUSZlHyVVn8AecH?utm_content=buffer30eb8&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer",
"http://open.spotify.com/user/timonominus/playlist/7rdUGYrNIMEdL6xdJDlMzZ",
"https://open.spotify.com/playlist/37i9dQZF1DX0UrRvztWcAU"
],
"formats":[
{
"appId":"spotify",
"format":"spotify://playlist/$4",
"testResults":[
"spotify://playlist/1zw42kQZUSZlHyVVn8AecH",
"spotify://playlist/7rdUGYrNIMEdL6xdJDlMzZ",
"spotify://playlist/37i9dQZF1DX0UrRvztWcAU"
]
}
]
},
{
"title":"Open Podcast",
"regex":"https?://(?:play\\.|open\\.|www\\.)?spotify\\.com/(episode|show)/([:alnum:]+).*$",
"testInputs":[
"https://open.spotify.com/show/3pCF6hcNsAHKlKAillCOuZ?si=u93GUXXFTOCXvElU6uClFg",
"https://open.spotify.com/episode/1SS11GALLIyBokA9IrF58Q?si=KKFmmLAUSx-RluErg4Eqpw"
],
"formats":[
{
"appId":"spotify",
"format":"spotify://$1/$2",
"testResults":[
"spotify://show/3pCF6hcNsAHKlKAillCOuZ",
"spotify://episode/1SS11GALLIyBokA9IrF58Q"
]
}
]
},
{
"title":"Open User",
"regex":"https?://(play\\.|open\\.|www\\.)?spotify\\.com/user/(\\w+)(?!.*/playlist.*).*$",
"testInputs":[
"https://open.spotify.com/user/naveenium/playlist/1zw42kQZUSZlHyVVn8AecH?utm_content=buffer30eb8&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer",
"http://open.spotify.com/user/timonominus/playlist/7rdUGYrNIMEdL6xdJDlMzZ",
"https://open.spotify.com/user/naveenium/",
"http://open.spotify.com/user/timonominus/?foo=bar",
"http://open.spotify.com/user/timonominus"
],
"formats":[
{
"appId":"spotify",
"format":"spotify:user:$2",
"testResults":[
null,
null,
"spotify:user:naveenium",
"spotify:user:timonominus",
"spotify:user:timonominus"
]
}
]
},
{
"title":"Open Artist",
"regex":"https?://(play\\.|open\\.|www\\.)?spotify\\.com/artist/(\\w+).*$",
"testInputs":[
"https://open.spotify.com/artist/3vbKDsSS70ZX9D2OcvbZmS?ref=wp"
],
"formats":[
{
"appId":"spotify",
"format":"spotify:artist:$2",
"testResults":[
"spotify:artist:3vbKDsSS70ZX9D2OcvbZmS"
]
}
]
},
{
"regex":"https?://(play\\.|open\\.|www\\.)?spotify\\.com/(track|album)/([:alnum:]+).*$",
"testInputs":[
"http://open.spotify.com/track/5QZJAcP4nu3xL2NQV4AVHO",
"https://play.spotify.com/track/77Ezu3tBE7gmzQ4mRnZZUf?play=true",
"http://open.spotify.com/album/6BK3muExDOuk0VnyMn9NVw",
"https://open.spotify.com/album/4G8WKL5DGAFbWNTXxp3emz?utm_content=http%3A%2F%2Fsmarturl.it%2FWowGuauSP&utm_medium=email&utm_umg_et=1543198706&utm_source=ExactTarget&utm_campaign=21323559"
],
"formats":[
{
"appId":"applemusic",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['appleMusic'] != null) { var appURL = res['linksByPlatform']['appleMusic']['nativeAppUriMobile']; } completionHandler(appURL); }",
"testResults":[
"music://itunes.apple.com/us/album/_/887763843?i=887763882&mt=1&app=music&at=1000lHKX",
"music://itunes.apple.com/us/album/_/978362006?i=978364023&mt=1&app=music&at=1000lHKX",
"music://itunes.apple.com/us/album/_/958998203?mt=1&app=music&at=1000lHKX",
"music://itunes.apple.com/us/album/_/1445311414?i=1445311599&mt=1&app=music&at=1000lHKX"
]
},
{
"appId":"itunesstore",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['itunes'] != null) { var appURL = res['linksByPlatform']['itunes']['nativeAppUriMobile']; } completionHandler(appURL); }",
"testResults":[
"itmss://itunes.apple.com/us/album/_/887763843?i=887763882&mt=1&app=itunes&at=1000lHKX",
"itmss://itunes.apple.com/us/album/_/978362006?i=978364023&mt=1&app=itunes&at=1000lHKX",
"itmss://itunes.apple.com/us/album/_/958998203?mt=1&app=itunes&at=1000lHKX",
"itmss://itunes.apple.com/us/album/_/1445311414?i=1445311599&mt=1&app=itunes&at=1000lHKX"
]
},
{
"appId":"youtube",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['youtube'] != null) { var appURL = res['linksByPlatform']['youtube']['url'].replace(RegExp('^.*?\\\\w+://', 'g'), 'vnd.youtube://'); } completionHandler(appURL); }",
"testResults":[
"vnd.youtube://www.youtube.com/watch?v=LXkpWY5Y02Q",
"vnd.youtube://www.youtube.com/watch?v=MCxpwylKFNE",
"vnd.youtube://www.youtube.com/playlist?list=PLVqbInNnwpZ7rFiMaqzOiuGtf4H4WIlZ5",
"vnd.youtube://www.youtube.com/watch?v=hL2m9ikzvhI"
]
},
{
"appId":"soundcloud",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['soundcloud'] != null) { var entityId = res['linksByPlatform']['soundcloud']['entityUniqueId']; var type; if (entityId.indexOf('SONG') != -1) { type = 'sounds'; } else if (entityId.indexOf('PLAYLIST') != -1) { type = 'playlists'; } if (type != null) { var appURL = 'soundcloud://' + type + ':' + entityId.replace(RegExp('.*_.*::', 'g'), ''); } } completionHandler(appURL); }",
"testResults":[
null,
"soundcloud://sounds:210502043",
"soundcloud://playlists:249614331",
null
]
},
{
"appId":"youtubemusic",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['youtube'] != null) { var appURL = res['linksByPlatform']['youtube']['url'].replace(RegExp('^.*?\\\\w+://', 'g'), 'youtubemusic://'); } completionHandler(appURL); }",
"testResults":[
"youtubemusic://www.youtube.com/watch?v=LXkpWY5Y02Q",
"youtubemusic://www.youtube.com/watch?v=MCxpwylKFNE",
"youtubemusic://www.youtube.com/playlist?list=PLVqbInNnwpZ7rFiMaqzOiuGtf4H4WIlZ5",
"youtubemusic://www.youtube.com/watch?v=hL2m9ikzvhI"
]
},
{
"appId":"pandora",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['pandora'] != null) { var entityId = res['linksByPlatform']['pandora']['entityUniqueId']; var type; if (entityId.indexOf('SONG') != -1) { type = 'track'; } else if (entityId.indexOf('ALBUM') != -1) { type = 'album'; } if (type != null) { var appURL = 'pandorav4://backstage/' + type + '?pandoraId=' + entityId.replace(RegExp('.*_.*::', 'g'), ''); } } completionHandler(appURL); }",
"testResults":[
"pandorav4://backstage/track?pandoraId=TR:2731446",
"pandorav4://backstage/track?pandoraId=TR:3218368",
"pandorav4://backstage/album?pandoraId=AL:305605",
"pandorav4://backstage/track?pandoraId=TR:5496931"
]
},
{
"appId":"amazonmusic",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['amazonMusic'] != null) { var appURL = res['linksByPlatform']['amazonMusic']['url'].replace(RegExp('^.*?\\\\w+/', 'g'), 'amznmp3://'); } completionHandler(appURL); }",
"testResults":[
"amznmp3://albums/B00KWGRKFU?trackAsin=B00KWGRYUQ&do=play",
"amznmp3://albums/B00V8I134A?trackAsin=B00V8I2D26&do=play",
"amznmp3://albums/B00SCIDAO0?do=play",
"amznmp3://albums/B01JR4ZCBG?trackAsin=B01JR4ZETQ&do=play"
]
},
{
"appId":"tidal",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['tidal'] != null) { var entityId = res['linksByPlatform']['tidal']['entityUniqueId']; var type; if (entityId.indexOf('SONG') != -1) { type = 'track'; } else if (entityId.indexOf('ALBUM') != -1) { type = 'album'; } if (type != null) { var appURL = 'tidal://' + type + '/' + entityId.replace(RegExp('.*_.*::', 'g'), ''); } } completionHandler(appURL); }",
"testResults":[
"tidal://track/34181256",
"tidal://track/58080510",
"tidal://album/44096055",
null
]
}
]
},
{
"regex":"https?://(www\\.|m\\.)?soundcloud\\.com/[^/]+(/[^/]+)?",
"testInputs":[
"http://m.soundcloud.com/ukgoldfilm/tap24-hiha24-1",
"http://m.soundcloud.com/ukgoldfilm/tap24-hiha24-1/",
"http://m.soundcloud.com/ukgoldfilm/tap24-hiha24-1?foo=bar",
"http://m.soundcloud.com/ukgoldfilm/tap24-hiha24-1/?foo=bar",
"https://soundcloud.com/ukgoldfilm",
"https://soundcloud.com/ukgoldfilm/",
"https://soundcloud.com/ukgoldfilm?foo=bar",
"https://soundcloud.com/ukgoldfilm/?foo=bar",
"https://www.soundcloud.com/ukgoldfilm/sets/uk-gold-soundtrack",
"https://www.soundcloud.com/ukgoldfilm/sets/uk-gold-soundtrack/",
"https://www.soundcloud.com/ukgoldfilm/sets/uk-gold-soundtrack?foo=bar",
"https://www.soundcloud.com/ukgoldfilm/sets/uk-gold-soundtrack/?foo=bar",
"https://soundcloud.com/lane8music/lane-8-spring-2019-mixtape"
],
"formats":[
{
"appId":"soundcloud",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('.*(soundcloud://.*?)\".*').exec(res); var match = results != null && results.length > 1 ? results[1] : null; completionHandler(match); }",
"testResults":[
"soundcloud://sounds:192620860",
"soundcloud://sounds:192620860",
"soundcloud://sounds:192620860",
"soundcloud://sounds:192620860",
"soundcloud://users:139227139",
"soundcloud://users:139227139",
"soundcloud://users:139227139",
"soundcloud://users:139227139",
"soundcloud://playlists:83870213",
"soundcloud://playlists:83870213",
"soundcloud://playlists:83870213",
"soundcloud://playlists:83870213",
"soundcloud://sounds:584813445"
]
}
]
},
{
"title":"Open Track",
"regex":"https?://(www\\.)?hypem\\.com/track/([:alnum:]+).*$",
"testInputs":[
"http://hypem.com/track/28vqc/Empty+Houses+-+Thunderstorms"
],
"formats":[
{
"appId":"hypemachine",
"format":"hypem://track/$2",
"testResults":[
"hypem://track/28vqc"
]
}
]
},
{
"title":"Open Playlist",
"regex":"https?://(www\\.)?hypem\\.com/(?!premiere|track|popular|latest|twitter|tags)(\\w+).*$",
"testInputs":[
"http://hypem.com/espiegel",
"http://hypem.com/track/28vqc/Empty+Houses+-+Thunderstorms",
"http://hypem.com/popular/artists",
"http://hypem.com/premiere/widowspeak"
],
"formats":[
{
"appId":"hypemachine",
"format":"hypem://playlist/?key=PlaylistFriend&section=users&username=$2",
"testResults":[
"hypem://playlist/?key=PlaylistFriend&section=users&username=espiegel",
null,
null,
null
]
}
]
},
{
"title":"Open Premiere",
"regex":"https?://(www\\.)?hypem\\.com/premiere/(\\w+).*$",
"testInputs":[
"http://hypem.com/espiegel",
"http://hypem.com/track/28vqc/Empty+Houses+-+Thunderstorms",
"http://hypem.com/popular/artists",
"http://hypem.com/premiere/widowspeak"
],
"formats":[
{
"appId":"hypemachine",
"format":"hypem://premiere/$2",
"testResults":[
null,
null,
null,
"hypem://premiere/widowspeak"
]
}
]
},
{
"title":"Open Station",
"regex":"https?://(\\w+\\.)*tunein\\.com/(station/?\\?StationId=|radio/(\\S*-)*s|embed/player/s)(\\d+).*$",
"testInputs":[
"http://tunein.com/radio/Sparkx-Radio-s213837/",
"http://tunein.com/radio/Go-Go-Radio-Gibraltar-s201872/",
"http://tunein.com/station/?StationId=241021",
"http://tunein.com/station/?StationId=198896",
"http://tunein.com/embed/player/s194224/",
"https://beta.tunein.com/radio/CrossRadio1-s180459/"
],
"formats":[
{
"appId":"tunein",
"format":"tunein://profile/s$4",
"testResults":[
"tunein://profile/s213837",
"tunein://profile/s201872",
"tunein://profile/s241021",
"tunein://profile/s198896",
"tunein://profile/s194224",
"tunein://profile/s180459"
]
}
]
},
{
"title":"Add Podcast",
"regex":"https?://(?:www\\.)?(overcast\\.fm/\\+.+)$",
"testInputs":[
"https://overcast.fm/+lu7oErhY"
],
"formats":[
{
"appId":"overcast",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = xmlhttp.responseText; var match = RegExp('(overcast:///\\\\d+)').exec(res)[1]; completionHandler(match); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var match = RegExp('(overcast:///\\\\d+)').exec(res)[1]; completionHandler(match); }",
"testResults":[
"overcast:///41488209980950"
]
},
{
"appId":"castro",
"format":"castro://subscribe/$1",
"testResults":[
"castro://subscribe/overcast.fm/+lu7oErhY"
]
},
{
"appId":"pocketcasts",
"format":"pktc://subscribe/$1",
"testResults":[
"pktc://subscribe/overcast.fm/+lu7oErhY"
]
}
]
},
{
"regex":"https?://pca.st/\\w+$",
"testInputs":[
"http://pca.st/AmWl",
"http://pca.st/8gdy"
],
"formats":[
{
"appId":"pocketcasts",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = xmlhttp.responseText; var results = RegExp('.*(pktc://.*?)\\'.*').exec(res); var match; if (results != null && results.length > 1) { match = results[1]; }; completionHandler(match); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('.*(pktc://.*?)\\'.*').exec(res); var match = results != null && results.length > 1 ? results[1] : null; completionHandler(match); }",
"testResults":[
"pktc://www.pocketcasts.com/social/share/show/AmWl",
"pktc://www.pocketcasts.com/social/share/show/8gdy"
]
}
]
},
{
"title":"Open List",
"regex":"https?://lists\\.pocketcasts\\.com/([^/]*).*$",
"testInputs":[
"https://lists.pocketcasts.com/c5cf328e-ee81-47ed-9d7c-e36c5675a9d4"
],
"formats":[
{
"appId":"pocketcasts",
"format":"pktc://sharelist/lists.pocketcasts.com/$1",
"testResults":[
"pktc://sharelist/lists.pocketcasts.com/c5cf328e-ee81-47ed-9d7c-e36c5675a9d4"
]
}
]
},
{
"regex":"https?://castro\\.fm/((podcast|episode)/.*)$",
"testInputs":[
"https://castro.fm/podcast/e9293a66-e513-41e1-a93d-b2f0d79b7b81",
"https://castro.fm/episode/kFikoe"
],
"formats":[
{
"appId":"castro",
"format":"castro://$1",
"testResults":[
"castro://podcast/e9293a66-e513-41e1-a93d-b2f0d79b7b81",
"castro://episode/kFikoe"
]
}
]
},
{
"title":"View Podcast",
"regex":"https?://castro\\.fm/podcast/.*$",
"testInputs":[
"https://castro.fm/podcast/e9293a66-e513-41e1-a93d-b2f0d79b7b81",
"https://castro.fm/episode/kFikoe"
],
"formats":[
{
"appId":"applepodcasts",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('.*((itunes|podcasts)\\.apple\\.com/.*?)\\\".*?').exec(res); var match = results != null && results.length > 1 ? 'podcasts://' + results[1] : null; completionHandler(match); }",
"testResults":[
"podcasts://itunes.apple.com/ca/podcast/feed/id957171516?at=11lLuB",
null
]
},
{
"appId":"overcast",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('.*(?:itunes|podcasts)\\.apple\\.com/(?:.*/)*podcast/(?:.*/)?id(\\\\d+).*?').exec(res); var match = results != null && results.length > 1 ? 'overcast://x-callback-url/add?url=https%3A%2F%2Fitunes.apple.com%2Fpodcast%2Fid' + results[1] : null; completionHandler(match); }",
"testResults":[
"overcast://x-callback-url/add?url=https%3A%2F%2Fitunes.apple.com%2Fpodcast%2Fid957171516",
null
]
},
{
"appId":"pocketcasts",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('.*(?:itunes|podcasts)\\.apple\\.com/(?:.*/)*podcast/(?:.*/)?id(\\\\d+).*?').exec(res); var match = results != null && results.length > 1 ? 'pktc://subscribe/itunes.apple.com/podcast/id' + results[1] : null; completionHandler(match); }",
"testResults":[
"pktc://subscribe/itunes.apple.com/podcast/id957171516",
null
]
}
]
},
{
"title":"Add Podcast",
"regex":"https?://(?:geo\\.)?((itunes|podcasts)\\.apple\\.com/(.*/)*podcast/(.*/)?id\\d+.*)$",
"testInputs":[
"https://itunes.apple.com/us/podcast/serial/id917918570?mt=2",
"https://itunes.apple.com/us/podcast/episode-01-the-alibi/id917918570?i=319686008&mt=2",
"https://itunes.apple.com/us/podcast/id909109678",
"https://itunes.apple.com/podcast/id909109678",
"https://podcasts.apple.com/us/podcast/next-to-normal-story-slam/id1463199977"
],
"formats":[
{
"appId":"overcast",
"script":"function process(url, completionHandler) { completionHandler('overcast://x-callback-url/add?url=' + encodeURIComponent(url)); }",
"script2":"function process(url, completionHandler) { completionHandler('overcast://x-callback-url/add?url=' + encodeURIComponent(url)); }",
"testResults":[
"overcast://x-callback-url/add?url=https%3A%2F%2Fitunes.apple.com%2Fus%2Fpodcast%2Fserial%2Fid917918570%3Fmt%3D2",
"overcast://x-callback-url/add?url=https%3A%2F%2Fitunes.apple.com%2Fus%2Fpodcast%2Fepisode-01-the-alibi%2Fid917918570%3Fi%3D319686008%26mt%3D2",
"overcast://x-callback-url/add?url=https%3A%2F%2Fitunes.apple.com%2Fus%2Fpodcast%2Fid909109678",
"overcast://x-callback-url/add?url=https%3A%2F%2Fitunes.apple.com%2Fpodcast%2Fid909109678",
"overcast://x-callback-url/add?url=https%3A%2F%2Fpodcasts.apple.com%2Fus%2Fpodcast%2Fnext-to-normal-story-slam%2Fid1463199977"
]
},
{
"appId":"castro",
"format":"castro://subscribe/$1",
"testResults":[
"castro://subscribe/itunes.apple.com/us/podcast/serial/id917918570?mt=2",
"castro://subscribe/itunes.apple.com/us/podcast/episode-01-the-alibi/id917918570?i=319686008&mt=2",
"castro://subscribe/itunes.apple.com/us/podcast/id909109678",
"castro://subscribe/itunes.apple.com/podcast/id909109678",
"castro://subscribe/podcasts.apple.com/us/podcast/next-to-normal-story-slam/id1463199977"
]
},
{
"appId":"pocketcasts",
"format":"pktc://subscribe/$1",
"testResults":[
"pktc://subscribe/itunes.apple.com/us/podcast/serial/id917918570?mt=2",
"pktc://subscribe/itunes.apple.com/us/podcast/episode-01-the-alibi/id917918570?i=319686008&mt=2",
"pktc://subscribe/itunes.apple.com/us/podcast/id909109678",
"pktc://subscribe/itunes.apple.com/podcast/id909109678",
"pktc://subscribe/podcasts.apple.com/us/podcast/next-to-normal-story-slam/id1463199977"
]
}
]
},
{
"title":"Open Product",
"regex":"https?://(www\\.)?producthunt\\.com/(posts|tech|games|podcasts|books|)/[a-zA-Z0-9_\\-%]+.*$",
"testInputs":[
"http://www.producthunt.com/posts/opener",
"http://www.producthunt.com/tech/free",
"http://www.producthunt.com/games/codin-game"
],
"formats":[
{
"appId":"producthunt",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = xmlhttp.responseText; var match = RegExp('producthunt://post/(\\\\d+)').exec(res)[1]; completionHandler('producthunt://post/' + match); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var match = RegExp('producthunt://post/(\\\\d+)').exec(res)[1]; completionHandler('producthunt://post/' + match); }",
"testResults":[
"producthunt://post/22922",
"producthunt://post/23810",
"producthunt://post/24101"
]
}
]
},
{
"title":"Open User",
"regex":"https?://(www\\.)?producthunt\\.com/@\\w+(?!.*/collections/.*).*$",
"testInputs":[
"http://www.producthunt.com/@timonus"
],
"formats":[
{
"appId":"producthunt",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = xmlhttp.responseText; var match = RegExp('producthunt://user/(\\\\d+)').exec(res)[1]; completionHandler('producthunt://user/' + match); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var match = RegExp('producthunt://user/(\\\\d+)').exec(res)[1]; completionHandler('producthunt://user/' + match); }",
"testResults":[
"producthunt://user/141594"
]
}
]
},
{
"title":"Open Collection",
"regex":"https?://(www\\.)?producthunt\\.com/@\\w+/collections/.*$",
"testInputs":[
"http://www.producthunt.com/@timonus/collections/tijo"
],
"formats":[
{
"appId":"producthunt",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = xmlhttp.responseText; var match = RegExp('producthunt://collection/(\\\\d+)').exec(res)[1]; completionHandler('producthunt://collection/' + match); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var match = RegExp('producthunt://collection/(\\\\d+)').exec(res)[1]; completionHandler('producthunt://collection/' + match); }",
"testResults":[
"producthunt://collection/12529"
]
}
]
},
{
"title":"Open Talk",
"regex":"https?://(www\\.)?ted\\.com/talks/\\w+.*$",
"testInputs":[
"http://www.ted.com/talks/roman_mars_why_city_flags_may_be_the_worst_designed_thing_you_ve_never_noticed?share=194536fc14",
"http://www.ted.com/talks/kelly_mcgonigal_how_to_make_stress_your_friend?language=en"
],
"formats":[
{
"appId":"ted",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = xmlhttp.responseText; var match = RegExp('(ted://talks/\\\\d+)').exec(res)[1]; completionHandler(match); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var match = RegExp('(ted://talks/\\\\d+)').exec(res)[1]; completionHandler(match); }",
"testResults":[
"ted://talks/2253",
"ted://talks/1815"
]
}
]
},
{
"title":"Open Post",
"regex":"https?://(www\\.)?theguardian\\.(com|co\\.uk)/(.*)$",
"testInputs":[
"http://www.theguardian.com/commentisfree/picture/2015/sep/02/david-cameron-migration-crisis-steve-bell-cartoon",
"http://www.theguardian.com/global-development"
],
"formats":[
{
"appId":"theguardian",
"format":"gnmguardian://$3",
"testResults":[
"gnmguardian://commentisfree/picture/2015/sep/02/david-cameron-migration-crisis-steve-bell-cartoon",
"gnmguardian://global-development"
]
}
]
},
{
"title":"Open Post",
"regex":"https?://(www\\.)?buzzfeed\\.com/(\\w+/[a-zA-Z0-9_\\-%]+).*$",
"testInputs":[
"http://www.buzzfeed.com/brendanklinkenberg/whose-netflix-password-are-you-using#.gtMaGm7ZL2",
"http://www.buzzfeed.com/mathewguiver/13-amazing-faces-britney-spears-made-at-the-espys"
],
"formats":[
{
"appId":"buzzfeed",
"format":"buzzfeed://buzz/$2",
"testResults":[
"buzzfeed://buzz/brendanklinkenberg/whose-netflix-password-are-you-using",
"buzzfeed://buzz/mathewguiver/13-amazing-faces-britney-spears-made-at-the-espys"
]
}
]
},
{
"regex":"https?(://(?:\\w+\\.)?(reddit\\.com/.+))",
"testInputs":[
"https://m.reddit.com/r/sports/comments/38uhq3/american_pharoah_wins_belmont_stakes_and_triple/",
"https://np.reddit.com/r/gaming/",
"https://m.reddit.com/r/spotify?utm_source=mweb_redirect&compact=true",
"https://reddit.com/"
],
"formats":[
{
"appId":"reddit",
"format":"reddit$1",
"testResults":[
"reddit://m.reddit.com/r/sports/comments/38uhq3/american_pharoah_wins_belmont_stakes_and_triple/",
"reddit://np.reddit.com/r/gaming/",
"reddit://m.reddit.com/r/spotify?utm_source=mweb_redirect&compact=true",
null
]
},
{
"appId":"apollo",
"format":"apollo://www.$2",
"testResults":[
"apollo://www.reddit.com/r/sports/comments/38uhq3/american_pharoah_wins_belmont_stakes_and_triple/",
"apollo://www.reddit.com/r/gaming/",
"apollo://www.reddit.com/r/spotify?utm_source=mweb_redirect&compact=true",
null
]
},
{
"appId":"narwhal",
"script":"function process(url, completionHandler) { completionHandler('narwhal://open-url/' + encodeURIComponent(url.split('?')[0])); }",
"script2":"function process(url, completionHandler) { completionHandler('narwhal://open-url/' + encodeURIComponent(url.split('?')[0])); }",
"testResults":[
"narwhal://open-url/https%3A%2F%2Fm.reddit.com%2Fr%2Fsports%2Fcomments%2F38uhq3%2Famerican_pharoah_wins_belmont_stakes_and_triple%2F",
"narwhal://open-url/https%3A%2F%2Fnp.reddit.com%2Fr%2Fgaming%2F",
"narwhal://open-url/https%3A%2F%2Fm.reddit.com%2Fr%2Fspotify",
null
],
"notes":"Narwhal doesn't tolerate queries it seems https://twitter.com/jad_chaar/status/770055945707716608"
},
{
"appId":"baconreader",
"format":"baconreader://$2",
"testResults":[
"baconreader://reddit.com/r/sports/comments/38uhq3/american_pharoah_wins_belmont_stakes_and_triple/",
"baconreader://reddit.com/r/gaming/",
"baconreader://reddit.com/r/spotify?utm_source=mweb_redirect&compact=true",
null
]
},
{
"appId":"slide",
"format":"slide://$2",
"testResults":[
"slide://reddit.com/r/sports/comments/38uhq3/american_pharoah_wins_belmont_stakes_and_triple/",
"slide://reddit.com/r/gaming/",
"slide://reddit.com/r/spotify?utm_source=mweb_redirect&compact=true",
null
]
},
{
"appId":"comet",
"format":"comet://$2",
"testResults":[
"comet://reddit.com/r/sports/comments/38uhq3/american_pharoah_wins_belmont_stakes_and_triple/",
"comet://reddit.com/r/gaming/",
"comet://reddit.com/r/spotify?utm_source=mweb_redirect&compact=true",
null
]
},
{
"appId":"amrc",
"format":"amrc://$2",
"testResults":[
"amrc://reddit.com/r/sports/comments/38uhq3/american_pharoah_wins_belmont_stakes_and_triple/",
"amrc://reddit.com/r/gaming/",
"amrc://reddit.com/r/spotify?utm_source=mweb_redirect&compact=true",
null
]
},
{
"appId":"readder",
"format":"readder://open-url/https://$2",
"testResults":[
"readder://open-url/https://reddit.com/r/sports/comments/38uhq3/american_pharoah_wins_belmont_stakes_and_triple/",
"readder://open-url/https://reddit.com/r/gaming/",
"readder://open-url/https://reddit.com/r/spotify?utm_source=mweb_redirect&compact=true",
null
]
},
{
"appId":"beam",
"format":"beamapp://$2",
"testResults":[
"beamapp://reddit.com/r/sports/comments/38uhq3/american_pharoah_wins_belmont_stakes_and_triple/",
"beamapp://reddit.com/r/gaming/",
"beamapp://reddit.com/r/spotify?utm_source=mweb_redirect&compact=true",
null
]
},
{
"appId":"monochrome",
"format":"com.falconassets.monochrome://$2",
"testResults":[
"com.falconassets.monochrome://reddit.com/r/sports/comments/38uhq3/american_pharoah_wins_belmont_stakes_and_triple/",
"com.falconassets.monochrome://reddit.com/r/gaming/",
"com.falconassets.monochrome://reddit.com/r/spotify?utm_source=mweb_redirect&compact=true",
null
]
}
]
},
{
"regex":"https?://reddit\\.app\\.link/.+$",
"testInputs":[
"https://reddit.app.link/l67tKPXrtS"
],
"formats":[
{
"appId":"reddit",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('(reddit:(?:/)+(.*?))(\\\\?|\").*').exec(res); var match = null; if (results != null && results.length > 1) { match = results[1]; }; completionHandler(match); }",
"testResults":[
"reddit:///r/WatchPeopleDieInside/comments/a44jvb/alex_jones_has_finally_lost_it/"
]
},
{
"appId":"apollo",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('(reddit:(?:/)+(.*?))(\\\\?|\").*').exec(res); var match = null; if (results != null && results.length > 2) { match = 'apollo://www.reddit.com/' + results[2]; }; completionHandler(match); }",
"testResults":[
"apollo://www.reddit.com/r/WatchPeopleDieInside/comments/a44jvb/alex_jones_has_finally_lost_it/"
]
},
{
"appId":"narwhal",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('(reddit:(?:/)+(.*?))(\\\\?|\").*').exec(res); var match = null; if (results != null && results.length > 2) { match = 'narwhal://open-url/' + encodeURIComponent('https://www.reddit.com/' + results[2]); }; completionHandler(match); }",
"testResults":[
"narwhal://open-url/https%3A%2F%2Fwww.reddit.com%2Fr%2FWatchPeopleDieInside%2Fcomments%2Fa44jvb%2Falex_jones_has_finally_lost_it%2F"
]
},
{
"appId":"baconreader",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('(reddit:(?:/)+(.*?))(\\\\?|\").*').exec(res); var match = null; if (results != null && results.length > 2) { match = 'baconreader://reddit.com/' + results[2]; }; completionHandler(match); }",
"testResults":[
"baconreader://reddit.com/r/WatchPeopleDieInside/comments/a44jvb/alex_jones_has_finally_lost_it/"
]
},
{
"appId":"slide",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('(reddit:(?:/)+(.*?))(\\\\?|\").*').exec(res); var match = null; if (results != null && results.length > 2) { match = 'slide://reddit.com/' + results[2]; }; completionHandler(match); }",
"testResults":[
"slide://reddit.com/r/WatchPeopleDieInside/comments/a44jvb/alex_jones_has_finally_lost_it/"
]
},
{
"appId":"comet",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('(reddit:(?:/)+(.*?))(\\\\?|\").*').exec(res); var match = null; if (results != null && results.length > 2) { match = 'comet://reddit.com/' + results[2]; }; completionHandler(match); }",
"testResults":[
"comet://reddit.com/r/WatchPeopleDieInside/comments/a44jvb/alex_jones_has_finally_lost_it/"
]
},
{
"appId":"amrc",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('(reddit:(?:/)+(.*?))(\\\\?|\").*').exec(res); var match = null; if (results != null && results.length > 2) { match = 'amrc://reddit.com/' + results[2]; }; completionHandler(match); }",
"testResults":[
"amrc://reddit.com/r/WatchPeopleDieInside/comments/a44jvb/alex_jones_has_finally_lost_it/"
]
},
{
"appId":"readder",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('(reddit:(?:/)+(.*?))(\\\\?|\").*').exec(res); var match = null; if (results != null && results.length > 2) { match = 'readder://open-url/https://reddit.com/' + results[2]; }; completionHandler(match); }",
"testResults":[
"readder://open-url/https://reddit.com/r/WatchPeopleDieInside/comments/a44jvb/alex_jones_has_finally_lost_it/"
]
},
{
"appId":"beam",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('(reddit:(?:/)+(.*?))(\\\\?|\").*').exec(res); var match = null; if (results != null && results.length > 2) { match = 'beamapp://reddit.com/' + results[2]; }; completionHandler(match); }",
"testResults":[
"beamapp://reddit.com/r/WatchPeopleDieInside/comments/a44jvb/alex_jones_has_finally_lost_it/"
]
},
{
"appId":"monochrome",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('(reddit:(?:/)+(.*?))(\\\\?|\").*').exec(res); var match = null; if (results != null && results.length > 2) { match = 'com.falconassets.monochrome://reddit.com/' + results[2]; }; completionHandler(match); }",
"testResults":[
"com.falconassets.monochrome://reddit.com/r/WatchPeopleDieInside/comments/a44jvb/alex_jones_has_finally_lost_it/"
]
}
]
},
{
"title":"Open Document",
"regex":"https?://(\\w+\\.)?scribd\\.com(/\\w+)*/(doc|embeds)/(\\d+).*$",
"testInputs":[
"http://www.scribd.com/doc/6099146/The-Stuyvesant-Spectator-9-11-Edition",
"http://www.scribd.com/mobile/doc/6099146/The-Stuyvesant-Spectator-9-11-Edition",
"https://www.scribd.com/embeds/229492417/content?start_page=1&view_mode=scroll&show_recommendations=true",
"https://es.scribd.com/doc/280266758/Encuentro-Provincial-Prevencion-y-Asistencia"
],
"formats":[
{
"appId":"scribd",
"format":"iscribd://doc?id=$4",
"testResults":[
"iscribd://doc?id=6099146",
"iscribd://doc?id=6099146",
"iscribd://doc?id=229492417",
"iscribd://doc?id=280266758"
]
}
]
},
{
"regex":"https?(://(?!link\\.)(?:(\\w|-)+\\.)*medium\\.com(?!/r/?\\?url.*)/+([^&|\\?]*)(?:&|\\?)?(.*))$",
"testInputs":[
"https://medium.com/@timonus",
"https://medium.com/@HelloAngels/hello-color-genomics-c679cddd7ed8",
"https://medium.com/technology-musings/my-rocky-first-24hrs-with-the-%E1%B4%A1%E1%B4%80%E1%B4%9B%E1%B4%84%CA%9C-67c841702a70",
"https://www.medium.com/p/822960e8653d",
"https://medium.com/@moskov/work-hard-live-well-ead679cb506d#af15--share-0-106",
"https://medium.com/@tikhon/founders-it-s-not-1990-stop-treating-your-employees-like-it-is-523f48fe90cb#.cdu7fela3",
"https://medium.com/@timonus",
"https://www.medium.com/@HelloAngels/hello-color-genomics-c679cddd7ed8",
"https://medium.com/@cba/highlights",
"https://medium.com//how-to-get-over-the-need-to-be-liked-by-everyone-you-meet-463d9ef529cc",
"https://medium.com//how-to-get-over-the-need-to-be-liked-by-everyone-you-meet-463d9ef529cc&formCheck=0980fc94e41dc364cc129fd0d7034d86",
"https://medium.com/the-mission/how-to-send-emails-to-very-busy-people-and-a-case-study-teardown-8dd7b3428f8e&formCheck=a917221c92021db2523cd48f1fcc4c0b&utm_content=buffer98d42&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer",
"https://onezero.medium.com/what-happens-when-your-tweet-becomes-a-subway-ad-696f7ad4ab86",
"https://medium.com/r/?url=https%3A%2F%2Fgithub.com%2Ftimonus%2FTJActivityViewController",
"https://link.medium.com/97LvGxM9m1",
"https://erik-engheim.medium.com/why-is-apples-m1-chip-so-fast-3262b158cba2"
],
"formats":[
{
"appId":"medium",
"format":"medium$1",
"testResults":[
"medium://medium.com/@timonus",
"medium://medium.com/@HelloAngels/hello-color-genomics-c679cddd7ed8",
"medium://medium.com/technology-musings/my-rocky-first-24hrs-with-the-%E1%B4%A1%E1%B4%80%E1%B4%9B%E1%B4%84%CA%9C-67c841702a70",
"medium://www.medium.com/p/822960e8653d",
"medium://medium.com/@moskov/work-hard-live-well-ead679cb506d#af15--share-0-106",
"medium://medium.com/@tikhon/founders-it-s-not-1990-stop-treating-your-employees-like-it-is-523f48fe90cb#.cdu7fela3",
"medium://medium.com/@timonus",
"medium://www.medium.com/@HelloAngels/hello-color-genomics-c679cddd7ed8",
"medium://medium.com/@cba/highlights",
"medium://medium.com//how-to-get-over-the-need-to-be-liked-by-everyone-you-meet-463d9ef529cc",
"medium://medium.com//how-to-get-over-the-need-to-be-liked-by-everyone-you-meet-463d9ef529cc&formCheck=0980fc94e41dc364cc129fd0d7034d86",
"medium://medium.com/the-mission/how-to-send-emails-to-very-busy-people-and-a-case-study-teardown-8dd7b3428f8e&formCheck=a917221c92021db2523cd48f1fcc4c0b&utm_content=buffer98d42&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer",
"medium://onezero.medium.com/what-happens-when-your-tweet-becomes-a-subway-ad-696f7ad4ab86",
null,
null,
"medium://erik-engheim.medium.com/why-is-apples-m1-chip-so-fast-3262b158cba2"
]
}
]
},
{
"regex":"https?://link\\.medium\\.com/.+",
"testInputs":[
"https://link.medium.com/IrW5wDIMzS",
"https://link.medium.com/97LvGxM9m1"
],
"formats":[
{
"appId":"medium",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('(medium://.*?)\"').exec(res); var match = results != null && results.length > 1 ? results[1].replace(RegExp('link_click_id=\\\\d+'), '') : null; completionHandler(match); }",
"testResults":[
"medium:///p/491c58421916?",
"medium://p/67f717d94b3d?"
]
}
]
},
{
"regex":"https?://(?!.*medium\\.com)[a-zA-Z0-9\\-.]+/(?!@.*)(?!\\?.*)(.+)\\n.*(\"medium-fulfilled-by\"|\"(?:(?i)x-powered-by)\":\"(?:(?i)kale|medium)\").*$",
"headers":1,
"note":"URLs like https://500ish.com/?foo=bar and https://aimango.me/@aimango should not be handled by this action.",
"formats":[
{
"appId":"medium",
"format":"medium://p/$1"
}
]
},
{
"title":"Open Publication",
"regex":"https?://(?!.*medium\\.com)[a-zA-Z0-9\\-.]+(/?((@|\\?).*)?)?\\n.*(\"medium-fulfilled-by\"|\"((?i)x-powered-by)\":\"((?i)kale|medium)\").*$",
"headers":1,
"note":"URLs like https://500ish.com/?foo=bar and https://aimango.me/@aimango should be handled as publications by this action. The prior 'open link' action will fail for those because they require a lookup in the page's markup to derive a deep link.",
"formats":[
{
"appId":"medium",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = xmlhttp.responseText; var match = RegExp('(medium://.*?)\"').exec(res)[1]; completionHandler(match); } }; xmlhttp.open('GET', url.split('\\n')[0], true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var res = httpRequest(url.split(/@|\\n/)[0]); var results = RegExp('(medium://.*?)\"').exec(res); var match = results != null && results.length > 1 ? results[1] : null; completionHandler(match); }"
}
]
},
{
"notes":"Either album or track, same prefix",
"regex":"https?://music\\.amazon(\\.\\w+)+/(albums/\\w.*)$",
"testInputs":[
"https://music.amazon.com/albums/B003HY3530?trackAsin=B003HXXRHK",
"https://music.amazon.com/albums/B003HY3530"
],
"formats":[
{
"appId":"amazonmusic",
"format":"amznmp3://$2",
"testResults":[
"amznmp3://albums/B003HY3530?trackAsin=B003HXXRHK",
"amznmp3://albums/B003HY3530"
]
},
{
"appId":"spotify",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['spotify'] != null) { var appURL = res['linksByPlatform']['spotify']['nativeAppUriDesktop']; } completionHandler(appURL); }",
"testResults":[
"spotify:track:2073QOEC8rBtSyTsRyaWiP",
"spotify:album:4hnqM0JK4CM1phwfq1Ldyz"
]
},
{
"appId":"applemusic",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['appleMusic'] != null) { var appURL = res['linksByPlatform']['appleMusic']['nativeAppUriMobile']; } completionHandler(appURL); }",
"testResults":[
null,
null
]
},
{
"appId":"itunesstore",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['itunes'] != null) { var appURL = res['linksByPlatform']['itunes']['nativeAppUriMobile']; } completionHandler(appURL); }",
"testResults":[
null,
null
]
},
{
"appId":"youtube",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['youtube'] != null) { var appURL = res['linksByPlatform']['youtube']['url'].replace(RegExp('^.*?\\\\w+://', 'g'), 'vnd.youtube://'); } completionHandler(appURL); }",
"testResults":[
"vnd.youtube://www.youtube.com/watch?v=tW8FKkVnqng",
"vnd.youtube://www.youtube.com/playlist?list=PL317B1490BF2793B9"
]
},
{
"appId":"soundcloud",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['soundcloud'] != null) { var entityId = res['linksByPlatform']['soundcloud']['entityUniqueId']; var type; if (entityId.indexOf('SONG') != -1) { type = 'sounds'; } else if (entityId.indexOf('PLAYLIST') != -1) { type = 'playlists'; } if (type != null) { var appURL = 'soundcloud://' + type + ':' + entityId.replace(RegExp('.*_.*::', 'g'), ''); } } completionHandler(appURL); }",
"testResults":[
null,
"soundcloud://playlists:241266882"
]
},
{
"appId":"youtubemusic",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['youtube'] != null) { var appURL = res['linksByPlatform']['youtube']['url'].replace(RegExp('^.*?\\\\w+://', 'g'), 'youtubemusic://'); } completionHandler(appURL); }",
"testResults":[
"youtubemusic://www.youtube.com/watch?v=tW8FKkVnqng",
"youtubemusic://www.youtube.com/playlist?list=PL317B1490BF2793B9"
]
},
{
"appId":"pandora",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['pandora'] != null) { var entityId = res['linksByPlatform']['pandora']['entityUniqueId']; var type; if (entityId.indexOf('SONG') != -1) { type = 'track'; } else if (entityId.indexOf('ALBUM') != -1) { type = 'album'; } if (type != null) { var appURL = 'pandorav4://backstage/' + type + '?pandoraId=' + entityId.replace(RegExp('.*_.*::', 'g'), ''); } } completionHandler(appURL); }",
"testResults":[
null,
"pandorav4://backstage/album?pandoraId=AL:134106"
]
},
{
"appId":"tidal",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['tidal'] != null) { var entityId = res['linksByPlatform']['tidal']['entityUniqueId']; var type; if (entityId.indexOf('SONG') != -1) { type = 'track'; } else if (entityId.indexOf('ALBUM') != -1) { type = 'album'; } if (type != null) { var appURL = 'tidal://' + type + '/' + entityId.replace(RegExp('.*_.*::', 'g'), ''); } } completionHandler(appURL); }",
"testResults":[
null,
"tidal://album/3821703"
]
}
]
},
{
"notes":"Either artist, playlist, or station",
"regex":"https?://music\\.amazon(\\.\\w+)+/((artists|(user-)?playlists|stations)/\\w.*)$",
"testInputs":[
"https://music.amazon.com/artists/B000QKRNTA?tab=CATALOG&ref=dm_wcp_artist_link_pp",
"https://music.amazon.com/user-playlists/b4bf15d4aa684b5694e29b89a52cb9d6sune?ref=dm_sh_26ff-4321-dmcp-52c5-c71a0&musicTerritory=US&marketplaceId=ATVPDKIKX0DER",
"https://music.amazon.com/stations/A2D0X18EHNKEOJ?ref=dm_sh_e19e-7a36-dmcp-812b-23c1e&musicTerritory=US&marketplaceId=ATVPDKIKX0DER",
"https://music.amazon.co.jp/playlists/B06XBXQ6TP?do=play"
],
"formats":[
{
"appId":"amazonmusic",
"format":"amznmp3://$2",
"testResults":[
"amznmp3://artists/B000QKRNTA?tab=CATALOG&ref=dm_wcp_artist_link_pp",
"amznmp3://user-playlists/b4bf15d4aa684b5694e29b89a52cb9d6sune?ref=dm_sh_26ff-4321-dmcp-52c5-c71a0&musicTerritory=US&marketplaceId=ATVPDKIKX0DER",
"amznmp3://stations/A2D0X18EHNKEOJ?ref=dm_sh_e19e-7a36-dmcp-812b-23c1e&musicTerritory=US&marketplaceId=ATVPDKIKX0DER",
"amznmp3://playlists/B06XBXQ6TP?do=play"
]
}
]
},
{
"regex":"https?://(\\w+\\.)*watch\\.amazon(\\.\\w+)+/(.*)$",
"testInputs":[
"https://watch.amazon.com/detail?asin=B0868TBBQV&territory=US&ref_=share_ios_movie&r=web"
],
"formats":[
{
"appId":"amazonprimevideo",
"format":"aiv://$3",
"testResults":[
"aiv://detail?asin=B0868TBBQV&territory=US&ref_=share_ios_movie&r=web"
]
}
]
},
{
"regex":"https?://((?:\\w+\\.)*amazon((\\.\\w+)+)/.*)$",
"testInputs":[
"http://www.amazon.com/Mondaine-A990-CLOCK-11SBC-Clock-White-Frame/dp/B0016QNNP6/ref=sr_1_1?ie=UTF8&qid=1429471063&sr=8-1&keywords=mondaine+clock",
"http://www.amazon.com/dp/B0016QNNP6",
"http://www.amazon.com/gp/product/B0016QNNP6",
"http://www.amazon.com/dp/B0016QNNP6/ref=cm_sw_su_dp",
"http://www.amazon.com/gp/product/B0016QNNP6",
"http://www.amazon.co.uk/Untitled/dp/1472230078/ref=sr_1_1/277-2117425-9287062?ie=UTF8&qid=1428652808&sr=8-1&keywords=9781472230072",
"http://www.amazon.de/dp/B00N5BQ62",
"http://smile.amazon.com/dp/0812522397/ref=cm_sw_r_awd_m6xOvb9NW6G48",
"http://www.amazon.com/Adjustable-Flashlight-Bright-Batteries-Included/dp/B005FEGYCO",
"http://www.amazon.com/gp/aw/d/B005FEGYCO/ref=mp_s_a_1_1?qid=1444785369&sr=8-1&pi=SY200_QL40&keywords=flashlight&dpPl=1&dpID=41uqlYcT30L&ref=plSrch",
"http://www.amazon.com/exec/obidos/ASIN/0812972155/codihorr-20"
],
"formats":[
{
"appId":"amazon",
"format":"com.amazon.mobile.shopping.web://$1",
"testResults":[
"com.amazon.mobile.shopping.web://www.amazon.com/Mondaine-A990-CLOCK-11SBC-Clock-White-Frame/dp/B0016QNNP6/ref=sr_1_1?ie=UTF8&qid=1429471063&sr=8-1&keywords=mondaine+clock",
"com.amazon.mobile.shopping.web://www.amazon.com/dp/B0016QNNP6",
"com.amazon.mobile.shopping.web://www.amazon.com/gp/product/B0016QNNP6",
"com.amazon.mobile.shopping.web://www.amazon.com/dp/B0016QNNP6/ref=cm_sw_su_dp",
"com.amazon.mobile.shopping.web://www.amazon.com/gp/product/B0016QNNP6",
"com.amazon.mobile.shopping.web://www.amazon.co.uk/Untitled/dp/1472230078/ref=sr_1_1/277-2117425-9287062?ie=UTF8&qid=1428652808&sr=8-1&keywords=9781472230072",
"com.amazon.mobile.shopping.web://www.amazon.de/dp/B00N5BQ62",
"com.amazon.mobile.shopping.web://smile.amazon.com/dp/0812522397/ref=cm_sw_r_awd_m6xOvb9NW6G48",
"com.amazon.mobile.shopping.web://www.amazon.com/Adjustable-Flashlight-Bright-Batteries-Included/dp/B005FEGYCO",
"com.amazon.mobile.shopping.web://www.amazon.com/gp/aw/d/B005FEGYCO/ref=mp_s_a_1_1?qid=1444785369&sr=8-1&pi=SY200_QL40&keywords=flashlight&dpPl=1&dpID=41uqlYcT30L&ref=plSrch",
"com.amazon.mobile.shopping.web://www.amazon.com/exec/obidos/ASIN/0812972155/codihorr-20"
]
}
]
},
{
"title":"Open Deal",
"regex":"https?://(www\\.)groupon(\\.\\w+)+/deals/.*$",
"formats":[
{
"appId":"groupon",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = xmlhttp.responseText; var match = RegExp('ios-app://352683833/groupon/dispatch/(.*?)\"').exec(res)[1]; completionHandler('groupon:///dispatch/' + match); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var match = RegExp('ios-app://352683833/groupon/dispatch/(.*?)\"').exec(res)[1]; completionHandler('groupon:///dispatch/' + match); }"
}
]
},
{
"title":"Open Product",
"regex":"https?://(\\w+\\.)*aliexpress\\.com/(\\w+/)*(item(/[^/]+)?/|affi-item\\.htm.*item_id=)(\\d+)(\\.html?)?.*$",
"testInputs":[
"http://m.aliexpress.com/item/32409017535.html",
"http://www.aliexpress.com/item/Foliage-plant-seeds-wheat-grass-cat-grass-seeds-wheat-seeds-about-200-particles/32439617530.html?spm=5261.7749171.1998596321.8.wpCnkX&sdom=561.108229.97206.0_32439617530",
"https://de.aliexpress.com/item/Original-Xiaomi-Mi-Band-2-MiBand-2-Smart-Bracelet-Fitness-Wristband-OLED-Display-Heart-Rate-Monitor/32712227119.html?spm=2114.47010108.6.6.JdBz1z&&scm=1007.12785.38449.0",
"https://m.de.aliexpress.com/item/32712227119.html?trace=wwwdetail2mobilesitedetail&productId=32712227119&productSubject=Original-Xiaomi-Mi-Band-2-MiBand-2-Smart-Bracelet-Fitness-Wristband-OLED-Display-Heart-Rate-Monitor&spm=2114.47010108.6.6.JdBz1z&&scm=1007.12785.38449.0",
"https://m.de.aliexpress.com/s/item/1121184844.html",
"https://sale.aliexpress.com/ru/__mobile/affi-item.htm?ae_affi_item_id=32821127175&transAbTest=ae803_2&cv=32524742&ws_ab_test=searchweb0_0%2525252Csearchweb201602_4_5460015_10152_10065_10151_5490020_10068_10209_5470015_10307_10301_10137_10060_10155_10154_10333_10334_10056_10335_10055_10336_10054_10059_10332_100031_10099_10103_10102_10169_10052_10053_10142_10107_10050_10051_5380020_10328_10326_10327_10084_10083_10080_10082_10081_10110_10111_10112_10113_10114_10312_10313_10314_10078_10079_10210_10073_10125-10333%2525252Csearchweb201603_21%2525252CppcSwitch_5&algo_pvid=7c2036ff-4b81-4bfb-b842-a56dc0d68a20&af=1532208&btsid=30fc097e-e45e-4017-8689-bc665c189e25&cn=41pjts45sv6yrvamdc02lfl912sn2994&dp=v5_41pjts45sv6yrvamdc02lfl912sn2994&algo_expid=7c2036ff-4b81-4bfb-b842-a56dc0d68a20-0&af=1532208&cv=32524742&cn=41pjts45sv6yrvamdc02lfl912sn2994&dp=v5_41pjts45sv6yrvamdc02lfl912sn2994&afref=&aff_platform=default&cpt=1544956569323&sk=ccfBY4yg&aff_trace_key=ba7cd8b1b5ee4c1b8b89c2828e2e3548-1544956569323-00495-ccfBY4yg&terminal_id=5f1e9cae96bf4a43b2744f2e8c02f47f"
],
"formats":[
{
"appId":"aliexpress",
"format":"aliexpress://product/detail?productId=$5",
"testResults":[
"aliexpress://product/detail?productId=32409017535",
"aliexpress://product/detail?productId=32439617530",
"aliexpress://product/detail?productId=32712227119",
"aliexpress://product/detail?productId=32712227119",
"aliexpress://product/detail?productId=1121184844",
"aliexpress://product/detail?productId=32821127175"
]
},
{
"appId":"aliexpresshd",
"format":"aliexpresshd://product/detail?productId=$5",
"testResults":[
"aliexpresshd://product/detail?productId=32409017535",
"aliexpresshd://product/detail?productId=32439617530",
"aliexpresshd://product/detail?productId=32712227119",
"aliexpresshd://product/detail?productId=32712227119",
"aliexpresshd://product/detail?productId=1121184844",
"aliexpresshd://product/detail?productId=32821127175"
]
}
]
},
{
"title":"Open Product",
"regex":"https?://(\\w+\\.)?alibaba\\.com/product(-detail)?/([a-zA-Z0-9_\\-]*_)?(\\d+).*$",
"testInputs":[
"http://m.alibaba.com/product/60244850644/Genuine-Leather-Watch-Band-Strap-for.html?s=p",
"http://www.alibaba.com/product-detail/2-4-GSM-900-1800Mhz-cdma_60082972898.html?spm=a2700.7724857.35.1.npprUl"
],
"formats":[
{
"appId":"alibaba",
"format":"enalibaba://detail/?id=$4",
"testResults":[
"enalibaba://detail/?id=60244850644",
"enalibaba://detail/?id=60082972898"
]
}
]
},
{
"title":"Open Product",
"regex":"https?://(www\\.|rover\\.|m\\.)?ebay(\\.\\w+)+/(itm|i)/([0-9A-Za-z_-]+/)?(\\d+)(/|\\?)?.*$",
"testInputs":[
"http://www.ebay.com/itm/Mondaine-Classic-Swiss-Railways-White-Dial-Black-Leather-Mens-Watch-/181453530366?pt=LH_DefaultDomain_0&hash=item2a3f7924fe",
"http://www.ebay.com/itm/181453530366",
"http://m.ebay.com/itm/181453530366",
"http://www.ebay.com/itm/-/181453530366",
"http://www.ebay.es/itm/like/151701307496?clk_rvr_id=841126354199&item=151701307496&lgeo=1&utm_medium=twitter&utm_source=twitterfeed&vectorid=229501&rmvSB=true",
"https://www.ebay.de/i/352381830917?ul_noapp=true&ul_ref=https%253A%252F%252Frover.ebay.com%252Frover%252F0%252Fe11011.m43.l1120%252F7%253Feuid%253Da20b0b3beacf44ea8b800268b2d6dbad%2526bu%253D43211536447%2526loc%253Dhttps%25253A%25252F%25252Fwww.ebay.de%25252Fulk%25252Fi%25252F352381830917%2526exe%253D20016%2526ext%253D51909%2526es%253D77%2526nqc%253DAAAAAAAAAACIAgAAAAAAgQAAQgAAAAAACAAQAAAAAMAAAAAAEAAwAAAIAAAAAAAAAACBAAIAAAAAAAAABEAAAIgIAAAAAAAAAAAAAAAAAAAAAAAAAAAQggCAAAAAAAAAAAAAAACIAAQAAAAgAAgAIAAAAAIAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAACA%2526nqt%253DAAAAAAAAAACIAgAAAAAAgQAAQgAAAAAACAAQAAAAAMAAAAAAEAAwAAAIAAAAAAAAAACBAAIAAAAAAAAABEAAAIgIAAAAAAAAAAAAAAAAAAAAEAABAAAQggCAAAAAAAAAAAAAAACIAAQAAAAgAAgAIAAAAAIAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAACA%2526ec%253D1%2526sojTags%253Des%253Des%252Cnqc%253Dnqc%252Cnqt%253Dnqt%252Cec%253Dec%252Cexe%253Dexe%252Cext%253Dext%252Cbu%253Dbu%2526srcrot%253De11011.m43.l1120%2526rvr_id%253D0%2526rvr_ts%253D0f201d821640a88a63804442fff5c9e2&var=621741819993"
],
"formats":[
{
"appId":"ebay",
"format":"ebay://launch?itm=$5",
"testResults":[
"ebay://launch?itm=181453530366",
"ebay://launch?itm=181453530366",
"ebay://launch?itm=181453530366",
"ebay://launch?itm=181453530366",
"ebay://launch?itm=151701307496",
"ebay://launch?itm=352381830917"
]
}
]
},
{
"title":"Open Project",
"regex":"https?(://(www\\.)?kickstarter\\.com/projects/[a-zA-Z0-9_%-]+/[a-zA-Z0-9_%-]+).*?$",
"testInputs":[
"https://www.kickstarter.com/projects/1425492550/sesame-your-key-reinvented?ref=dash",
"https://www.kickstarter.com/projects/paulgtoys/pterodactyl-5-rc-flying-lizard",
"https://www.kickstarter.com/projects/hyperchiller/hyperchiller-make-iced-coffee-in-one-minute/?ref=kicktraq",
"https://www.kickstarter.com/projects/1238747394/the-vamp-bring-back-the-sound/posts/1679516?ref=backer_project_update"
],
"formats":[
{
"appId":"kickstarter",
"format":"ksr$1",
"testResults":[
"ksr://www.kickstarter.com/projects/1425492550/sesame-your-key-reinvented",
"ksr://www.kickstarter.com/projects/paulgtoys/pterodactyl-5-rc-flying-lizard",
"ksr://www.kickstarter.com/projects/hyperchiller/hyperchiller-make-iced-coffee-in-one-minute",
"ksr://www.kickstarter.com/projects/1238747394/the-vamp-bring-back-the-sound"
]
}
]
},
{
"title":"Open Item",
"regex":"https?://(www\\.|m\\.)?etsy\\.com/(.+/)*listing/(\\d+).*$",
"testInputs":[
"https://www.etsy.com/listing/104204797/antiqued-brass-finished-golf-king-coat?ref=shop_home_active_8#20150510032301",
"https://www.etsy.com/listing/232911333/hand-painted-saw-blade-summer-old-truck",
"https://www.etsy.com/listing/197006378/vintage-dimpled-tumblers-retro-drinking?ref=shop_home_active_2",
"https://www.etsy.com/uk/listing/216304624/industrial-glass-table-lamp-glass-floor"
],
"formats":[
{
"appId":"etsy",
"format":"etsy://listing/$3",
"testResults":[
"etsy://listing/104204797",
"etsy://listing/232911333",
"etsy://listing/197006378",
"etsy://listing/216304624"
]
}
]
},
{
"title":"Open Shop",
"regex":"https?://(www\\.|m\\.)?etsy\\.com/(.+/)*shop/(\\w+).*$",
"testInputs":[
"https://www.etsy.com/shop/MadeFromFire"
],
"formats":[
{
"appId":"etsy",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('.*(etsy://shop/\\\\d+).*?').exec(res); var match = results != null && results.length > 1 ? results[1] : null; completionHandler(match); }",
"testResults":[
"etsy://shop/21011726"
]
}
]
},
{
"title":"Open Product",
"regex":"https?://(www\\.)?fancy\\.com/things/(\\d+).*$",
"testInputs":[
"http://fancy.com/things/924406547881135320/Classic-Nottingham-Rose-Gold-Watch-by-Daniel-Wellington?utm=timeline_featured"
],
"formats":[
{
"appId":"fancy",
"format":"fancy://things/$2",
"testResults":[
"fancy://things/924406547881135320"
]
}
]
},
{
"title":"Open Project",
"regex":"https?://(www\\.)?behance\\.net/gallery/(([a-zA-Z0-9_\\-\\.]/)+)?(\\d+).*$",
"testInputs":[
"https://www.behance.net/gallery/29303701/Use-your-eyes",
"https://www.behance.net/gallery/28120617/WATCHme?scid=social51758486&adbid=640601625862651904&adbpl=tw&adbpr=9313022",
"https://www.behance.net/gallery/_/29303565/_"
],
"formats":[
{
"appId":"behance",
"format":"behance://project/$4",
"testResults":[
"behance://project/29303701",
"behance://project/28120617",
"behance://project/29303565"
]
}
]
},
{
"title":"Open Post",
"regex":"https?://(www\\.)?weheartit\\.com/entry/(\\d+).*$",
"testInputs":[
"http://weheartit.com/entry/195395263/via/martina_morales_7965?utm_medium=social&utm_campaign=share&utm_source=twitter.com"
],
"formats":[
{
"appId":"weheartit",
"format":"whi://entry/$2",
"testResults":[
"whi://entry/195395263"
]
}
]
},
{
"title":"Open Profile",
"regex":"https?://(www\\.)?weheartit\\.com/(?!entry)([a-zA-Z0-9_\\-]+)(?!.*/collections/.+).*$$",
"testInputs":[
"http://weheartit.com/martina_morales_7965",
"http://weheartit.com/martina_morales_7965/collections/97402106-movies-series-d"
],
"formats":[
{
"appId":"weheartit",
"format":"whi://user/$2",
"testResults":[
"whi://user/martina_morales_7965",
null
]
}
]
},
{
"title":"Open Collection",
"regex":"https?://(www\\.)?weheartit\\.com/(?!entry)(([a-zA-Z0-9_\\-]+)/collections/([a-zA-Z0-9_\\-]+)).*$",
"testInputs":[
"http://weheartit.com/martina_morales_7965/collections/97402106-movies-series-d"
],
"formats":[
{
"appId":"weheartit",
"format":"whi://$2",
"testResults":[
"whi://martina_morales_7965/collections/97402106-movies-series-d"
]
}
]
},
{
"title":"Open Event",
"regex":"https?://(www\\.)?eventbrite(\\.\\w+)+/e(vent)?/([a-zA-Z0-9_]+-)*(\\d+).*$",
"testInputs":[
"https://www.eventbrite.com/e/ths-key-club-empowerment-butterfly-benefit-concert-ft-midnight-red-tickets-16544017602",
"http://www.eventbrite.co.uk/e/blacklistedtm-tickets-16335494905",
"http://www.eventbrite.co.uk/e/16335494905",
"http://www.eventbrite.co.uk/event/blacklistedtm-tickets-16335494905"
],
"formats":[
{
"appId":"eventbrite",
"format":"com-eventbrite-attendee:event/$5",
"testResults":[
"com-eventbrite-attendee:event/16544017602",
"com-eventbrite-attendee:event/16335494905",
"com-eventbrite-attendee:event/16335494905",
"com-eventbrite-attendee:event/16335494905"
]
}
]
},
{
"title":"Open Event",
"regex":"https?://(?:m\\.|mobile\\.|www\\.)?meetup\\.com/((.*/)?events/\\d+).*$",
"testInputs":[
"http://www.meetup.com/Mobilize-MN/events/221392586/",
"http://www.meetup.com/svmobiledev/events/226384871/?joinFrom=event&success=profileUpdatedEventWelcome",
"https://www.meetup.com/swift-language/events/261472504"
],
"formats":[
{
"appId":"meetup",
"format":"meetup://$1",
"testResults":[
"meetup://Mobilize-MN/events/221392586",
"meetup://svmobiledev/events/226384871",
"meetup://swift-language/events/261472504"
]
},
{
"appId":"googlemaps",
"script":"function process(url, completionHandler) { var match = RegExp('http(?:s?)://(?:m\\\\.|mobile\\\\.|www\\\\.)?meetup\\\\.com/([a-zA-Z0-9_\\\\-%]+)(?:/.*)?/(\\\\d+).*$').exec(url); var groupIdentifier = match[1]; var eventIdentifier = match[2]; url = 'https://api.meetup.com/' + groupIdentifier + '/events/' + eventIdentifier; var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = JSON.parse(xmlhttp.responseText); if (res['venue'] != null && res['venue']['name'] != null && res['venue']['lat'] != null & res['venue']['lon'] != null) { completionHandler('comgooglemaps://?q=' + res['venue']['lat'] + ',' + res['venue']['lon']); } else { completionHandler(null); } } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var match = RegExp('http(?:s?)://(?:m\\\\.|mobile\\\\.|www\\\\.)?meetup\\\\.com/([a-zA-Z0-9_\\\\-%]+)(?:/.*)?/(\\\\d+).*$').exec(url); var groupIdentifier = match[1]; var eventIdentifier = match[2]; url = 'https://api.meetup.com/' + groupIdentifier + '/events/' + eventIdentifier; var res = jsonRequest(url); if (res['venue'] != null && res['venue']['name'] != null && res['venue']['lat'] != null & res['venue']['lon'] != null) { completionHandler('comgooglemaps://?q=' + res['venue']['lat'] + ',' + res['venue']['lon']); } else { completionHandler(null); } }",
"testResults":[
"comgooglemaps://?q=44.975250244140625,-93.25302124023438",
null,
"comgooglemaps://?q=37.77650451660156,-122.39203643798828"
]
},
{
"appId":"applemaps",
"script":"function process(url, completionHandler) { var match = RegExp('http(?:s?)://(?:m\\\\.|mobile\\\\.|www\\\\.)?meetup\\\\.com/([a-zA-Z0-9_\\\\-%]+)(?:/.*)?/(\\\\d+).*$').exec(url); var groupIdentifier = match[1]; var eventIdentifier = match[2]; url = 'https://api.meetup.com/' + groupIdentifier + '/events/' + eventIdentifier; var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = JSON.parse(xmlhttp.responseText); if (res['venue'] != null && res['venue']['name'] != null && res['venue']['lat'] != null & res['venue']['lon'] != null) { completionHandler('maps://maps.apple.com/maps?q=' + encodeURIComponent(res['venue']['name']) + '&ll=' + res['venue']['lat'] + ',' + res['venue']['lon']); } else { completionHandler(null); } } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var match = RegExp('http(?:s?)://(?:m\\\\.|mobile\\\\.|www\\\\.)?meetup\\\\.com/([a-zA-Z0-9_\\\\-%]+)(?:/.*)?/(\\\\d+).*$').exec(url); var groupIdentifier = match[1]; var eventIdentifier = match[2]; url = 'https://api.meetup.com/' + groupIdentifier + '/events/' + eventIdentifier; var res = jsonRequest(url); if (res['venue'] != null && res['venue']['name'] != null && res['venue']['lat'] != null & res['venue']['lon'] != null) { completionHandler('maps://maps.apple.com/maps?q=' + encodeURIComponent(res['venue']['name']) + '&ll=' + res['venue']['lat'] + ',' + res['venue']['lon']); } else { completionHandler(null); } }",
"testResults":[
"maps://maps.apple.com/maps?q=Day%20Block%20Event%20Center&ll=44.975250244140625,-93.25302124023438",
null,
"maps://maps.apple.com/maps?q=Lyft&ll=37.77650451660156,-122.39203643798828"
]
},
{
"appId":"waze",
"script":"function process(url, completionHandler) { var match = RegExp('http(?:s?)://(?:m\\\\.|mobile\\\\.|www\\\\.)?meetup\\\\.com/([a-zA-Z0-9_\\\\-%]+)(?:/.*)?/(\\\\d+).*$').exec(url); var groupIdentifier = match[1]; var eventIdentifier = match[2]; url = 'https://api.meetup.com/' + groupIdentifier + '/events/' + eventIdentifier; var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = JSON.parse(xmlhttp.responseText); if (res['venue'] != null && res['venue']['name'] != null && res['venue']['lat'] != null & res['venue']['lon'] != null) { completionHandler('waze://?q=' + encodeURIComponent(res['venue']['name']) + '&ll=' + res['venue']['lat'] + ',' + res['venue']['lon']); } else { completionHandler(null); } } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var match = RegExp('http(?:s?)://(?:m\\\\.|mobile\\\\.|www\\\\.)?meetup\\\\.com/([a-zA-Z0-9_\\\\-%]+)(?:/.*)?/(\\\\d+).*$').exec(url); var groupIdentifier = match[1]; var eventIdentifier = match[2]; url = 'https://api.meetup.com/' + groupIdentifier + '/events/' + eventIdentifier; var res = jsonRequest(url); if (res['venue'] != null && res['venue']['name'] != null && res['venue']['lat'] != null & res['venue']['lon'] != null) { completionHandler('waze://?q=' + encodeURIComponent(res['venue']['name']) + '&ll=' + res['venue']['lat'] + ',' + res['venue']['lon']); } else { completionHandler(null); } }",
"testResults":[
"waze://?q=Day%20Block%20Event%20Center&ll=44.975250244140625,-93.25302124023438",
null,
"waze://?q=Lyft&ll=37.77650451660156,-122.39203643798828"
]
},
{
"appId":"transit",
"script":"function process(url, completionHandler) { var match = RegExp('http(?:s?)://(?:m\\\\.|mobile\\\\.|www\\\\.)?meetup\\\\.com/([a-zA-Z0-9_\\\\-%]+)(?:/.*)?/(\\\\d+).*$').exec(url); var groupIdentifier = match[1]; var eventIdentifier = match[2]; url = 'https://api.meetup.com/' + groupIdentifier + '/events/' + eventIdentifier; var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = JSON.parse(xmlhttp.responseText); if (res['venue'] != null && res['venue']['lat'] != null & res['venue']['lon'] != null) { completionHandler('transit://directions?to=' + res['venue']['lat'] + ',' + res['venue']['lon']); } else { completionHandler(null); } } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var match = RegExp('http(?:s?)://(?:m\\\\.|mobile\\\\.|www\\\\.)?meetup\\\\.com/([a-zA-Z0-9_\\\\-%]+)(?:/.*)?/(\\\\d+).*$').exec(url); var groupIdentifier = match[1]; var eventIdentifier = match[2]; url = 'https://api.meetup.com/' + groupIdentifier + '/events/' + eventIdentifier; var res = jsonRequest(url); if (res['venue'] != null && res['venue']['lat'] != null & res['venue']['lon'] != null) { completionHandler('transit://directions?to=' + res['venue']['lat'] + ',' + res['venue']['lon']); } else { completionHandler(null); } }",
"testResults":[
"transit://directions?to=44.975250244140625,-93.25302124023438",
null,
"transit://directions?to=37.77650451660156,-122.39203643798828"
]
},
{
"appId":"citymapper",
"script":"function process(url, completionHandler) { var match = RegExp('http(?:s?)://(?:m\\\\.|mobile\\\\.|www\\\\.)?meetup\\\\.com/([a-zA-Z0-9_\\\\-%]+)(?:/.*)?/(\\\\d+).*$').exec(url); var groupIdentifier = match[1]; var eventIdentifier = match[2]; url = 'https://api.meetup.com/' + groupIdentifier + '/events/' + eventIdentifier; var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = JSON.parse(xmlhttp.responseText); if (res['venue'] != null && res['venue']['lat'] != null & res['venue']['lon'] != null) { completionHandler('citymapper://x-callback-url/directions?endcoord=' + res['venue']['lat'] + ',' + res['venue']['lon']); } else { completionHandler(null); } } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var match = RegExp('http(?:s?)://(?:m\\\\.|mobile\\\\.|www\\\\.)?meetup\\\\.com/([a-zA-Z0-9_\\\\-%]+)(?:/.*)?/(\\\\d+).*$').exec(url); var groupIdentifier = match[1]; var eventIdentifier = match[2]; url = 'https://api.meetup.com/' + groupIdentifier + '/events/' + eventIdentifier; var res = jsonRequest(url); if (res['venue'] != null && res['venue']['lat'] != null & res['venue']['lon'] != null) { completionHandler('citymapper://x-callback-url/directions?endcoord=' + res['venue']['lat'] + ',' + res['venue']['lon']); } else { completionHandler(null); } }",
"testResults":[
"citymapper://x-callback-url/directions?endcoord=44.975250244140625,-93.25302124023438",
null,
"citymapper://x-callback-url/directions?endcoord=37.77650451660156,-122.39203643798828"
]
}
]
},
{
"title":"Open Poll",
"regex":"https?://(www\\.)?doodle\\.com/(poll/)?([a-z0-9]{16}).*$",
"testInputs":[
"http://doodle.com/bg7qh3q9k44n6vvr",
"http://doodle.com/nq77e46backa2szr",
"http://doodle.com/poll/vi84pz8wcdknmyp7"
],
"formats":[
{
"appId":"doodle",
"format":"doodle://?pollId=$3",
"testResults":[
"doodle://?pollId=bg7qh3q9k44n6vvr",
"doodle://?pollId=nq77e46backa2szr",
"doodle://?pollId=vi84pz8wcdknmyp7"
]
}
]
},
{
"title":"Open Event",
"regex":"https?://(www\\.|m\\.|mobile\\.)stubhub\\.com/(\\S+/)*(\\w+-)*(\\d+).*$",
"testInputs":[
"http://www.stubhub.com/romeo-santos-rosemont-allstate-arena-6-12-2015-9230761/",
"https://www.stubhub.com/death-grips-tickets/death-grips-seattle-the-showbox-6-19-2015-9278341/"
],
"formats":[
{
"appId":"stubhub",
"format":"stubhub://stubhub.com/?event_id=$4",
"testResults":[
"stubhub://stubhub.com/?event_id=9230761",
"stubhub://stubhub.com/?event_id=9278341"
]
}
]
},
{
"title":"Open Event",
"regex":"https?://(www\\.)?goldstar\\.com/events/[a-zA-Z0-9\\-_]+/[a-zA-Z0-9\\-_]+.*$",
"testInputs":[
"https://www.goldstar.com/events/san-diego-ca/lemon-zest-and-garlic-fest-tickets-1"
],
"formats":[
{
"appId":"goldstar",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = xmlhttp.responseText; var match = RegExp('(goldstar://.*?)\"').exec(res)[1]; completionHandler(match); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var match = RegExp('(goldstar://.*?)\"').exec(res)[1]; completionHandler(match); }",
"testResults":[
"goldstar://goldstar.com/events/100763"
]
}
]
},
{
"title":"Open Profile",
"regex":"https?://(?:touch\\.)?(?:\\w+\\.)?linkedin\\.com/(?:(?:.*(?:/|#))?profile/(?:view?.*id=)?(\\d+)|in/([^/]+)).*$",
"testInputs":[
"https://www.linkedin.com/profile/view?id=26225641&authType=name&trk=hp-feed-member-name",
"https://touch.www.linkedin.com/?ai=1&spcon=memberInvite&redirectUrl=%23acceptInvite%2Fundefined%3Fsessionid%3D2033203783139328%26trk%3Deml-comm_invm-b-accept-newinvite%26memberId%3D46675429%26invitationID%3D6079891961110679553%26sharedKey%3DZcu9UEa9&dl=no#profile/2256217/name:93fJ",
"https://www.linkedin.com/in/timonus",
"https://ie.linkedin.com/in/roman-abramenko"
],
"formats":[
{
"appId":"linkedin",
"format":"linkedin://profile/$1$2",
"testResults":[
"linkedin://profile/26225641",
"linkedin://profile/2256217",
"linkedin://profile/timonus",
"linkedin://profile/roman-abramenko"
]
}
]
},
{
"title":"Open Group",
"regex":"https?://(touch\\.)?(\\w+\\.)?linkedin\\.com/([^/]*/)?groups/(\\d+).*$",
"testInputs":[
"https://www.linkedin.com/groups/2366091/profile",
"https://www.linkedin.com/comm/groups/2366091/2366091-6320570575274287105?midToken=AQHsmk9LvK00kw&trk=eml-b2_anet_digest_weekly-group_discussions-16-grouppost%7Edisc%7E0&trkEmail=eml-b2_anet_digest_weekly-group_discussions-16-grouppost%7Edisc%7E0-null-4vfem%7Ej8aeugp2%7E5g-null-communities%7Egroup%7Ediscussion&lipi=urn%3Ali%3Apage%3Aemail_b2_anet_digest_weekly%3Bnh3Bx59KTWifF7LAPNrV2g%3D%3D",
"https://www.linkedin.com/comm/groups/2366091"
],
"formats":[
{
"appId":"linkedin",
"format":"linkedin://groups/$4",
"testResults":[
"linkedin://groups/2366091",
"linkedin://groups/2366091",
"linkedin://groups/2366091"
]
}
]
},
{
"title":"Open Title",
"regex":"https?://(www\\.|m\\.)imdb\\.com/title/(tt\\d+).*$",
"testInputs":[
"http://m.imdb.com/title/tt1285016/?ref_=fn_al_tt_1"
],
"formats":[
{
"appId":"imdb",
"format":"imdb:///title/$2",
"testResults":[
"imdb:///title/tt1285016"
]
}
]
},
{
"title":"Open Chart",
"regex":"https?://(www\\.|m\\.)imdb\\.com/chart/(\\w+).*$",
"testInputs":[
"http://m.imdb.com/chart/bottom"
],
"formats":[
{
"appId":"imdb",
"format":"imdb:///chart/$2",
"testResults":[
"imdb:///chart/bottom"
]
}
]
},
{
"title":"Open Actor",
"regex":"https?://(www\\.|m\\.)imdb\\.com/name/(nm\\d+).*$",
"testInputs":[
"http://m.imdb.com/name/nm0251986/?ref_=m_tt_cl_i1"
],
"formats":[
{
"appId":"imdb",
"format":"imdb:///name/$2",
"testResults":[
"imdb:///name/nm0251986"
]
}
]
},
{
"regex":"https?://(www\\.|m\\.)?strava\\.com/((activities|athletes|segments)/\\d+).*$",
"testInputs":[
"https://www.strava.com/activities/304977054",
"https://www.strava.com/athletes/24752860",
"https://www.strava.com/segments/951992"
],
"formats":[
{
"appId":"strava",
"format":"strava://$2",
"testResults":[
"strava://activities/304977054",
"strava://athletes/24752860",
"strava://segments/951992"
]
}
]
},
{
"title":"Open Run",
"regex":"https?://(www\\.)?runkeeper\\.com/(user/\\w+/activity/\\d+|activity/?.*)",
"testInputs":[
"http://runkeeper.com/user/AhmedAltayeb/activity/622221438",
"http://runkeeper.com/activity?userId=17521263&trip=593152993"
],
"formats":[
{
"appId":"runkeeper",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = xmlhttp.responseText; var match = RegExp('(runkeeper://\\\\?view=activity&tripuuid=(\\\\w+|-)+)').exec(res)[1]; completionHandler(match); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var match = RegExp('(runkeeper://\\\\?view=activity&tripuuid=(\\\\w+|-)+)').exec(res)[1]; completionHandler(match); }",
"testResults":[
"runkeeper://?view=activity&tripuuid=2fa7223f-508e-450f-abe5-9e6c436db151",
"runkeeper://?view=activity&tripuuid=18ff2a03-f397-4376-8c00-ded503b5732f"
]
}
]
},
{
"regex":"https?(://(?!www\\.)(?:([a-zA-Z0-9\\-]+)\\.)(?:\\w+\\.)*wikipedia\\.(?:com|org)/(?:[^/]+/)?(.*))$",
"testInputs":[
"http://www.wikipedia.org/wiki/Bottle_opener",
"http://en.wikipedia.org/wiki/Bottle_opener",
"http://en.m.wikipedia.org/wiki/Soylent",
"https://zh-yue.wikipedia.org/wiki/%E9%96%8B%E4%BF%A1%E5%88%80",
"https://zh.m.wikipedia.org/zh-cn/%E5%90%89%E9%87%8E%E5%AE%B6",
"https://zh.m.wikipedia.org/zh/%E4%B9%A0%E8%BF%91%E5%B9%B3"
],
"formats":[
{
"appId":"wikipedia",
"format":"wikipedia-official$1",
"testResults":[
null,
"wikipedia-official://en.wikipedia.org/wiki/Bottle_opener",
"wikipedia-official://en.m.wikipedia.org/wiki/Soylent",
"wikipedia-official://zh-yue.wikipedia.org/wiki/%E9%96%8B%E4%BF%A1%E5%88%80",
"wikipedia-official://zh.m.wikipedia.org/zh-cn/%E5%90%89%E9%87%8E%E5%AE%B6",
"wikipedia-official://zh.m.wikipedia.org/zh/%E4%B9%A0%E8%BF%91%E5%B9%B3"
]
},
{
"appId":"viki",
"format":"v-for-wiki://article/$2/$3",
"testResults":[
null,
"v-for-wiki://article/en/Bottle_opener",
"v-for-wiki://article/en/Soylent",
"v-for-wiki://article/zh-yue/%E9%96%8B%E4%BF%A1%E5%88%80",
"v-for-wiki://article/zh/%E5%90%89%E9%87%8E%E5%AE%B6",
"v-for-wiki://article/zh/%E4%B9%A0%E8%BF%91%E5%B9%B3"
]
},
{
"appId":"wikilinks",
"script":"function process(url, completion) { url = url.replace(RegExp('\\.org/[^/]+/'), '.org/wiki/'); completion('wikilinks://openwikipediaurl?url=' + encodeURIComponent(btoa(url))); }",
"script2":"function process(url, completion) { url = url.replace(RegExp('\\.org/[^/]+/'), '.org/wiki/'); completion('wikilinks://openwikipediaurl?url=' + encodeURIComponent(btoa(url))); }",
"testResults":[
null,
"wikilinks://openwikipediaurl?url=aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Cb3R0bGVfb3BlbmVy",
"wikilinks://openwikipediaurl?url=aHR0cDovL2VuLm0ud2lraXBlZGlhLm9yZy93aWtpL1NveWxlbnQ%3D",
"wikilinks://openwikipediaurl?url=aHR0cHM6Ly96aC15dWUud2lraXBlZGlhLm9yZy93aWtpLyVFOSU5NiU4QiVFNCVCRiVBMSVFNSU4OCU4MA%3D%3D",
"wikilinks://openwikipediaurl?url=aHR0cHM6Ly96aC5tLndpa2lwZWRpYS5vcmcvd2lraS8lRTUlOTAlODklRTklODclOEUlRTUlQUUlQjY%3D",
"wikilinks://openwikipediaurl?url=aHR0cHM6Ly96aC5tLndpa2lwZWRpYS5vcmcvd2lraS8lRTQlQjklQTAlRTglQkYlOTElRTUlQjklQjM%3D"
]
},
{
"appId":"wikipanion",
"format":"wplink://$2.wikipedia.org/wiki/$3",
"testResults":[
null,
"wplink://en.wikipedia.org/wiki/Bottle_opener",
"wplink://en.wikipedia.org/wiki/Soylent",
"wplink://zh-yue.wikipedia.org/wiki/%E9%96%8B%E4%BF%A1%E5%88%80",
"wplink://zh.wikipedia.org/wiki/%E5%90%89%E9%87%8E%E5%AE%B6",
"wplink://zh.wikipedia.org/wiki/%E4%B9%A0%E8%BF%91%E5%B9%B3"
]
},
{
"appId":"wikipanionpad",
"format":"wplink://$2.wikipedia.org/wiki/$3",
"testResults":[
null,
"wplink://en.wikipedia.org/wiki/Bottle_opener",
"wplink://en.wikipedia.org/wiki/Soylent",
"wplink://zh-yue.wikipedia.org/wiki/%E9%96%8B%E4%BF%A1%E5%88%80",
"wplink://zh.wikipedia.org/wiki/%E5%90%89%E9%87%8E%E5%AE%B6",
"wplink://zh.wikipedia.org/wiki/%E4%B9%A0%E8%BF%91%E5%B9%B3"
]
},
{
"appId":"wonder",
"format":"wonder$1",
"testResults":[
null,
"wonder://en.wikipedia.org/wiki/Bottle_opener",
"wonder://en.m.wikipedia.org/wiki/Soylent",
"wonder://zh-yue.wikipedia.org/wiki/%E9%96%8B%E4%BF%A1%E5%88%80",
"wonder://zh.m.wikipedia.org/zh-cn/%E5%90%89%E9%87%8E%E5%AE%B6",
"wonder://zh.m.wikipedia.org/zh/%E4%B9%A0%E8%BF%91%E5%B9%B3"
]
},
{
"appId":"curiosity",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); var match = RegExp('(http(?:s)?://((?!www\\\\.)(?:([a-zA-Z0-9\\\\-]+)\\\\.)(?:\\\\w+\\\\.)*wikipedia\\\\.(?:com|org)/(?:[^/]+/)?(.*)))$').exec(url); var locale = match[3]; var title = match[4]; url = 'https://' + locale + '.wikipedia.org/w/api.php?action=query&format=json&titles=' + title; xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = JSON.parse(xmlhttp.responseText); var pageid = Object.keys(res['query']['pages'])[0]; completionHandler('curiosity://p/' + locale + '/' + pageid); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var match = RegExp('(http(?:s)?://((?!www\\\\.)(?:([a-zA-Z0-9\\\\-]+)\\\\.)(?:\\\\w+\\\\.)*wikipedia\\\\.(?:com|org)/(?:[^/]+/)?(.*)))$').exec(url); var locale = match[3]; var title = match[4]; url = 'https://' + locale + '.wikipedia.org/w/api.php?action=query&format=json&titles=' + title; var res = jsonRequest(url); var pageid = Object.keys(res['query']['pages'])[0]; completionHandler('curiosity://p/' + locale + '/' + pageid); }",
"testResults":[
null,
"curiosity://p/en/1182550",
"curiosity://p/en/4632863",
"curiosity://p/zh-yue/19584",
"curiosity://p/zh/41419",
"curiosity://p/zh/112582"
]
},
{
"appId":"wikiwand",
"format":"wikiwand-article://$2/$3",
"testResults":[
null,
"wikiwand-article://en/Bottle_opener",
"wikiwand-article://en/Soylent",
"wikiwand-article://zh-yue/%E9%96%8B%E4%BF%A1%E5%88%80",
"wikiwand-article://zh/%E5%90%89%E9%87%8E%E5%AE%B6",
"wikiwand-article://zh/%E4%B9%A0%E8%BF%91%E5%B9%B3"
]
}
]
},
{
"regex":"https?://(?:www\\.)?tamper\\.io/(?:curiosity|inquire)/share.*(?:(?:\\?|&)p=(\\d+).*&l=([a-zA-Z0-9\\-_]+)|(?:\\?|&)l=([a-zA-Z0-9\\-_]+).*&p=(\\d+)).*$",
"testInputs":[
"https://tamper.io/curiosity/share/?p=351344&l=en",
"https://tamper.io/inquire/share/?l=en&p=351344"
],
"formats":[
{
"appId":"wikipedia",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); var match = RegExp('http(?:s)?://(?:www\\\\.)?tamper\\\\.io/(?:curiosity|inquire)/share.*(?:(?:\\\\?|&)p=(\\\\d+).*&l=([a-zA-Z0-9\\\\-_]+)|(?:\\\\?|&)l=([a-zA-Z0-9\\\\-_]+).*&p=(\\\\d+)).*$').exec(url); var locale; if (match[2] != null) { locale = match[2]; } else if (match[3] != null) { locale = match[3]; } var pageid; if (match[1] != null) { pageid = match[1]; } else if (match[4] != null) { pageid = match[4]; } url = 'https://' + locale + '.wikipedia.org/w/api.php?action=query&format=json&pageids=' + pageid; xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = JSON.parse(xmlhttp.responseText); var key = Object.keys(res['query']['pages'])[0]; var title = res['query']['pages'][key]['title']; completionHandler('wikipedia-official://' + locale + '.wikipedia.org/wiki/' + encodeURIComponent(title)); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var match = RegExp('http(?:s)?://(?:www\\\\.)?tamper\\\\.io/(?:curiosity|inquire)/share.*(?:(?:\\\\?|&)p=(\\\\d+).*&l=([a-zA-Z0-9\\\\-_]+)|(?:\\\\?|&)l=([a-zA-Z0-9\\\\-_]+).*&p=(\\\\d+)).*$').exec(url); var locale; if (match[2] != null) { locale = match[2]; } else if (match[3] != null) { locale = match[3]; } var pageid; if (match[1] != null) { pageid = match[1]; } else if (match[4] != null) { pageid = match[4]; } url = 'https://' + locale + '.wikipedia.org/w/api.php?action=query&format=json&pageids=' + pageid; var res = jsonRequest(url); var key = Object.keys(res['query']['pages'])[0]; var title = res['query']['pages'][key]['title']; completionHandler('wikipedia-official://' + locale + '.wikipedia.org/wiki/' + encodeURIComponent(title)); }",
"testResults":[
"wikipedia-official://en.wikipedia.org/wiki/Noe%20Valley%2C%20San%20Francisco",
"wikipedia-official://en.wikipedia.org/wiki/Noe%20Valley%2C%20San%20Francisco"
]
},
{
"appId":"viki",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); var match = RegExp('http(?:s)?://(?:www\\\\.)?tamper\\\\.io/(?:curiosity|inquire)/share.*(?:(?:\\\\?|&)p=(\\\\d+).*&l=([a-zA-Z0-9\\\\-_]+)|(?:\\\\?|&)l=([a-zA-Z0-9\\\\-_]+).*&p=(\\\\d+)).*$').exec(url); var locale; if (match[2] != null) { locale = match[2]; } else if (match[3] != null) { locale = match[3]; } var pageid; if (match[1] != null) { pageid = match[1]; } else if (match[4] != null) { pageid = match[4]; } url = 'https://' + locale + '.wikipedia.org/w/api.php?action=query&format=json&pageids=' + pageid; xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = JSON.parse(xmlhttp.responseText); var key = Object.keys(res['query']['pages'])[0]; var title = res['query']['pages'][key]['title']; completionHandler('v-for-wiki://article/' + locale + '/' + encodeURIComponent(title)); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var match = RegExp('http(?:s)?://(?:www\\\\.)?tamper\\\\.io/(?:curiosity|inquire)/share.*(?:(?:\\\\?|&)p=(\\\\d+).*&l=([a-zA-Z0-9\\\\-_]+)|(?:\\\\?|&)l=([a-zA-Z0-9\\\\-_]+).*&p=(\\\\d+)).*$').exec(url); var locale; if (match[2] != null) { locale = match[2]; } else if (match[3] != null) { locale = match[3]; } var pageid; if (match[1] != null) { pageid = match[1]; } else if (match[4] != null) { pageid = match[4]; } url = 'https://' + locale + '.wikipedia.org/w/api.php?action=query&format=json&pageids=' + pageid; var res = jsonRequest(url); var key = Object.keys(res['query']['pages'])[0]; var title = res['query']['pages'][key]['title']; completionHandler('v-for-wiki://article/' + locale + '/' + encodeURIComponent(title)); }",
"testResults":[
"v-for-wiki://article/en/Noe%20Valley%2C%20San%20Francisco",
"v-for-wiki://article/en/Noe%20Valley%2C%20San%20Francisco"
]
},
{
"appId":"wikilinks",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); var match = RegExp('http(?:s)?://(?:www\\\\.)?tamper\\\\.io/(?:curiosity|inquire)/share.*(?:(?:\\\\?|&)p=(\\\\d+).*&l=([a-zA-Z0-9\\\\-_]+)|(?:\\\\?|&)l=([a-zA-Z0-9\\\\-_]+).*&p=(\\\\d+)).*$').exec(url); var locale; if (match[2] != null) { locale = match[2]; } else if (match[3] != null) { locale = match[3]; } var pageid; if (match[1] != null) { pageid = match[1]; } else if (match[4] != null) { pageid = match[4]; } url = 'https://' + locale + '.wikipedia.org/w/api.php?action=query&format=json&pageids=' + pageid; xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = JSON.parse(xmlhttp.responseText); var key = Object.keys(res['query']['pages'])[0]; var title = res['query']['pages'][key]['title']; var outURL = 'https://' + locale + '.wikipedia.org/wiki/' + encodeURIComponent(title); completionHandler('wikilinks://openwikipediaurl?url=' + encodeURIComponent(btoa(outURL))); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var match = RegExp('http(?:s)?://(?:www\\\\.)?tamper\\\\.io/(?:curiosity|inquire)/share.*(?:(?:\\\\?|&)p=(\\\\d+).*&l=([a-zA-Z0-9\\\\-_]+)|(?:\\\\?|&)l=([a-zA-Z0-9\\\\-_]+).*&p=(\\\\d+)).*$').exec(url); var locale; if (match[2] != null) { locale = match[2]; } else if (match[3] != null) { locale = match[3]; } var pageid; if (match[1] != null) { pageid = match[1]; } else if (match[4] != null) { pageid = match[4]; } url = 'https://' + locale + '.wikipedia.org/w/api.php?action=query&format=json&pageids=' + pageid; var res = jsonRequest(url); var key = Object.keys(res['query']['pages'])[0]; var title = res['query']['pages'][key]['title']; var outURL = 'https://' + locale + '.wikipedia.org/wiki/' + encodeURIComponent(title); completionHandler('wikilinks://openwikipediaurl?url=' + encodeURIComponent(btoa(outURL))); }",
"testResults":[
"wikilinks://openwikipediaurl?url=aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTm9lJTIwVmFsbGV5JTJDJTIwU2FuJTIwRnJhbmNpc2Nv",
"wikilinks://openwikipediaurl?url=aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTm9lJTIwVmFsbGV5JTJDJTIwU2FuJTIwRnJhbmNpc2Nv"
]
},
{
"appId":"wikipanion",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); var match = RegExp('http(?:s)?://(?:www\\\\.)?tamper\\\\.io/(?:curiosity|inquire)/share.*(?:(?:\\\\?|&)p=(\\\\d+).*&l=([a-zA-Z0-9\\\\-_]+)|(?:\\\\?|&)l=([a-zA-Z0-9\\\\-_]+).*&p=(\\\\d+)).*$').exec(url); var locale; if (match[2] != null) { locale = match[2]; } else if (match[3] != null) { locale = match[3]; } var pageid; if (match[1] != null) { pageid = match[1]; } else if (match[4] != null) { pageid = match[4]; } url = 'https://' + locale + '.wikipedia.org/w/api.php?action=query&format=json&pageids=' + pageid; xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = JSON.parse(xmlhttp.responseText); var key = Object.keys(res['query']['pages'])[0]; var title = res['query']['pages'][key]['title']; completionHandler('wplink://' + locale + '.wikipedia.org/wiki/' + encodeURIComponent(title)); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var match = RegExp('http(?:s)?://(?:www\\\\.)?tamper\\\\.io/(?:curiosity|inquire)/share.*(?:(?:\\\\?|&)p=(\\\\d+).*&l=([a-zA-Z0-9\\\\-_]+)|(?:\\\\?|&)l=([a-zA-Z0-9\\\\-_]+).*&p=(\\\\d+)).*$').exec(url); var locale; if (match[2] != null) { locale = match[2]; } else if (match[3] != null) { locale = match[3]; } var pageid; if (match[1] != null) { pageid = match[1]; } else if (match[4] != null) { pageid = match[4]; } url = 'https://' + locale + '.wikipedia.org/w/api.php?action=query&format=json&pageids=' + pageid; var res = jsonRequest(url); var key = Object.keys(res['query']['pages'])[0]; var title = res['query']['pages'][key]['title']; completionHandler('wplink://' + locale + '.wikipedia.org/wiki/' + encodeURIComponent(title)); }",
"testResults":[
"wplink://en.wikipedia.org/wiki/Noe%20Valley%2C%20San%20Francisco",
"wplink://en.wikipedia.org/wiki/Noe%20Valley%2C%20San%20Francisco"
]
},
{
"appId":"wikipanionpad",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); var match = RegExp('http(?:s)?://(?:www\\\\.)?tamper\\\\.io/(?:curiosity|inquire)/share.*(?:(?:\\\\?|&)p=(\\\\d+).*&l=([a-zA-Z0-9\\\\-_]+)|(?:\\\\?|&)l=([a-zA-Z0-9\\\\-_]+).*&p=(\\\\d+)).*$').exec(url); var locale; if (match[2] != null) { locale = match[2]; } else if (match[3] != null) { locale = match[3]; } var pageid; if (match[1] != null) { pageid = match[1]; } else if (match[4] != null) { pageid = match[4]; } url = 'https://' + locale + '.wikipedia.org/w/api.php?action=query&format=json&pageids=' + pageid; xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = JSON.parse(xmlhttp.responseText); var key = Object.keys(res['query']['pages'])[0]; var title = res['query']['pages'][key]['title']; completionHandler('wplink://' + locale + '.wikipedia.org/wiki/' + encodeURIComponent(title)); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var match = RegExp('http(?:s)?://(?:www\\\\.)?tamper\\\\.io/(?:curiosity|inquire)/share.*(?:(?:\\\\?|&)p=(\\\\d+).*&l=([a-zA-Z0-9\\\\-_]+)|(?:\\\\?|&)l=([a-zA-Z0-9\\\\-_]+).*&p=(\\\\d+)).*$').exec(url); var locale; if (match[2] != null) { locale = match[2]; } else if (match[3] != null) { locale = match[3]; } var pageid; if (match[1] != null) { pageid = match[1]; } else if (match[4] != null) { pageid = match[4]; } url = 'https://' + locale + '.wikipedia.org/w/api.php?action=query&format=json&pageids=' + pageid; var res = jsonRequest(url); var key = Object.keys(res['query']['pages'])[0]; var title = res['query']['pages'][key]['title']; completionHandler('wplink://' + locale + '.wikipedia.org/wiki/' + encodeURIComponent(title)); }",
"testResults":[
"wplink://en.wikipedia.org/wiki/Noe%20Valley%2C%20San%20Francisco",
"wplink://en.wikipedia.org/wiki/Noe%20Valley%2C%20San%20Francisco"
]
},
{
"appId":"wonder",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); var match = RegExp('http(?:s)?://(?:www\\\\.)?tamper\\\\.io/(?:curiosity|inquire)/share.*(?:(?:\\\\?|&)p=(\\\\d+).*&l=([a-zA-Z0-9\\\\-_]+)|(?:\\\\?|&)l=([a-zA-Z0-9\\\\-_]+).*&p=(\\\\d+)).*$').exec(url); var locale; if (match[2] != null) { locale = match[2]; } else if (match[3] != null) { locale = match[3]; } var pageid; if (match[1] != null) { pageid = match[1]; } else if (match[4] != null) { pageid = match[4]; } url = 'https://' + locale + '.wikipedia.org/w/api.php?action=query&format=json&pageids=' + pageid; xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = JSON.parse(xmlhttp.responseText); var key = Object.keys(res['query']['pages'])[0]; var title = res['query']['pages'][key]['title']; completionHandler('wonder://' + locale + '.wikipedia.org/wiki/' + encodeURIComponent(title)); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var match = RegExp('http(?:s)?://(?:www\\\\.)?tamper\\\\.io/(?:curiosity|inquire)/share.*(?:(?:\\\\?|&)p=(\\\\d+).*&l=([a-zA-Z0-9\\\\-_]+)|(?:\\\\?|&)l=([a-zA-Z0-9\\\\-_]+).*&p=(\\\\d+)).*$').exec(url); var locale; if (match[2] != null) { locale = match[2]; } else if (match[3] != null) { locale = match[3]; } var pageid; if (match[1] != null) { pageid = match[1]; } else if (match[4] != null) { pageid = match[4]; } url = 'https://' + locale + '.wikipedia.org/w/api.php?action=query&format=json&pageids=' + pageid; var res = jsonRequest(url); var key = Object.keys(res['query']['pages'])[0]; var title = res['query']['pages'][key]['title']; completionHandler('wonder://' + locale + '.wikipedia.org/wiki/' + encodeURIComponent(title)); }",
"testResults":[
"wonder://en.wikipedia.org/wiki/Noe%20Valley%2C%20San%20Francisco",
"wonder://en.wikipedia.org/wiki/Noe%20Valley%2C%20San%20Francisco"
]
},
{
"appId":"curiosity",
"format":"curiosity://p/$2$3/$1$4",
"testResults":[
"curiosity://p/en/351344",
"curiosity://p/en/351344"
]
},
{
"appId":"wikiwand",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); var match = RegExp('http(?:s)?://(?:www\\\\.)?tamper\\\\.io/(?:curiosity|inquire)/share.*(?:(?:\\\\?|&)p=(\\\\d+).*&l=([a-zA-Z0-9\\\\-_]+)|(?:\\\\?|&)l=([a-zA-Z0-9\\\\-_]+).*&p=(\\\\d+)).*$').exec(url); var locale; if (match[2] != null) { locale = match[2]; } else if (match[3] != null) { locale = match[3]; } var pageid; if (match[1] != null) { pageid = match[1]; } else if (match[4] != null) { pageid = match[4]; } url = 'https://' + locale + '.wikipedia.org/w/api.php?action=query&format=json&pageids=' + pageid; xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = JSON.parse(xmlhttp.responseText); var key = Object.keys(res['query']['pages'])[0]; var title = res['query']['pages'][key]['title']; completionHandler('wikiwand-article://' + locale + '/' + encodeURIComponent(title)); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var match = RegExp('http(?:s)?://(?:www\\\\.)?tamper\\\\.io/(?:curiosity|inquire)/share.*(?:(?:\\\\?|&)p=(\\\\d+).*&l=([a-zA-Z0-9\\\\-_]+)|(?:\\\\?|&)l=([a-zA-Z0-9\\\\-_]+).*&p=(\\\\d+)).*$').exec(url); var locale; if (match[2] != null) { locale = match[2]; } else if (match[3] != null) { locale = match[3]; } var pageid; if (match[1] != null) { pageid = match[1]; } else if (match[4] != null) { pageid = match[4]; } url = 'https://' + locale + '.wikipedia.org/w/api.php?action=query&format=json&pageids=' + pageid; var res = jsonRequest(url); var key = Object.keys(res['query']['pages'])[0]; var title = res['query']['pages'][key]['title']; completionHandler('wikiwand-article://' + locale + '/' + encodeURIComponent(title)); }",
"testResults":[
"wikiwand-article://en/Noe%20Valley%2C%20San%20Francisco",
"wikiwand-article://en/Noe%20Valley%2C%20San%20Francisco"
]
}
]
},
{
"regex":"https?(://(?!gist\\.)(\\w+\\.)*github\\.com/.*)",
"formats":[
{
"appId":"github",
"format":"github$1"
}
]
},
{
"regex":"https?(://(\\w+\\.)*github\\.com/.*)",
"formats":[
{
"appId":"ioctocat",
"format":"ioc$1"
},
{
"appId":"codehub",
"format":"codehub$1"
}
]
},
{
"title":"Show Repository",
"regex":"https?://(((?!gist)\\w+\\.)*((github)\\.com|(bitbucket)\\.org|(gitlab)\\.com)/([^/]+)/([^/]+?)(\\.git)?(/?\\?.*$)?)$",
"testInputs":[
"https://github.com/timonus/OpenerManifest/blob/master/.gitignore",
"https://github.com/timonus",
"https://gist.github.com/timonus/717c9b24880167641021",
"https://github.com/timonus/OpenerManifest",
"https://github.com/timonus/OpenerManifest.git",
"http://bitbucket.org/timonus",
"https://bitbucket.org/timonus/configuration/commits/all",
"https://bitbucket.org/timonus/configuration",
"https://bitbucket.org/timonus/configuration.git",
"https://gitlab.com/timonus/",
"https://gitlab.com/timonus/OpenerManifest/commits/master",
"https://gitlab.com/timonus/OpenerManifest"
],
"formats":[
{
"appId":"workingcopy",
"script":"function process(url, completionHandler) { completionHandler('working-copy://show?remote=' + encodeURIComponent(url)); }",
"script2":"function process(url, completionHandler) { completionHandler('working-copy://show?remote=' + encodeURIComponent(url)); }",
"testResults":[
null,
null,
null,
"working-copy://show?remote=https%3A%2F%2Fgithub.com%2Ftimonus%2FOpenerManifest",
"working-copy://show?remote=https%3A%2F%2Fgithub.com%2Ftimonus%2FOpenerManifest.git",
null,
null,
"working-copy://show?remote=https%3A%2F%2Fbitbucket.org%2Ftimonus%2Fconfiguration",
"working-copy://show?remote=https%3A%2F%2Fbitbucket.org%2Ftimonus%2Fconfiguration.git",
null,
null,
"working-copy://show?remote=https%3A%2F%2Fgitlab.com%2Ftimonus%2FOpenerManifest"
]
}
]
},
{
"title":"Show Repository",
"regex":"https?://(?:(?:(?!gist)\\w+\\.)*github\\.com/([^/]+)/([^/]+?)(?:\\.git)?(/(?:pulls|issues))?(?:/tree/([^/]+))?(/?\\?.*$)?)$",
"testInputs":[
"https://github.com/timonus/OpenerManifest/blob/master/.gitignore",
"https://github.com/timonus",
"https://gist.github.com/timonus/717c9b24880167641021",
"https://github.com/timonus/OpenerManifest",
"https://github.com/timonus/OpenerManifest.git",
"http://bitbucket.org/timonus",
"https://bitbucket.org/timonus/configuration/commits/all",
"https://bitbucket.org/timonus/configuration",
"https://bitbucket.org/timonus/configuration.git",
"https://gitlab.com/timonus/",
"https://gitlab.com/timonus/OpenerManifest/commits/master",
"https://gitlab.com/timonus/OpenerManifest",
"https://github.com/timonus/OpenerManifest/tree/ios11",
"https://github.com/timonus/OpenerManifest/pulls",
"https://github.com/timonus/OpenerManifest/issues"
],
"formats":[
{
"appId":"githawk",
"script2":"function process(url, completionHandler) { var results = RegExp('http(?:s)?://(?:(?:(?!gist)\\\\w+\\\\.)*(?:(?:github)\\\\.com)/([^/]+)/([^/]+?)(?:\\\\.git)?(?:/(?:pulls|issues))?(?:/tree/([^/]+))?(?:(?:/)?\\\\?.*$)?)$').exec(url); var result; if (results != null && results.length > 2) { result = 'freetime://RepoRoute?owner=' + results[1] + '&repo=' + results[2] + '&branch='; if (results.length > 3 && results[3] != null) { result = result + results[3]; } else { result = result + 'master'; } } completionHandler(result); }",
"testResults":[
null,
null,
null,
"freetime://RepoRoute?owner=timonus&repo=OpenerManifest&branch=master",
"freetime://RepoRoute?owner=timonus&repo=OpenerManifest&branch=master",
null,
null,
null,
null,
null,
null,
null,
"freetime://RepoRoute?owner=timonus&repo=OpenerManifest&branch=ios11",
"freetime://RepoRoute?owner=timonus&repo=OpenerManifest&branch=master",
"freetime://RepoRoute?owner=timonus&repo=OpenerManifest&branch=master"
]
},
{
"appId":"pphub",
"format":"pphub://repo?owner=$1&repo=$2",
"testResults":[
null,
null,
null,
"pphub://repo?owner=timonus&repo=OpenerManifest",
"pphub://repo?owner=timonus&repo=OpenerManifest",
null,
null,
null,
null,
null,
null,
null,
"pphub://repo?owner=timonus&repo=OpenerManifest",
"pphub://repo?owner=timonus&repo=OpenerManifest",
"pphub://repo?owner=timonus&repo=OpenerManifest"
]
},
{
"appId":"grape",
"format":"grape://repo?reponame=$1/$2",
"testResults":[
null,
null,
null,
"grape://repo?reponame=timonus/OpenerManifest",
"grape://repo?reponame=timonus/OpenerManifest",
null,
null,
null,
null,
null,
null,
null,
"grape://repo?reponame=timonus/OpenerManifest",
"grape://repo?reponame=timonus/OpenerManifest",
"grape://repo?reponame=timonus/OpenerManifest"
]
}
]
},
{
"title":"Open Issue",
"regex":"https?://(?:(?!gist)\\w+\\.)*github\\.com/([^/]+)/([^/]+)/issues/(\\d+).*?$",
"testInputs":[
"https://github.com/GitHawkApp/GitHawk/issues/418"
],
"formats":[
{
"appId":"githawk",
"format":"freetime://IssueRoute?owner=$1&repo=$2&number=$3",
"testResults":[
"freetime://IssueRoute?owner=GitHawkApp&repo=GitHawk&number=418"
]
},
{
"appId":"pphub",
"format":"pphub://issue?owner=$1&repo=$2&number=$3",
"testResults":[
"pphub://issue?owner=GitHawkApp&repo=GitHawk&number=418"
]
},
{
"appId":"grape",
"format":"grape://issue?number=$3&reponame=$1/$2",
"testResults":[
"grape://issue?number=418&reponame=GitHawkApp/GitHawk"
]
}
]
},
{
"title":"View Pull Request",
"regex":"https?://(?:(?!gist)\\w+\\.)*github\\.com/([^/]+)/([^/]+)/pull/(\\d+).*?$",
"testInputs":[
"https://github.com/GitHawkApp/GitHawk/pull/2547"
],
"formats":[
{
"appId":"githawk",
"format":"freetime://IssueRoute?owner=$1&repo=$2&number=$3",
"testResults":[
"freetime://IssueRoute?owner=GitHawkApp&repo=GitHawk&number=2547"
]
},
{
"appId":"pphub",
"format":"pphub://pull?owner=$1&repo=$2&number=$3",
"testResults":[
"pphub://pull?owner=GitHawkApp&repo=GitHawk&number=2547"
]
},
{
"appId":"grape",
"format":"grape://pr?number=$3&reponame=$1/$2",
"testResults":[
"grape://pr?number=2547&reponame=GitHawkApp/GitHawk"
]
}
]
},
{
"title":"View Commit",
"regex":"https?://(?:(?!gist)\\w+\\.)*github\\.com/([^/]+)/([^/]+)/commit/(\\w+).*?$",
"testInputs":[
"https://github.com/timonus/OpenerManifest/commit/857b2b12458c39983636c6ba7d5b1bf7e67b57ef"
],
"formats":[
{
"appId":"grape",
"format":"grape://commit?id=$3&reponame=$1/$2",
"testResults":[
"grape://commit?id=857b2b12458c39983636c6ba7d5b1bf7e67b57ef&reponame=timonus/OpenerManifest"
]
}
]
},
{
"regex":"https?://((\\w+\\.)*((stackoverflow|stackexchange|serverfault|superuser|stackapps)\\.com|mathoverflow\\.net)/.*)",
"testInputs":[
"http://stackoverflow.com/questions/30262509/union-object-acts-like-a-structure"
],
"formats":[
{
"appId":"stackexchange",
"format":"se-zaphod://$1",
"testResults":[
"se-zaphod://stackoverflow.com/questions/30262509/union-object-acts-like-a-structure"
]
}
]
},
{
"regex":"https?://((\\w+\\.)*stackoverflow\\.com/.*)",
"testInputs":[
"http://stackoverflow.com/questions/30262509/union-object-acts-like-a-structure"
],
"formats":[
{
"appId":"stackoverflow",
"format":"com.stackexchange.stackoverflow://$1",
"testResults":[
"com.stackexchange.stackoverflow://stackoverflow.com/questions/30262509/union-object-acts-like-a-structure"
]
}
]
},
{
"regex":"https?://(\\w+\\.)*(stackoverflow\\.com/(users|questions)/(?!tagged/.*).*)",
"testInputs":[
"https://stackoverflow.com/users/3943258/tim-johnsen",
"https://stackoverflow.com/questions/47732387/skproductstorepromotioncontroller-update-methods-not-working/48819111#48819111",
"https://stackoverflow.com/questions/tagged/swiftui"
],
"formats":[
{
"appId":"crew",
"format":"crewforstackoverflow:/$2",
"testResults":[
"crewforstackoverflow:/stackoverflow.com/users/3943258/tim-johnsen",
"crewforstackoverflow:/stackoverflow.com/questions/47732387/skproductstorepromotioncontroller-update-methods-not-working/48819111#48819111",
null
]
}
]
},
{
"regex":"https?://(\\w+\\.)*stackoverflow\\.com/a/\\d+/\\d+",
"testInputs":[
"https://stackoverflow.com/a/57467270/3943258"
],
"formats":[
{
"appId":"crew",
"script2":"function process(url, completionHandler) { var results = RegExp('stackoverflow\\\\.com/a/(\\\\d+)').exec(url); if (results != null && results.length > 1) { var res = jsonRequest('https://api.stackexchange.com/answers/' + results[1] + '?site=stackoverflow'); if (res != null) { res = 'crewforstackoverflow:/stackoverflow.com/questions/' + res['items'][0]['question_id']; } completionHandler(res); } else { completionHandler(null); } }",
"testResults":[
"crewforstackoverflow:/stackoverflow.com/questions/57467003"
]
}
]
},
{
"regex":"https?(://(\\w+\\.)+quora\\.com/.*)$",
"testInputs":[
"http://www.quora.com/What-is-a-coders-worst-nightmare"
],
"formats":[
{
"appId":"quora",
"format":"qhttp$1",
"testResults":[
"qhttp://www.quora.com/What-is-a-coders-worst-nightmare"
]
}
]
},
{
"title":"Open Profile",
"regex":"https?://(www\\.)zhihu\\.com/people/([a-zA-Z0-9_\\-%]+).*$",
"testInputs":[
"http://www.zhihu.com/people/hugo-chan"
],
"formats":[
{
"appId":"zhihu",
"format":"zhihu://people/$2",
"testResults":[
"zhihu://people/hugo-chan"
]
}
]
},
{
"title":"Open Topic",
"regex":"https?://(www\\.)zhihu\\.com/topic/(\\d+).*$",
"testInputs":[
"http://www.zhihu.com/topic/19568161"
],
"formats":[
{
"appId":"zhihu",
"format":"zhihu://topics/$2",
"testResults":[
"zhihu://topics/19568161"
]
}
]
},
{
"title":"Open Question",
"regex":"https?://(www\\.)zhihu\\.com/question/(\\d+)(?!.*/answer/\\d+).*$",
"testInputs":[
"http://www.zhihu.com/question/19907735",
"http://www.zhihu.com/question/21439187/answer/18228340"
],
"formats":[
{
"appId":"zhihu",
"format":"zhihu://questions/$2",
"testResults":[
"zhihu://questions/19907735",
null
]
}
]
},
{
"title":"Open Answer",
"regex":"https?://(www\\.)zhihu\\.com/question/(\\d+)/answer/(\\d+).*$",
"testInputs":[
"http://www.zhihu.com/question/21439187/answer/18228340"
],
"formats":[
{
"appId":"zhihu",
"format":"zhihu://answers/$3",
"testResults":[
"zhihu://answers/18228340"
]
}
]
},
{
"title":"Open Note",
"regex":"https?://(?:www\\.)evernote\\.com/shard/(s\\d+)/nl/(\\d+)/(([:hex:]+-)*[:hex:]+).*?$",
"note":"'private' note type, owned by active user. https://bit.ly/2MsjMSt",
"testInputs":[
"https://www.evernote.com/shard/s69/nl/7633933/e431cabb-3ece-4a8b-9b82-74ff084a788d/"
],
"formats":[
{
"appId":"evernote",
"format":"evernote:///view/$2/$1/$3/$3",
"testResults":[
"evernote:///view/7633933/s69/e431cabb-3ece-4a8b-9b82-74ff084a788d/e431cabb-3ece-4a8b-9b82-74ff084a788d"
]
}
]
},
{
"title":"Open Note",
"regex":"https?://(?:www\\.)evernote\\.com/shard/(s\\d+)/sh/(([:hex:]+-)*[:hex:]+).*?$",
"note":"ONLY works for notes the active user owns, can't open arbitrary notes. User id path component is omitted. https://bit.ly/2MsjMSt",
"testInputs":[
"https://www.evernote.com/shard/s69/sh/e431cabb-3ece-4a8b-9b82-74ff084a788d/b5b1ca28e7d947370a8c8ebb0e81b3e6"
],
"formats":[
{
"appId":"evernote",
"format":"evernote:///view//$1/$2/$2",
"testResults":[
"evernote:///view//s69/e431cabb-3ece-4a8b-9b82-74ff084a788d/e431cabb-3ece-4a8b-9b82-74ff084a788d"
]
}
]
},
{
"title":"Open Document",
"regex":"https?://(\\w+\\.)*quip\\.com/([a-zA-Z0-9]{12}).*$",
"testInputs":[
"https://quip.com/jgBUALiGBjwp",
"https://quip.com/FUkoAicm3jct",
"https://quip.com/FUkoAicm3jct",
"http://quip.com/download",
"http://support.quip.com/entries/81662865-How-do-I-use-memes-in-chat-"
],
"formats":[
{
"appId":"quip",
"format":"quip://$2",
"testResults":[
"quip://jgBUALiGBjwp",
"quip://FUkoAicm3jct",
"quip://FUkoAicm3jct",
null,
null
]
}
]
},
{
"title":"Open Board",
"regex":"https?://(www\\.)?trello\\.com/b/(\\w+).*$",
"testInputs":[
"https://trello.com/b/rq2mYJNn/public-trello-boards"
],
"formats":[
{
"appId":"trello",
"format":"trello://x-callback-url/showBoard?shortlink=$2",
"testResults":[
"trello://x-callback-url/showBoard?shortlink=rq2mYJNn"
]
}
]
},
{
"title":"Open Card",
"regex":"https?://(www\\.)?trello\\.com/c/(\\w+).*$",
"testInputs":[
"https://trello.com/c/ockZMShP"
],
"formats":[
{
"appId":"trello",
"format":"trello://x-callback-url/showCard?shortlink=$2",
"testResults":[
"trello://x-callback-url/showCard?shortlink=ockZMShP"
]
}
]
},
{
"title":"Open Action",
"regex":"https?://(www\\.)?launchcenterpro\\.com/(\\w{6}).*$",
"testInputs":[
"https://launchcenterpro.com/4w666m"
],
"formats":[
{
"appId":"launchcenterpro",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = xmlhttp.responseText; var match = RegExp('(launch://import.*?)\"').exec(res)[1]; completionHandler(match); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var match = RegExp('(launch://import.*?)\"').exec(res)[1]; completionHandler(match); }",
"testResults":[
"launch://import?url=tweetbot%3A%2F%2F%2Fpost%3Ftext%3D%5Bclipboard%5D&title=Tweet%20Text&description="
]
},
{
"appId":"launchcenterproipad",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = xmlhttp.responseText; var match = RegExp('(launch://import.*?)\"').exec(res)[1]; completionHandler(match); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var match = RegExp('(launch://import.*?)\"').exec(res)[1]; completionHandler(match); }",
"testResults":[
"launch://import?url=tweetbot%3A%2F%2F%2Fpost%3Ftext%3D%5Bclipboard%5D&title=Tweet%20Text&description="
]
}
]
},
{
"title":"Open Recipe",
"regex":"https?://(www\\.)?ifttt\\.com/recipes/([0-9]+).*$",
"testInputs":[
"https://ifttt.com/recipes/144705?z=119662",
"https://ifttt.com/recipes/144705-new-twitter-followers-in-a-google-spreadsheet?z=119662"
],
"formats":[
{
"appId":"ifttt",
"format":"ifttt://shared_recipe/$2",
"testResults":[
"ifttt://shared_recipe/144705",
"ifttt://shared_recipe/144705"
]
}
]
},
{
"title":"Add Shortcut",
"regex":"https?://(www\\.)?(workflow\\.is/workflows|icloud\\.com/shortcuts)/([:hex:]+).*$",
"testInputs":[
"https://workflow.is/workflows/304554907e6a473e9e810297509b00c5",
"https://workflow.is/workflows/e37a43302f63402a973af02e7fa8d97e",
"https://www.icloud.com/shortcuts/af75ab777d634a0dbbf0ca67286bb47b"
],
"formats":[
{
"appId":"workflow",
"format":"workflow://shortcuts/$3",
"testResults":[
"workflow://shortcuts/304554907e6a473e9e810297509b00c5",
"workflow://shortcuts/e37a43302f63402a973af02e7fa8d97e",
"workflow://shortcuts/af75ab777d634a0dbbf0ca67286bb47b"
]
}
]
},
{
"regex":"https?://(?:www\\.)?houzz(?:\\.\\w+)+/((?:photos|ideabooks)/(\\d+)).*$",
"testInputs":[
"http://www.houzz.com/photos/31036816/Bay-Collection-King-Bed-by-Talenti-Casa-modern-platform-beds",
"http://www.houzz.com/ideabooks/1198907/list/homeowners-workbook-how-to-remodel-your-kitchen",
"https://www.houzz.ru/ideabooks/75269500?utm_source=Houzz&utm_campaign=u4805&utm_medium=email&utm_content=gallery3&newsletterId=4805"
],
"formats":[
{
"appId":"houzz",
"format":"houzz:///$1",
"testResults":[
"houzz:///photos/31036816",
"houzz:///ideabooks/1198907",
"houzz:///ideabooks/75269500"
]
}
]
},
{
"title":"Open Details",
"regex":"https?://(\\w+\\.)?zillow\\.com/homedetails/.*?(\\d+)_zpid.*$",
"testInputs":[
"http://www.zillow.com/homedetails/7500-SW-144th-St-Palmetto-Bay-FL-33158/44293525_zpid/",
"http://www.zillow.com/homedetails/44293525_zpid/"
],
"formats":[
{
"appId":"zillow",
"format":"zillowapp://hdp/$2",
"testResults":[
"zillowapp://hdp/44293525",
"zillowapp://hdp/44293525"
]
}
]
},
{
"title":"Open Listing",
"regex":"https?://(www\\.)?redfin\\.com/[a-zA-Z]{2}/([a-zA-Z0-9_\\-]+/){0,2}home/(\\d+).*$",
"testInputs":[
"https://www.redfin.com/CA/San-Francisco/1261-Sanchez-St-94114/home/1760516",
"https://www.redfin.com/CA/San-Francisco/home/11743164",
"https://redfin.com/CA/home/11743164"
],
"formats":[
{
"appId":"redfin",
"format":"redfin://home/$3",
"testResults":[
"redfin://home/1760516",
"redfin://home/11743164",
"redfin://home/11743164"
]
}
]
},
{
"title":"Open Listing",
"regex":"https?://(\\w+\\.)?trulia\\.com/property/\\d+.*$",
"formats":[
{
"appId":"trulia",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = xmlhttp.responseText; var match = RegExp('(urlHash=.*?)\"').exec(res)[1]; completionHandler('truliapdpforsale://?' + match); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var match = RegExp('(urlHash=.*?)\"').exec(res)[1]; completionHandler('truliapdpforsale://?' + match); }"
}
]
},
{
"title":"Open Listing",
"regex":"https?://(\\w+\\.)?trulia\\.com/rental(-community)?/\\d+.*$",
"formats":[
{
"appId":"truliarent",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = xmlhttp.responseText; var match = RegExp('(urlHash=.*?)\"').exec(res)[1]; completionHandler('truliapdpforrent://?' + match); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var match = RegExp('(urlHash=.*?)\"').exec(res)[1]; completionHandler('truliapdpforrent://?' + match); }"
}
]
},
{
"title":"Open Illustration",
"regex":"https?(://(?:\\w+\\.)?pixiv\\.net/(?:(?:.+/)?artworks/|member_illust\\.php?.*illust_id=)(\\d+).*)$",
"testInputs":[
"http://www.pixiv.net/member_illust.php?illust_id=18514081&mode=medium",
"https://www.pixiv.net/en/artworks/72321279",
"https://www.pixiv.net/artworks/72321279"
],
"formats":[
{
"appId":"pixiv",
"format":"pixiv://illusts/$2",
"testResults":[
"pixiv://illusts/18514081",
"pixiv://illusts/72321279",
"pixiv://illusts/72321279"
]
},
{
"appId":"pixez",
"format":"pixez$1",
"testResults":[
"pixez://www.pixiv.net/member_illust.php?illust_id=18514081&mode=medium",
"pixez://www.pixiv.net/en/artworks/72321279",
"pixez://www.pixiv.net/artworks/72321279"
]
}
]
},
{
"title":"Open Profile",
"regex":"https?(://(?:\\w+\\.)?pixiv\\.net/(?:(?:.+/)?users/|member\\.php?.*id=)(\\d+).*)$",
"testInputs":[
"http://touch.pixiv.net/member.php?id=395595",
"http://www.pixiv.net/member.php?id=395595",
"https://www.pixiv.net/en/users/395595"
],
"formats":[
{
"appId":"pixiv",
"format":"pixiv://users/$2",
"testResults":[
"pixiv://users/395595",
"pixiv://users/395595",
"pixiv://users/395595"
]
},
{
"appId":"pixez",
"format":"pixez$1",
"testResults":[
"pixez://touch.pixiv.net/member.php?id=395595",
"pixez://www.pixiv.net/member.php?id=395595",
"pixez://www.pixiv.net/en/users/395595"
]
}
]
},
{
"title":"Open Story",
"regex":"https?://(geo\\.)?(apps|itunes)\\.apple\\.com/(.*/)*story/id(\\d+).*$",
"testInputs":[
"https://itunes.apple.com/us/story/id1268017618",
"https://apps.apple.com/story/id1474913423"
],
"formats":[
{
"appId":"appstore",
"format":"itms-apps://itunes.apple.com/story/id$4",
"testResults":[
"itms-apps://itunes.apple.com/story/id1268017618",
"itms-apps://itunes.apple.com/story/id1474913423"
]
}
]
},
{
"title":"View Developer",
"regex":"https?://(geo\\.)?(apps|itunes)\\.apple\\.com/(.*/)*developer/(.*/)?id(\\d+).*$",
"testInputs":[
"https://apps.apple.com/us/developer/matteo-villa/id1376054311",
"https://apps.apple.com/developer/tijo-inc/id332516208",
"https://apps.apple.com/developer/id332516208"
],
"formats":[
{
"appId":"appstore",
"format":"itms-apps://apps.apple.com/developer/id$5",
"testResults":[
"itms-apps://apps.apple.com/developer/id1376054311",
"itms-apps://apps.apple.com/developer/id332516208",
"itms-apps://apps.apple.com/developer/id332516208"
]
}
]
},
{
"title":"View App",
"regex":"https?://(?:geo\\.)?(?:itunes|apps)\\.apple\\.com/(?:.*/)*app/(?:.*/)?id(\\d+).*$",
"testInputs":[
"https://itunes.apple.com/au/app/opener-open-links-in-apps/id989565871?mt=8",
"https://geo.itunes.apple.com/us/app/opener-open-links-in-apps/id989565871",
"https://itunes.apple.com/us/app/things-3/id904280696?mt=12",
"https://apps.apple.com/us/app/hack-for-hacker-news-reader-yc/id1464477788"
],
"formats":[
{
"appId":"appstore",
"script":"function process(url, completionHandler) { var results = RegExp('http(?:s)?://(?:geo\\\\.)?(?:itunes|apps)\\\\.apple\\\\.com/(?:.*/)*app/(?:.*/)?id(\\\\d+).*$').exec(url); var match; if (results != null && results.length > 1) { match = 'itms-apps://itunes.apple.com/app/id' + results[1] + '?at=1001l3kM'; }; completionHandler(match); }",
"script2":"function process(url, completionHandler) { var results = RegExp('http(?:s)?://(?:geo\\\\.)?(?:itunes|apps)\\\\.apple\\\\.com/(?:.*/)*app/(?:.*/)?id(\\\\d+).*$').exec(url); var match = results != null && results.length > 1 ? 'itms-apps://itunes.apple.com/app/id' + results[1] + '?at=1001l3kM' : null; completionHandler(match); }",
"testResults":[
"itms-apps://itunes.apple.com/app/id989565871?at=1001l3kM",
"itms-apps://itunes.apple.com/app/id989565871?at=1001l3kM",
"itms-apps://itunes.apple.com/app/id904280696?at=1001l3kM",
"itms-apps://itunes.apple.com/app/id1464477788?at=1001l3kM"
]
},
{
"appId":"catchapp",
"format":"catchapp://app?id=$1",
"testResults":[
"catchapp://app?id=989565871",
"catchapp://app?id=989565871",
"catchapp://app?id=904280696",
"catchapp://app?id=1464477788"
]
},
{
"appId":"catchapppad",
"format":"catchapp://app?id=$1",
"testResults":[
"catchapp://app?id=989565871",
"catchapp://app?id=989565871",
"catchapp://app?id=904280696",
"catchapp://app?id=1464477788"
]
}
]
},
{
"regex":"https?://(?:geo\\.)?(?:itunes|music)\\.apple\\.com/(?:.*/)*(artist|album|music-video)/(?:.*/)?(?:id)?(\\d+).*?(?:(?:\\?|&)(i=(\\d+)))?.*?$",
"testInputs":[
"https://itunes.apple.com/us/artist/beck/id312095",
"https://itunes.apple.com/us/album/guero/id485498129",
"https://itunes.apple.com/us/album/e-pro/id485498129?i=485498131",
"https://itunes.apple.com/us/music-video/strange-apparition/id194085560",
"https://itunes.apple.com/us/movie/her-2013/id810314926",
"https://itunes.apple.com/us/tv-season/breaking-bad-season-1/id271383858",
"https://itunes.apple.com/us/tv-season/pilot/id271383858?i=271866344",
"https://geo.itunes.apple.com/us/app/opener-open-links-in-apps/id989565871",
"https://itunes.apple.com/us/album/audio-video-disco/470073062",
"https://music.apple.com/us/album/caravelle/1440885023"
],
"formats":[
{
"appId":"itunesstore",
"format":"itms://itunes.apple.com/$1/id$2?at=1001l3kM&$3",
"testResults":[
"itms://itunes.apple.com/artist/id312095?at=1001l3kM&",
"itms://itunes.apple.com/album/id485498129?at=1001l3kM&",
"itms://itunes.apple.com/album/id485498129?at=1001l3kM&i=485498131",
"itms://itunes.apple.com/music-video/id194085560?at=1001l3kM&",
null,
null,
null,
null,
"itms://itunes.apple.com/album/id470073062?at=1001l3kM&",
"itms://itunes.apple.com/album/id1440885023?at=1001l3kM&"
]
},
{
"appId":"applemusic",
"format":"music://itunes.apple.com/$1/id$2?at=1001l3kM&$3",
"testResults":[
"music://itunes.apple.com/artist/id312095?at=1001l3kM&",
"music://itunes.apple.com/album/id485498129?at=1001l3kM&",
"music://itunes.apple.com/album/id485498129?at=1001l3kM&i=485498131",
"music://itunes.apple.com/music-video/id194085560?at=1001l3kM&",
null,
null,
null,
null,
"music://itunes.apple.com/album/id470073062?at=1001l3kM&",
"music://itunes.apple.com/album/id1440885023?at=1001l3kM&"
]
}
]
},
{
"regex":"https?://(geo\\.)?(itunes|music)\\.apple\\.com/(.*/)*(album)/(.*/)?(id)?\\d+.*?((\\?|&)(i=\\d+))?.*?$",
"testInputs":[
"https://itunes.apple.com/us/artist/beck/id312095",
"https://itunes.apple.com/us/album/guero/id485498129",
"https://itunes.apple.com/us/album/e-pro/id485498129?i=485498131",
"https://itunes.apple.com/us/music-video/strange-apparition/id194085560",
"https://itunes.apple.com/us/movie/her-2013/id810314926",
"https://itunes.apple.com/us/tv-season/breaking-bad-season-1/id271383858",
"https://itunes.apple.com/us/tv-season/pilot/id271383858?i=271866344",
"https://geo.itunes.apple.com/us/app/opener-open-links-in-apps/id989565871",
"https://itunes.apple.com/us/album/audio-video-disco/470073062",
"https://music.apple.com/us/album/caravelle/1440885023"
],
"formats":[
{
"appId":"spotify",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['spotify'] != null) { var appURL = res['linksByPlatform']['spotify']['nativeAppUriDesktop']; } completionHandler(appURL); }",
"testResults":[
null,
"spotify:album:2EugWXUZjr78KJFqZavvZT",
"spotify:track:01MBhRpvFkbeRwAp7gcF2W",
null,
null,
null,
null,
null,
null,
"spotify:album:0SuFqlCe5i30Fr75ZlPQVT"
]
},
{
"appId":"youtube",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['youtube'] != null) { var appURL = res['linksByPlatform']['youtube']['url'].replace(RegExp('^.*?\\\\w+://', 'g'), 'vnd.youtube://'); } completionHandler(appURL); }",
"testResults":[
null,
"vnd.youtube://www.youtube.com/playlist?list=PLB862877AF2DB0B89",
"vnd.youtube://www.youtube.com/watch?v=RIrG6xBW5Wk",
null,
null,
null,
null,
null,
null,
"vnd.youtube://www.youtube.com/playlist?list=PLzT5Xiez1FIGfiGeLxA0HlYwpwP3aeMRK"
]
},
{
"appId":"soundcloud",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['soundcloud'] != null) { var entityId = res['linksByPlatform']['soundcloud']['entityUniqueId']; var type; if (entityId.indexOf('SONG') != -1) { type = 'sounds'; } else if (entityId.indexOf('PLAYLIST') != -1) { type = 'playlists'; } if (type != null) { var appURL = 'soundcloud://' + type + ':' + entityId.replace(RegExp('.*_.*::', 'g'), ''); } } completionHandler(appURL); }",
"testResults":[
null,
"soundcloud://playlists:241267239",
"soundcloud://sounds:431801247",
null,
null,
null,
null,
null,
null,
"soundcloud://playlists:324155826"
]
},
{
"appId":"youtubemusic",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['youtube'] != null) { var appURL = res['linksByPlatform']['youtube']['url'].replace(RegExp('^.*?\\\\w+://', 'g'), 'youtubemusic://'); } completionHandler(appURL); }",
"testResults":[
null,
"youtubemusic://www.youtube.com/playlist?list=PLB862877AF2DB0B89",
"youtubemusic://www.youtube.com/watch?v=RIrG6xBW5Wk",
null,
null,
null,
null,
null,
null,
"youtubemusic://www.youtube.com/playlist?list=PLzT5Xiez1FIGfiGeLxA0HlYwpwP3aeMRK"
]
},
{
"appId":"pandora",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['pandora'] != null) { var entityId = res['linksByPlatform']['pandora']['entityUniqueId']; var type; if (entityId.indexOf('SONG') != -1) { type = 'track'; } else if (entityId.indexOf('ALBUM') != -1) { type = 'album'; } if (type != null) { var appURL = 'pandorav4://backstage/' + type + '?pandoraId=' + entityId.replace(RegExp('.*_.*::', 'g'), ''); } } completionHandler(appURL); }",
"testResults":[
null,
"pandorav4://backstage/album?pandoraId=AL:17936",
"pandorav4://backstage/track?pandoraId=TR:239804",
null,
null,
null,
null,
null,
null,
"pandorav4://backstage/album?pandoraId=AL:1103015"
]
},
{
"appId":"amazonmusic",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['amazonMusic'] != null) { var appURL = res['linksByPlatform']['amazonMusic']['url'].replace(RegExp('^.*?\\\\w+/', 'g'), 'amznmp3://'); } completionHandler(appURL); }",
"testResults":[
null,
"amznmp3://albums/B000XNVS7I?do=play",
"amznmp3://albums/B000XNVS7I?trackAsin=B000XNZN1U&do=play",
null,
null,
null,
null,
null,
null,
"amznmp3://albums/B0725JVTB4?do=play"
]
},
{
"appId":"tidal",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['tidal'] != null) { var entityId = res['linksByPlatform']['tidal']['entityUniqueId']; var type; if (entityId.indexOf('SONG') != -1) { type = 'track'; } else if (entityId.indexOf('ALBUM') != -1) { type = 'album'; } if (type != null) { var appURL = 'tidal://' + type + '/' + entityId.replace(RegExp('.*_.*::', 'g'), ''); } } completionHandler(appURL); }",
"testResults":[
null,
"tidal://album/35730523",
"tidal://track/35730524",
null,
null,
null,
null,
null,
null,
"tidal://album/73858363"
]
}
]
},
{
"regex":"https?://(?:geo\\.)?(?:itunes|tv)\\.apple\\.com/(?:.*/)*(movie|tv-season|show)/(?:.*/)?(?:id)?(\\d+).*?(?:(?:\\?|&)(i=(\\d+)))?.*?$",
"testInputs":[
"https://itunes.apple.com/us/artist/beck/id312095",
"https://itunes.apple.com/us/album/guero/id485498129",
"https://itunes.apple.com/us/album/e-pro/id485498129?i=485498131",
"https://itunes.apple.com/us/music-video/strange-apparition/id194085560",
"https://itunes.apple.com/us/movie/her-2013/id810314926",
"https://itunes.apple.com/us/tv-season/breaking-bad-season-1/id271383858",
"https://itunes.apple.com/us/tv-season/pilot/id271383858?i=271866344",
"https://geo.itunes.apple.com/us/app/opener-open-links-in-apps/id989565871",
"https://itunes.apple.com/us/album/audio-video-disco/470073062"
],
"formats":[
{
"appId":"itunesstore",
"format":"itms://itunes.apple.com/$1/id$2?at=1001l3kM&$3",
"testResults":[
null,
null,
null,
null,
"itms://itunes.apple.com/movie/id810314926?at=1001l3kM&",
"itms://itunes.apple.com/tv-season/id271383858?at=1001l3kM&",
"itms://itunes.apple.com/tv-season/id271383858?at=1001l3kM&i=271866344",
null,
null
]
}
]
},
{
"title":"View Book",
"regex":"https?://(?:geo\\.)?(?:itunes|books)\\.apple\\.com/(?:.*/)*(book)/(?:.*/)?(?:id)?(\\d+).*?(?:(?:\\?|&)(i=(\\d+)))?.*?$",
"testInputs":[
"https://itunes.apple.com/book/id1296848713",
"https://books.apple.com/book/id1296848713"
],
"formats":[
{
"appId":"ibooks",
"format":"itms-books://itunes.apple.com/book/id$2?at=1001l3kM&$3",
"testResults":[
"itms-books://itunes.apple.com/book/id1296848713?at=1001l3kM&",
"itms-books://itunes.apple.com/book/id1296848713?at=1001l3kM&"
]
}
]
},
{
"title":"View Audibook",
"regex":"https?://(?:geo\\.)?(?:itunes|books)\\.apple\\.com/(?:.*/)*(audiobook)/(?:.*/)?(?:id)?(\\d+).*?(?:(?:\\?|&)(i=(\\d+)))?.*?$",
"testInputs":[
"https://books.apple.com/us/audiobook/artemis-unabridged/id1299364718",
"http://itunes.apple.com/audiobook/id1299364718"
],
"formats":[
{
"appId":"ibooks",
"format":"itms-books://itunes.apple.com/audiobook/id$2?at=1001l3kM&$3",
"testResults":[
"itms-books://itunes.apple.com/audiobook/id1299364718?at=1001l3kM&",
"itms-books://itunes.apple.com/audiobook/id1299364718?at=1001l3kM&"
]
}
]
},
{
"title":"View Podcast",
"regex":"https?://(?:geo\\.)?(?:itunes|podcasts)\\.apple\\.com/((?:.*/)*(podcast)/(?:.*/)?(?:id)?(\\d+).*?(?:(?:\\?|&)(i=(\\d+)))?.*?)$",
"testInputs":[
"https://podcasts.apple.com/us/podcast/rumble-with-michael-moore/id1490354763#episodeGuid=8c3df791-b5f5-4afd-afbd-3b7c161f97fd",
"https://podcasts.apple.com/us/podcast/rumble-with-michael-moore/id1490354763",
"http://itunes.apple.com/podcast/id1490354763"
],
"formats":[
{
"appId":"applepodcasts",
"format":"podcasts://itunes.apple.com/$1",
"testResults":[
"podcasts://itunes.apple.com/us/podcast/rumble-with-michael-moore/id1490354763#episodeGuid=8c3df791-b5f5-4afd-afbd-3b7c161f97fd",
"podcasts://itunes.apple.com/us/podcast/rumble-with-michael-moore/id1490354763",
"podcasts://itunes.apple.com/podcast/id1490354763"
]
}
]
},
{
"title":"Open Playlist",
"regex":"https?(://(geo\\.)?(itunes|music)\\.apple\\.com/(.*/)?playlist/.*)$",
"testInputs":[
"https://itunes.apple.com/us/playlist/friday/idpl.34d586acfcae4f92ab934a72afbab5bf?at=11lbfLct=friday",
"https://music.apple.com/us/playlist/friday/idpl.34d586acfcae4f92ab934a72afbab5bf?at=11lbfLct=friday"
],
"formats":[
{
"appId":"applemusic",
"format":"music$1",
"testResults":[
"music://itunes.apple.com/us/playlist/friday/idpl.34d586acfcae4f92ab934a72afbab5bf?at=11lbfLct=friday",
"music://music.apple.com/us/playlist/friday/idpl.34d586acfcae4f92ab934a72afbab5bf?at=11lbfLct=friday"
]
}
]
},
{
"title":"View Item",
"regex":"(https?://(?:geo\\.)?(?:itunes|apps|music|books)\\.apple\\.com/(?!(.*/)*(?:story|podcast|developer)/.*)(?:.*/)?id(\\d+).*)$",
"note":"same as blink entry below",
"testInputs":[
"https://itunes.apple.com/au/app/opener-open-links-in-apps/id989565871?mt=8",
"https://itunes.apple.com/us/app/opener-open-links-in-apps/id989565871",
"https://itunes.apple.com/movie/id673500243",
"https://itunes.apple.com/us/movie/drinking-buddies/id673500243",
"https://itunes.apple.com/us/album/almanac/id591108722",
"https://itunes.apple.com/us/artist/widowspeak/id420935735",
"https://itunes.apple.com/us/podcast/death-sex-money/id870688022?i=356350404&mt=2",
"https://geo.itunes.apple.com/us/app/logmyrun/id513718134?mt=8&uo=4&at=11lbfL&ct=twitter",
"https://itunes.apple.com/us/story/id1268017618",
"https://apps.apple.com/developer/id332516208"
],
"formats":[
{
"appId":"lookmark",
"format":"lookmark://add?url=$1",
"testResults":[
"lookmark://add?url=https://itunes.apple.com/au/app/opener-open-links-in-apps/id989565871?mt=8",
"lookmark://add?url=https://itunes.apple.com/us/app/opener-open-links-in-apps/id989565871",
"lookmark://add?url=https://itunes.apple.com/movie/id673500243",
"lookmark://add?url=https://itunes.apple.com/us/movie/drinking-buddies/id673500243",
"lookmark://add?url=https://itunes.apple.com/us/album/almanac/id591108722",
"lookmark://add?url=https://itunes.apple.com/us/artist/widowspeak/id420935735",
null,
"lookmark://add?url=https://geo.itunes.apple.com/us/app/logmyrun/id513718134?mt=8&uo=4&at=11lbfL&ct=twitter",
null,
null
]
}
]
},
{
"regex":"https?://(tv\\.apple\\.com/.+)$",
"docs":"https://twitter.com/devarty/status/1213892785763487745 / https://www.macstories.net/ios/how-to-open-the-apple-tv-front-page-and-individual-shows-directly-in-the-tv-app/",
"testInputs":[
"https://tv.apple.com/show/umc.cmc.6wsi780sz5tdbqcf11k76mkp7",
"https://tv.apple.com/movie/umc.cmc.49wovq1nj958nx4lzr8sj0o8b"
],
"formats":[
{
"appId":"appletv",
"format":"com.apple.tv://$1",
"testResults":[
"com.apple.tv://tv.apple.com/show/umc.cmc.6wsi780sz5tdbqcf11k76mkp7",
"com.apple.tv://tv.apple.com/movie/umc.cmc.49wovq1nj958nx4lzr8sj0o8b"
]
}
]
},
{
"title":"View App",
"regex":"https?://(geo\\.)?(itunes|apps)\\.apple\\.com/(.*/)*app/(.*/)?id(\\d+)(?!.*(&|\\?)mt=12.*).*$",
"testInputs":[
"https://itunes.apple.com/au/app/opener-open-links-in-apps/id989565871?mt=8",
"https://geo.itunes.apple.com/us/app/opener-open-links-in-apps/id989565871",
"https://itunes.apple.com/us/app/things-3/id904280696?mt=12",
"https://apps.apple.com/us/app/hack-for-hacker-news-reader-yc/id1464477788"
],
"formats":[
{
"appId":"wshlst",
"format":"wshlst://$5",
"testResults":[
"wshlst://989565871",
"wshlst://989565871",
null,
"wshlst://1464477788"
]
},
{
"appId":"pricetag",
"format":"pricetag://app?url=https://itunes.apple.com/app/id$5",
"testResults":[
"pricetag://app?url=https://itunes.apple.com/app/id989565871",
"pricetag://app?url=https://itunes.apple.com/app/id989565871",
null,
"pricetag://app?url=https://itunes.apple.com/app/id1464477788"
]
}
]
},
{
"title":"Open Deal",
"regex":"https?://(www\\.)?slickdeals\\.net/f/(\\d+).*$",
"testInputs":[
"http://slickdeals.net/f/8219345-12-month-microsoft-xbox-live-gold-membership-email-delivery-28-94-gamesdeal-com?utm_campaign=167836&utm_medium=fptweet&utm_source=twitter"
],
"formats":[
{
"appId":"slickdeals",
"format":"slickdeals://thread/$2",
"testResults":[
"slickdeals://thread/8219345"
]
}
]
},
{
"title":"Open Story",
"regex":"https?://abcnews\\.go\\.com/.*((\\w+-)|/story.*(\\?|&)id=)+(\\d+).*?$",
"testInputs":[
"http://abcnews.go.com/Politics/wireStory/trump-closing-mosques-35232234",
"http://abcnews.go.com/International/170-people-hostage-mali-hotel/story?id=35319879",
"http://abcnews.go.com/US/wireStory/maryland-student-prompted-closure-campus-found-dead-35348689?utm_medium=twitter&utm_source=twitterfeed"
],
"formats":[
{
"appId":"abcnewsiphone",
"format":"abcnewsiphone://link/story,$4",
"testResults":[
"abcnewsiphone://link/story,35232234",
"abcnewsiphone://link/story,35319879",
"abcnewsiphone://link/story,35348689"
]
}
]
},
{
"regex":"https?://(\\w+\\.)?imgur\\.com/(gallery/|a/|r/.*/)?(\\w+).*?$",
"testInputs":[
"http://m.imgur.com/gallery/UW0KFYQ",
"http://i.imgur.com/Eo1WO0f.jpg",
"http://imgur.com/GxCSO40",
"http://imgur.com/a/q2Isg",
"http://imgur.com/r/funny/hacqrFH"
],
"formats":[
{
"appId":"imgur",
"format":"imgur://imgur.com/$3",
"testResults":[
"imgur://imgur.com/UW0KFYQ",
"imgur://imgur.com/Eo1WO0f",
"imgur://imgur.com/GxCSO40",
"imgur://imgur.com/q2Isg",
"imgur://imgur.com/hacqrFH"
]
}
]
},
{
"title":"View GIF",
"regex":"https?://(\\w+\\.)*giphy\\.com/(gifs|media)/([^/]*).*$",
"note":"Links to channels don't seem to work right now",
"testInputs":[
"https://giphy.com/gifs/pepsisummergram-summer-pepsi-summergram-H6niY8viJQvjYRJ7OD",
"https://giphy.com/channel/closeup",
"https://media.giphy.com/media/3oz8xwNlejeJDQREic/giphy.gif"
],
"formats":[
{
"appId":"giphy",
"format":"giphy://shortcut/gifs/$3",
"testResults":[
"giphy://shortcut/gifs/pepsisummergram-summer-pepsi-summergram-H6niY8viJQvjYRJ7OD",
null,
"giphy://shortcut/gifs/3oz8xwNlejeJDQREic"
]
}
]
},
{
"title":"View GIF",
"regex":"https?://(\\w+\\.)*gfycat\\.com(/amp)?/([^-]*)(-.*)?$",
"testInputs":[
"https://gfycat.com/keyaridcalf",
"https://gfycat.com/amp/keyaridcalf-workaholics-gif"
],
"formats":[
{
"appId":"gfycat",
"format":"gfycat://$3",
"testResults":[
"gfycat://keyaridcalf",
"gfycat://keyaridcalf"
]
}
]
},
{
"title":"Open Issue",
"regex":"https?(://(\\w+\\.)*jira(\\.\\w+)+.*$)",
"testInputs":[
"https://liquibase.jira.com/browse/CORE-2549",
"https://tempoplugin.jira.com/browse/TT-1208",
"https://jira.blah.com/XXX-12"
],
"formats":[
{
"appId":"jira",
"format":"jira$1",
"testResults":[
"jira://liquibase.jira.com/browse/CORE-2549",
"jira://tempoplugin.jira.com/browse/TT-1208",
"jira://jira.blah.com/XXX-12"
]
},
{
"appId":"jirapad",
"format":"jira$1",
"testResults":[
"jira://liquibase.jira.com/browse/CORE-2549",
"jira://tempoplugin.jira.com/browse/TT-1208",
"jira://jira.blah.com/XXX-12"
]
}
]
},
{
"title":"Open Track",
"regex":"https?://(\\w+\\.)*tidal\\.com/(\\#!/|browse/)?track/(\\d+).*$",
"testInputs":[
"http://tidal.com/track/35470518",
"http://tidal.com/#!/track/35470518"
],
"formats":[
{
"appId":"tidal",
"format":"tidal://track/$3",
"testResults":[
"tidal://track/35470518",
"tidal://track/35470518"
]
}
]
},
{
"title":"Open Album",
"regex":"https?://(\\w+\\.)*tidal\\.com/(\\#!/|browse/)?album/(\\d+).*$",
"testInputs":[
"http://tidal.com/album/52690849",
"http://tidal.com/#!/album/52690849"
],
"formats":[
{
"appId":"tidal",
"format":"tidal://album/$3",
"testResults":[
"tidal://album/52690849",
"tidal://album/52690849"
]
}
]
},
{
"title":"Open Artist",
"regex":"https?://(\\w+\\.)*tidal\\.com/(\\#!/|browse/)?artist/(\\d+).*$",
"testInputs":[
"http://tidal.com/artist/6277037",
"http://tidal.com/#!/artist/6277037"
],
"formats":[
{
"appId":"tidal",
"format":"tidal://artist/$3",
"testResults":[
"tidal://artist/6277037",
"tidal://artist/6277037"
]
}
]
},
{
"title":"Open Playlist",
"regex":"https?://(\\w+\\.)*tidal\\.com/(\\#!/|browse/)?playlist/([a-fA-F0-9\\-]+).*$",
"testInputs":[
"http://tidal.com/playlist/548c59ac-8ee4-40f4-8f14-3c510ce3ae42",
"http://tidal.com/#!/playlist/548c59ac-8ee4-40f4-8f14-3c510ce3ae42"
],
"formats":[
{
"appId":"tidal",
"format":"tidal://playlist/$3",
"testResults":[
"tidal://playlist/548c59ac-8ee4-40f4-8f14-3c510ce3ae42",
"tidal://playlist/548c59ac-8ee4-40f4-8f14-3c510ce3ae42"
]
}
]
},
{
"regex":"https?://(\\w+\\.)*tidal\\.com/(#!|browse/)?(track|album)/\\d+.*$",
"testInputs":[
"http://tidal.com/track/35470518",
"http://tidal.com/#!/track/35470518",
"http://tidal.com/album/52690849",
"http://tidal.com/#!/album/52690849"
],
"formats":[
{
"appId":"spotify",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url.replace('/#!/', '/')); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['spotify'] != null) { var appURL = res['linksByPlatform']['spotify']['nativeAppUriDesktop']; } completionHandler(appURL); }",
"testResults":[
"spotify:track:5d8yMIlqJH78lwOUP7T3oF",
"spotify:track:5d8yMIlqJH78lwOUP7T3oF",
"spotify:album:3w89H5OyFoYB0y4FAaLXJW",
"spotify:album:3w89H5OyFoYB0y4FAaLXJW"
]
},
{
"appId":"applemusic",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url.replace('/#!/', '/')); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['appleMusic'] != null) { var appURL = res['linksByPlatform']['appleMusic']['nativeAppUriMobile']; } completionHandler(appURL); }",
"testResults":[
"music://itunes.apple.com/us/album/_/1471264092?i=1471264137&mt=1&app=music&at=1000lHKX",
"music://itunes.apple.com/us/album/_/1471264092?i=1471264137&mt=1&app=music&at=1000lHKX",
"music://itunes.apple.com/us/album/_/1050261035?mt=1&app=music&at=1000lHKX",
"music://itunes.apple.com/us/album/_/1050261035?mt=1&app=music&at=1000lHKX"
]
},
{
"appId":"itunesstore",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url.replace('/#!/', '/')); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['itunes'] != null) { var appURL = res['linksByPlatform']['itunes']['nativeAppUriMobile']; } completionHandler(appURL); }",
"testResults":[
"itmss://itunes.apple.com/us/album/_/1471264092?i=1471264137&mt=1&app=itunes&at=1000lHKX",
"itmss://itunes.apple.com/us/album/_/1471264092?i=1471264137&mt=1&app=itunes&at=1000lHKX",
"itmss://itunes.apple.com/us/album/_/1050261035?mt=1&app=itunes&at=1000lHKX",
"itmss://itunes.apple.com/us/album/_/1050261035?mt=1&app=itunes&at=1000lHKX"
]
},
{
"appId":"youtube",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url.replace('/#!/', '/')); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['youtube'] != null) { var appURL = res['linksByPlatform']['youtube']['url'].replace(RegExp('^.*?\\\\w+://', 'g'), 'vnd.youtube://'); } completionHandler(appURL); }",
"testResults":[
"vnd.youtube://www.youtube.com/watch?v=NWUtG6UQeGQ",
"vnd.youtube://www.youtube.com/watch?v=NWUtG6UQeGQ",
null,
null
]
},
{
"appId":"soundcloud",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url.replace('/#!/', '/')); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['soundcloud'] != null) { var entityId = res['linksByPlatform']['soundcloud']['entityUniqueId']; var type; if (entityId.indexOf('SONG') != -1) { type = 'sounds'; } else if (entityId.indexOf('PLAYLIST') != -1) { type = 'playlists'; } if (type != null) { var appURL = 'soundcloud://' + type + ':' + entityId.replace(RegExp('.*_.*::', 'g'), ''); } } completionHandler(appURL); }",
"testResults":[
null,
null,
null,
null
]
},
{
"appId":"youtubemusic",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['youtube'] != null) { var appURL = res['linksByPlatform']['youtube']['url'].replace(RegExp('^.*?\\\\w+://', 'g'), 'youtubemusic://'); } completionHandler(appURL); }",
"testResults":[
"youtubemusic://www.youtube.com/watch?v=NWUtG6UQeGQ",
"youtubemusic://www.youtube.com/watch?v=NWUtG6UQeGQ",
null,
null
]
},
{
"appId":"pandora",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url.replace('/#!/', '/')); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['pandora'] != null) { var entityId = res['linksByPlatform']['pandora']['entityUniqueId']; var type; if (entityId.indexOf('SONG') != -1) { type = 'track'; } else if (entityId.indexOf('ALBUM') != -1) { type = 'album'; } if (type != null) { var appURL = 'pandorav4://backstage/' + type + '?pandoraId=' + entityId.replace(RegExp('.*_.*::', 'g'), ''); } } completionHandler(appURL); }",
"testResults":[
"pandorav4://backstage/track?pandoraId=TR:5547565",
"pandorav4://backstage/track?pandoraId=TR:5547565",
"pandorav4://backstage/album?pandoraId=AL:563332",
"pandorav4://backstage/album?pandoraId=AL:563332"
]
},
{
"appId":"amazonmusic",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url.replace('/#!/', '/')); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['amazonMusic'] != null) { var appURL = res['linksByPlatform']['amazonMusic']['url'].replace(RegExp('^.*?\\\\w+/', 'g'), 'amznmp3://'); } completionHandler(appURL); }",
"testResults":[
"amznmp3://albums/B00BYOQFEG?trackAsin=B00BYOQNA2&do=play",
"amznmp3://albums/B00BYOQFEG?trackAsin=B00BYOQNA2&do=play",
"amznmp3://albums/B016SHDVJ0?do=play",
"amznmp3://albums/B016SHDVJ0?do=play"
]
}
]
},
{
"regex":"https?(://(\\w+\\.)*(taobao|tmall)\\.com/.*)$",
"testInputs":[
"http://m.intl.taobao.com/detail/detail.html?spm=a214x.7681957.1998488803.3&id=522074348531",
"http://shop111126855.m.taobao.com/?spm=a21dc.35706.88393.2&cpp=0",
"http://h5.m.taobao.com/awp/core/detail.htm?id=522077715729&toSite=main",
"http://m.intl.taobao.com/detail/detail.html?plg_nld=1&plg_nld=1&scene=taobao_shop&id=40369149149&plg_auth=1&spm=a1z10.4-b.w5003-12621784871.3.xyscQW&plg_dev=1&plg_uin=1&plg_usr=1&plg_vkey=1&sku_properties=1627207:130164",
"https://detail.m.tmall.com/item.htm?plg_nld=1&plg_nld=1&scene=taobao_shop&id=40369149149&plg_auth=1&spm=a1z10.4-b.w5003-12621784871.3.xyscQW&plg_dev=1&plg_uin=1&plg_usr=1&plg_vkey=1&sku_properties=1627207:130164"
],
"formats":[
{
"appId":"taobao",
"format":"taobao$1",
"testResults":[
"taobao://m.intl.taobao.com/detail/detail.html?spm=a214x.7681957.1998488803.3&id=522074348531",
"taobao://shop111126855.m.taobao.com/?spm=a21dc.35706.88393.2&cpp=0",
"taobao://h5.m.taobao.com/awp/core/detail.htm?id=522077715729&toSite=main",
"taobao://m.intl.taobao.com/detail/detail.html?plg_nld=1&plg_nld=1&scene=taobao_shop&id=40369149149&plg_auth=1&spm=a1z10.4-b.w5003-12621784871.3.xyscQW&plg_dev=1&plg_uin=1&plg_usr=1&plg_vkey=1&sku_properties=1627207:130164",
"taobao://detail.m.tmall.com/item.htm?plg_nld=1&plg_nld=1&scene=taobao_shop&id=40369149149&plg_auth=1&spm=a1z10.4-b.w5003-12621784871.3.xyscQW&plg_dev=1&plg_uin=1&plg_usr=1&plg_vkey=1&sku_properties=1627207:130164"
]
}
]
},
{
"title":"Open Item",
"regex":"https?://(?:(?:\\w+\\.)*jd\\.(?:com|hk)/(?:.*/)?(\\d+)\\.s?html|(?:\\w+\\.)*jd\\.(?:com|hk)/(?:ware/view\\.action|my/).*(?:wareId|sku)=(\\d+)).*?$",
"testInputs":[
"http://item.jd.com/1057746.html?cpdad=1DLSUE",
"http://item.m.jd.com/product/1057746.html",
"http://m.jd.hk/ware/view.action?wareId=1980390&cachekey=9f0f01741e0e74994b24aa9f2d926387",
"http://re.m.jd.com/cps/item/1042041.html?cu=true&utm_source=www.smzdm.com&utm_medium=tuiguang&utm_campaign=t_4298_ABYH&utm_term=027a328e7fc346c595778325f97249e7",
"http://wqs.jd.com/my/pingou/detail.shtml?platform=2&PTAG=17053.1.1&sku=2481037&activeid=14701057013756&tuanid=1470496965961316295&from=singlemessage&isappinstalled=0",
"http://item.m.jd.com/product/711778.html?sid=a8b237845e1d70f19d888c10b952d6de"
],
"formats":[
{
"appId":"jingdong",
"format":"openapp.jdmobile://virtual?params=%7B%22category%22%3A%22jump%22%2C%22des%22%3A%22productDetail%22%2C%22sourceType%22%3A%22unknown%22%2C%22sourceValue%22%3A%22unknown%22%2C%22skuId%22%3A%22$1$2%22%7D",
"note":"Use of crazy unicode characters above fixed a bug where the %22 was being considered in the replacement $1 (like %22$1) []",
"testResults":[
"openapp.jdmobile://virtual?params=%7B%22category%22%3A%22jump%22%2C%22des%22%3A%22productDetail%22%2C%22sourceType%22%3A%22unknown%22%2C%22sourceValue%22%3A%22unknown%22%2C%22skuId%22%3A%221057746%22%7D",
"openapp.jdmobile://virtual?params=%7B%22category%22%3A%22jump%22%2C%22des%22%3A%22productDetail%22%2C%22sourceType%22%3A%22unknown%22%2C%22sourceValue%22%3A%22unknown%22%2C%22skuId%22%3A%221057746%22%7D",
"openapp.jdmobile://virtual?params=%7B%22category%22%3A%22jump%22%2C%22des%22%3A%22productDetail%22%2C%22sourceType%22%3A%22unknown%22%2C%22sourceValue%22%3A%22unknown%22%2C%22skuId%22%3A%221980390%22%7D",
"openapp.jdmobile://virtual?params=%7B%22category%22%3A%22jump%22%2C%22des%22%3A%22productDetail%22%2C%22sourceType%22%3A%22unknown%22%2C%22sourceValue%22%3A%22unknown%22%2C%22skuId%22%3A%221042041%22%7D",
"openapp.jdmobile://virtual?params=%7B%22category%22%3A%22jump%22%2C%22des%22%3A%22productDetail%22%2C%22sourceType%22%3A%22unknown%22%2C%22sourceValue%22%3A%22unknown%22%2C%22skuId%22%3A%222481037%22%7D",
"openapp.jdmobile://virtual?params=%7B%22category%22%3A%22jump%22%2C%22des%22%3A%22productDetail%22%2C%22sourceType%22%3A%22unknown%22%2C%22sourceValue%22%3A%22unknown%22%2C%22skuId%22%3A%22711778%22%7D"
]
},
{
"appId":"jingdongpad",
"format":"openapp.jdiPad://virtual?params=%7B%22category%22%3A%22jump%22%2C%22des%22%3A%22productDetail%22%2C%22sourceType%22%3A%22unknown%22%2C%22sourceValue%22%3A%22unknown%22%2C%22skuId%22%3A%22$1$2%22%7D",
"testResults":[
"openapp.jdiPad://virtual?params=%7B%22category%22%3A%22jump%22%2C%22des%22%3A%22productDetail%22%2C%22sourceType%22%3A%22unknown%22%2C%22sourceValue%22%3A%22unknown%22%2C%22skuId%22%3A%221057746%22%7D",
"openapp.jdiPad://virtual?params=%7B%22category%22%3A%22jump%22%2C%22des%22%3A%22productDetail%22%2C%22sourceType%22%3A%22unknown%22%2C%22sourceValue%22%3A%22unknown%22%2C%22skuId%22%3A%221057746%22%7D",
"openapp.jdiPad://virtual?params=%7B%22category%22%3A%22jump%22%2C%22des%22%3A%22productDetail%22%2C%22sourceType%22%3A%22unknown%22%2C%22sourceValue%22%3A%22unknown%22%2C%22skuId%22%3A%221980390%22%7D",
"openapp.jdiPad://virtual?params=%7B%22category%22%3A%22jump%22%2C%22des%22%3A%22productDetail%22%2C%22sourceType%22%3A%22unknown%22%2C%22sourceValue%22%3A%22unknown%22%2C%22skuId%22%3A%221042041%22%7D",
"openapp.jdiPad://virtual?params=%7B%22category%22%3A%22jump%22%2C%22des%22%3A%22productDetail%22%2C%22sourceType%22%3A%22unknown%22%2C%22sourceValue%22%3A%22unknown%22%2C%22skuId%22%3A%222481037%22%7D",
"openapp.jdiPad://virtual?params=%7B%22category%22%3A%22jump%22%2C%22des%22%3A%22productDetail%22%2C%22sourceType%22%3A%22unknown%22%2C%22sourceValue%22%3A%22unknown%22%2C%22skuId%22%3A%22711778%22%7D"
]
}
]
},
{
"title":"Open Post",
"regex":"https?://tieba\\.baidu\\.(com|cn)/p/(\\d+).*$",
"testInputs":[
"http://tieba.baidu.com/p/4181204653",
"http://tieba.baidu.cn/p/4181204653"
],
"formats":[
{
"appId":"tieba",
"format":"com.baidu.tieba://jumptoforum?kz=$2",
"testResults":[
"com.baidu.tieba://jumptoforum?kz=4181204653",
"com.baidu.tieba://jumptoforum?kz=4181204653"
]
}
]
},
{
"regex":"https?://(www\\.|m\\.)?vk\\.(com|ru)/(.*)$",
"testInputs":[
"https://vk.com/album-63183658_224587768",
"http://m.vk.com/wall-54066922_1304",
"https://vk.com/album289200099_224760504",
"https://vk.com/advitafound?w=wall-18750533_7762"
],
"formats":[
{
"appId":"vk",
"format":"vk://vk.com/$3",
"testResults":[
"vk://vk.com/album-63183658_224587768",
"vk://vk.com/wall-54066922_1304",
"vk://vk.com/album289200099_224760504",
"vk://vk.com/advitafound?w=wall-18750533_7762"
]
}
]
},
{
"title":"Add Tracking Info",
"regex":"https?://(www\\.|m\\.)?(tools\\.|trkcnfrm\\.smi\\.|trkcnfrm1\\.smi\\.)?usps\\.com.*(\\?|&)(tLabels|strOrigTrackNum|origTrackNum|qtc_tLabels1|formattedLabel)=\\d+.*$",
"formats":[
{
"appId":"deliveries",
"script":"function process(url, completionHandler) { completionHandler('deliveries://add/' + encodeURIComponent(url)); }",
"script2":"function process(url, completionHandler) { completionHandler('deliveries://add/' + encodeURIComponent(url)); }"
}
]
},
{
"title":"Add Tracking Info",
"regex":"https?://(www\\.|m\\.)?(wwwapps\\.|campusship\\.)?ups\\.com.*(\\?|&)(InquiryNumber1|tracknum|trackNums|inquiry1|trackingNumber|InquiryNumber)=\\w+.*$",
"formats":[
{
"appId":"deliveries",
"script":"function process(url, completionHandler) { completionHandler('deliveries://add/' + encodeURIComponent(url)); }",
"script2":"function process(url, completionHandler) { completionHandler('deliveries://add/' + encodeURIComponent(url)); }"
}
]
},
{
"title":"Add Tracking Info",
"regex":"https?://(www\\.|m\\.)?(spportal\\.)?(fedex|federalexpress)\\.com.*(\\?|&)(tracknumbers|tracknums|trackNum|track_number_0|tracknumber_list|TRACKING|PID|trackingnumber|trknbr)=\\d+.*$",
"formats":[
{
"appId":"deliveries",
"script":"function process(url, completionHandler) { completionHandler('deliveries://add/' + encodeURIComponent(url.replace('trknbr', 'trackingnumber'))); }",
"script2":"function process(url, completionHandler) { completionHandler('deliveries://add/' + encodeURIComponent(url.replace('trknbr', 'trackingnumber'))); }"
}
]
},
{
"title":"Add Tracking Info",
"regex":"https?://(www\\.|m\\.)?(track\\.)?(dhl|dhl-usa|airborne)\\.com.*(\\?|&)(AWB|ShipmentNumber|shipmentNumber)=\\d+.*$",
"formats":[
{
"appId":"deliveries",
"script":"function process(url, completionHandler) { completionHandler('deliveries://add/' + encodeURIComponent(url)); }",
"script2":"function process(url, completionHandler) { completionHandler('deliveries://add/' + encodeURIComponent(url)); }"
}
]
},
{
"title":"Add Tracking Info",
"regex":"https?://(www\\.|m\\.)?(webtrack\\.)?(dhlglobalmail\\.com|dhlgm\\.mytracking\\.net).*(\\?|&)(trackingnumber|TrackingID)=\\d+.*$",
"formats":[
{
"appId":"deliveries",
"script":"function process(url, completionHandler) { completionHandler('deliveries://add/' + encodeURIComponent(url)); }",
"script2":"function process(url, completionHandler) { completionHandler('deliveries://add/' + encodeURIComponent(url)); }"
}
]
},
{
"title":"Add Tracking Info",
"regex":"https?://((\\w+\\.)*dhl\\.de|webportal-at\\.dhl\\.com).*(\\?|&)(idc|packet_id|sid|AWB|ic)=\\d+.*$",
"formats":[
{
"appId":"deliveries",
"script":"function process(url, completionHandler) { completionHandler('deliveries://add/' + encodeURIComponent(url)); }",
"script2":"function process(url, completionHandler) { completionHandler('deliveries://add/' + encodeURIComponent(url)); }"
}
]
},
{
"title":"Add Tracking Info",
"regex":"https?://(\\w+\\.)*dhl\\.co\\.uk.*(\\?|&)PCL_NO=\\d+.*$",
"formats":[
{
"appId":"deliveries",
"script":"function process(url, completionHandler) { completionHandler('deliveries://add/' + encodeURIComponent(url)); }",
"script2":"function process(url, completionHandler) { completionHandler('deliveries://add/' + encodeURIComponent(url)); }"
}
]
},
{
"title":"Add Tracking Info",
"regex":"https?://(\\w+\\.)*gls-\\w+(\\.\\w+)+.*(\\?|&)(trackingno|match)=\\d+.*$",
"formats":[
{
"appId":"deliveries",
"script":"function process(url, completionHandler) { completionHandler('deliveries://add/' + encodeURIComponent(url)); }",
"script2":"function process(url, completionHandler) { completionHandler('deliveries://add/' + encodeURIComponent(url)); }"
}
]
},
{
"title":"Add Tracking Info",
"regex":"https?://checkout\\.google\\.com.*(\\?|&)t=\\d+.*$",
"formats":[
{
"appId":"deliveries",
"script":"function process(url, completionHandler) { completionHandler('deliveries://add/' + encodeURIComponent(url)); }",
"script2":"function process(url, completionHandler) { completionHandler('deliveries://add/' + encodeURIComponent(url)); }"
}
]
},
{
"title":"Add Tracking Info",
"regex":"https?://(\\w+\\.)?ontrac\\.com.*(\\?|&)tracking_number=\\w+.*$",
"formats":[
{
"appId":"deliveries",
"script":"function process(url, completionHandler) { completionHandler('deliveries://add/' + encodeURIComponent(url)); }",
"script2":"function process(url, completionHandler) { completionHandler('deliveries://add/' + encodeURIComponent(url)); }"
}
]
},
{
"title":"Add Tracking Info",
"regex":"https?://(www\\.)?(secure\\.|secure1\\.|secure2\\.)?(store\\.)?apple\\.com/.*(?!hk-zh/|jp/)(order/guest/|vieworder/|orderNumberField=|olsson=)\\w+.*$",
"formats":[
{
"appId":"deliveries",
"script":"function process(url, completionHandler) { completionHandler('deliveries://add/' + encodeURIComponent(url)); }",
"script2":"function process(url, completionHandler) { completionHandler('deliveries://add/' + encodeURIComponent(url)); }"
}
]
},
{
"title":"Add Tracking Info",
"regex":"https?://(www\\.)?(secure\\.|secure1\\.|secure2\\.)?(store\\.)?apple\\.com/.*hk-zh(/.*)?(order/guest/|vieworder/|orderNumberField=|olsson=)\\w+.*$",
"formats":[
{
"appId":"deliveries",
"script":"function process(url, completionHandler) { completionHandler('deliveries://add/' + encodeURIComponent(url)); }",
"script2":"function process(url, completionHandler) { completionHandler('deliveries://add/' + encodeURIComponent(url)); }"
}
]
},
{
"title":"Add Tracking Info",
"regex":"https?://(www\\.)?applestore\\.bridge-point\\.com.*(\\?|&)sc=\\w+.*$",
"formats":[
{
"appId":"deliveries",
"script":"function process(url, completionHandler) { completionHandler('deliveries://add/' + encodeURIComponent(url)); }",
"script2":"function process(url, completionHandler) { completionHandler('deliveries://add/' + encodeURIComponent(url)); }"
}
]
},
{
"title":"Add Tracking Info",
"regex":"https?://(\\w+\\.)*(amazon(\\.\\w+)+).*(\\?|&)(trackingNumber|orderId|orderID|oid|orderIDs)=(\\d{3,3}-\\d+-\\d+).*$",
"formats":[
{
"appId":"deliveries",
"script":"function process(url, completionHandler) { completionHandler('deliveries://add/' + encodeURIComponent(url)); }",
"script2":"function process(url, completionHandler) { completionHandler('deliveries://add/' + encodeURIComponent(url)); }"
}
]
},
{
"title":"Open Story",
"regex":"https?://((www\\.)?apple\\.news|news\\.apple\\.com)/([a-zA-Z0-9_\\-]+).*?$",
"testInputs":[
"https://apple.news/A_qfzJD7KTsqhuT5Ci4XcIw",
"https://apple.news/AW5OfgikKQs-rRr_tfTb37w",
"https://apple.news/AKY74NN47QC6Ae4io2CrxmQ",
"https://news.apple.com/AKY74NN47QC6Ae4io2CrxmQ"
],
"formats":[
{
"appId":"applenews",
"format":"applenews:/$3",
"testResults":[
"applenews:/A_qfzJD7KTsqhuT5Ci4XcIw",
"applenews:/AW5OfgikKQs-rRr_tfTb37w",
"applenews:/AKY74NN47QC6Ae4io2CrxmQ",
"applenews:/AKY74NN47QC6Ae4io2CrxmQ"
]
}
]
},
{
"title":"View Other Options",
"regex":"https?://((www\\.)?apple\\.news|news\\.apple\\.com)/[a-zA-Z0-9_\\-]+.*?$",
"testInputs":[
"https://apple.news/A_qfzJD7KTsqhuT5Ci4XcIw",
"https://apple.news/AW5OfgikKQs-rRr_tfTb37w",
"https://apple.news/AKY74NN47QC6Ae4io2CrxmQ",
"https://news.apple.com/AKY74NN47QC6Ae4io2CrxmQ"
],
"formats":[
{
"app":{
"name":"Opener",
"identifier":"applenews-otherapp",
"storeId":989565871,
"scheme":"opener"
},
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('redirectToUrl.*\\\\(\"(.*)\"\\\\)').exec(res); var match = results != null && results.length > 1 ? 'opener://x-callback-url/show-options?url=' + encodeURIComponent(results[1]) : null; completionHandler(match); }",
"testResults":[
"opener://x-callback-url/show-options?url=http%3A%2F%2Fwww.theguardian.com%2Fcommentisfree%2F2015%2Fdec%2F10%2Fcalais-jungle-refugee-camp-volunteer-conditions%3FCMP%3Doth_b-aplnews_d-1",
"opener://x-callback-url/show-options?url=http%3A%2F%2Fwww.chron.com%2Fentertainment%2Fpreview%2Farticle%2FFree-Press-Summer-Fest-favorite-to-return-to-6690333.php",
null,
null
]
}
]
},
{
"title":"Open Restaurant",
"regex":"https?://(?:\\w+\\.)+?opentable(?:\\.\\w+)+(?:/restaurants/.*/(\\d+)|.*rid=(\\d+).*||.*\\n.*er=(\\d+).*)$",
"headers":1,
"testInputs":[
"http://m.opentable.com/restaurants/le-zinc/7644?rid=7644&restref=&ref=",
"http://www.opentable.com/nextavailabletable.aspx?hpu=626690729&shpu=1&cop=1&m=8&d=12%2f12%2f2015+09%3a15%3a00+PM&p=2&rid=52456&mode=singlerest"
],
"notes":"This will also work for http://www.opentable.com/crested-duck-charcuterie and http://www.opentable.co.uk/cocochan, which lack identifiers in their actual URLs but do include them in response headers. Since formats with headers can't be tested, they're omitted at the moment.",
"formats":[
{
"appId":"opentable",
"format":"reservetable-com.contextoptional.OpenTable-1://?rid=$1$2$3",
"testResults":[
"reservetable-com.contextoptional.OpenTable-1://?rid=7644",
"reservetable-com.contextoptional.OpenTable-1://?rid=52456"
]
}
]
},
{
"title":"Open Story",
"regex":"https?://news\\.ycombinator\\.com/item.*(\\?|&)id=(\\d+).*?$",
"testInputs":[
"https://news.ycombinator.com/item?id=10781731"
],
"formats":[
{
"appId":"octal",
"format":"octal://item?id=$2",
"testResults":[
"octal://item?id=10781731"
]
},
{
"appId":"hack",
"format":"hack://item?id=$2",
"testResults":[
"hack://item?id=10781731"
]
}
]
},
{
"title":"Open Profile",
"regex":"https?://news\\.ycombinator\\.com/user.*(\\?|&)id=([^&]+).*?$",
"testInputs":[
"https://news.ycombinator.com/user?id=_jomo",
"https://news.ycombinator.com/user?id=_jomo&blah=blah"
],
"formats":[
{
"appId":"octal",
"format":"octal://user?id=$2",
"testResults":[
"octal://user?id=_jomo",
"octal://user?id=_jomo"
]
},
{
"appId":"hack",
"format":"hack://user?id=$2",
"testResults":[
"hack://user?id=_jomo",
"hack://user?id=_jomo"
]
}
]
},
{
"regex":"https?://news\\.ycombinator\\.com/from.*(\\?|&)site=([^&]+).*?$",
"testInputs":[
"https://news.ycombinator.com/from?site=matrix.org"
],
"formats":[
{
"appId":"hack",
"format":"hack://site?id=$2",
"testResults":[
"hack://site?id=matrix.org"
]
}
]
},
{
"regex":"https?://news\\.ycombinator\\.com/front.*(\\?|&)day=([^&]+).*?$",
"testInputs":[
"https://news.ycombinator.com/front?day=2018-05-10"
],
"formats":[
{
"appId":"hack",
"format":"hack://date?id=$2",
"testResults":[
"hack://date?id=2018-05-10"
]
}
]
},
{
"title":"Open Video",
"regex":"https?://(\\w+\\.)?(nicovideo\\.jp/watch/|nico\\.ms/)((sm)?\\d+).*$",
"testInputs":[
"http://www.nicovideo.jp/watch/sm26814241",
"http://nico.ms/sm15757696",
"http://www.nicovideo.jp/watch/1449636328"
],
"formats":[
{
"appId":"niconico",
"format":"niconico://$3",
"testResults":[
"niconico://sm26814241",
"niconico://sm15757696",
"niconico://1449636328"
]
},
{
"appId":"smileplayer2",
"format":"smileplayer2://id/$3",
"testResults":[
"smileplayer2://id/sm26814241",
"smileplayer2://id/sm15757696",
"smileplayer2://id/1449636328"
]
},
{
"appId":"nicoli",
"format":"nicolihttp://www.nicovideo.jp/watch/$3",
"testResults":[
"nicolihttp://www.nicovideo.jp/watch/sm26814241",
"nicolihttp://www.nicovideo.jp/watch/sm15757696",
"nicolihttp://www.nicovideo.jp/watch/1449636328"
]
},
{
"appId":"inico2",
"format":"inico2http://www.nicovideo.jp/watch/$3",
"testResults":[
"inico2http://www.nicovideo.jp/watch/sm26814241",
"inico2http://www.nicovideo.jp/watch/sm15757696",
"inico2http://www.nicovideo.jp/watch/1449636328"
]
}
]
},
{
"title":"Open Video",
"regex":"https?://(\\w+\\.)?(nicovideo\\.jp/watch/|nico\\.ms/)(so\\d+).*$",
"testInputs":[
"http://www.nicovideo.jp/watch/so26990332",
"http://www.nicovideo.jp/watch/sm26814241"
],
"formats":[
{
"appId":"smileplayer2",
"format":"smileplayer2://id/$3",
"testResults":[
"smileplayer2://id/so26990332",
null
]
},
{
"appId":"nicoli",
"format":"nicolihttp://www.nicovideo.jp/watch/$3",
"testResults":[
"nicolihttp://www.nicovideo.jp/watch/so26990332",
null
]
},
{
"appId":"inico2",
"format":"inico2http://www.nicovideo.jp/watch/$3",
"testResults":[
"inico2http://www.nicovideo.jp/watch/so26990332",
null
]
}
]
},
{
"title":"Open Video",
"regex":"https?://(\\w+\\.)?(nicovideo\\.jp/watch/|nico\\.ms/)(nm\\d+).*$",
"testInputs":[
"http://www.nicovideo.jp/watch/nm6195780"
],
"formats":[
{
"appId":"niconico",
"format":"niconico://$3",
"testResults":[
"niconico://nm6195780"
]
},
{
"appId":"nicoli",
"format":"nicolihttp://www.nicovideo.jp/watch/$3",
"testResults":[
"nicolihttp://www.nicovideo.jp/watch/nm6195780"
]
},
{
"appId":"inico2",
"format":"inico2http://www.nicovideo.jp/watch/$3",
"testResults":[
"inico2http://www.nicovideo.jp/watch/nm6195780"
]
}
]
},
{
"title":"Open Live Video",
"regex":"https?://(\\w+\\.)?(nicovideo\\.jp/watch/|nico\\.ms/)(lv\\d+).*$",
"testInputs":[
"http://nico.ms/lv243491453",
"http://live.nicovideo.jp/watch/lv243491453"
],
"formats":[
{
"appId":"niconico",
"format":"niconico://$3",
"testResults":[
"niconico://lv243491453",
"niconico://lv243491453"
]
}
]
},
{
"regex":"https?(://plus\\.google\\.com/.*)$",
"testInputs":[
"https://plus.google.com/u/0/100711776131865357077",
"https://plus.google.com/u/0/+Flipboard",
"https://plus.google.com/u/0/+timonominus/posts/iB3XwQQ95V8"
],
"formats":[
{
"appId":"googleplus",
"format":"gplus$1",
"testResults":[
"gplus://plus.google.com/u/0/100711776131865357077",
"gplus://plus.google.com/u/0/+Flipboard",
"gplus://plus.google.com/u/0/+timonominus/posts/iB3XwQQ95V8"
]
}
]
},
{
"regex":"https?://(www\\.|m\\.)?(wolframalpha\\.com/input.*)$",
"testInputs":[
"http://www.wolframalpha.com/input/?i=number+of+days+since+january+15+1989",
"http://m.wolframalpha.com/input/?i=number+of+days+since+january+15+1989",
"http://wolframalpha.com/input/?i=number+of+days+since+january+15+1989"
],
"formats":[
{
"appId":"wolframalpha",
"format":"wolframalpha://$2",
"testResults":[
"wolframalpha://wolframalpha.com/input/?i=number+of+days+since+january+15+1989",
"wolframalpha://wolframalpha.com/input/?i=number+of+days+since+january+15+1989",
"wolframalpha://wolframalpha.com/input/?i=number+of+days+since+january+15+1989"
]
}
]
},
{
"title":"Open Story",
"regex":"https?://(www\\.|m\\.|mobile\\.)(nytimes\\.com/\\w+/\\w+/.*)$",
"testInputs":[
"http://www.nytimes.com/2016/01/04/us/politics/bernie-sanders-needing-early-lift-builds-iowa-ground-operation.html?ref=politics",
"https://m.nytimes.com/2016/01/01/us/politics/state-department-hillary-clinton-email.html?ref=topics",
"https://www.nytimes.com/guides/smarterliving/how-to-start-exercising"
],
"formats":[
{
"appId":"nytimes",
"format":"nytimes://www.$2",
"testResults":[
"nytimes://www.nytimes.com/2016/01/04/us/politics/bernie-sanders-needing-early-lift-builds-iowa-ground-operation.html?ref=politics",
"nytimes://www.nytimes.com/2016/01/01/us/politics/state-department-hillary-clinton-email.html?ref=topics",
"nytimes://www.nytimes.com/guides/smarterliving/how-to-start-exercising"
]
}
]
},
{
"title":"Open Task",
"regex":"https?://(\\w+\\.)*asana\\.com/(\\d/\\d+/\\d+.*)$",
"testInputs":[
"https://app.asana.com/0/42994907916648/73995206071709"
],
"formats":[
{
"appId":"asana",
"format":"asana://app.asana.com/$2",
"testResults":[
"asana://app.asana.com/0/42994907916648/73995206071709"
]
}
]
},
{
"title":"Import PDF",
"regex":"(https?://([^?]+(\\.pdf).*))$",
"testInputs":[
"http://www.gnustep.org/resources/OpenStepSpec.pdf"
],
"formats":[
{
"appId":"pdfexpert",
"format":"pdfehttp://$2",
"testResults":[
"pdfehttp://www.gnustep.org/resources/OpenStepSpec.pdf"
]
},
{
"appId":"pdfviewer",
"format":"pdfviewer://x-callback-url/add-file?url=$1",
"testResults":[
"pdfviewer://x-callback-url/add-file?url=http://www.gnustep.org/resources/OpenStepSpec.pdf"
]
},
{
"appId":"goodreader",
"format":"g$1",
"testResults":[
"ghttp://www.gnustep.org/resources/OpenStepSpec.pdf"
]
},
{
"appId":"documents",
"format":"r$1",
"testResults":[
"rhttp://www.gnustep.org/resources/OpenStepSpec.pdf"
]
}
]
},
{
"regex":"https?://(\\w+\\.)?goodreads\\.com/(.*)$",
"testInputs":[
"https://www.goodreads.com/review/show/1514098547"
],
"formats":[
{
"appId":"goodreads",
"format":"goodreads://$2",
"testResults":[
"goodreads://review/show/1514098547"
]
}
]
},
{
"title":"Open Doc",
"regex":"https?(://docs\\.google\\.com/.*document/(u/\\d+/)?d/.*)$",
"testInputs":[
"https://docs.google.com/document/d/1qj9Dws3mDUP830CYWhe2Pf9Qtvy5_WNYXsCR2OQGC6Y/edit?usp=sharing",
"https://docs.google.com/document/u/0/d/1qj9Dws3mDUP830CYWhe2Pf9Qtvy5_WNYXsCR2OQGC6Y/edit?usp=sharing",
"https://docs.google.com/spreadsheets/d/1CsyrNTdFMASIySE0AS6piHIKoKRPHR9V5ctRTg-kilU/edit?usp=sharing",
"https://docs.google.com/spreadsheets/u/1d/1CsyrNTdFMASIySE0AS6piHIKoKRPHR9V5ctRTg-kilU/edit?usp=sharing",
"https://docs.google.com/presentation/d/1CntJ96QwyuQ72EO3Bu58SVyg-Ua1G7-Ev2RJBXDQSUU/edit?usp=sharing",
"https://docs.google.com/presentation/u/2d/1CntJ96QwyuQ72EO3Bu58SVyg-Ua1G7-Ev2RJBXDQSUU/edit?usp=sharing"
],
"formats":[
{
"appId":"googledocs",
"format":"googledocs$1",
"testResults":[
"googledocs://docs.google.com/document/d/1qj9Dws3mDUP830CYWhe2Pf9Qtvy5_WNYXsCR2OQGC6Y/edit?usp=sharing",
"googledocs://docs.google.com/document/u/0/d/1qj9Dws3mDUP830CYWhe2Pf9Qtvy5_WNYXsCR2OQGC6Y/edit?usp=sharing",
null,
null,
null,
null
]
}
]
},
{
"title":"Open Sheet",
"regex":"https?(://docs\\.google\\.com/.*spreadsheets/(u/\\d+/)?d/.*)$",
"testInputs":[
"https://docs.google.com/document/d/1qj9Dws3mDUP830CYWhe2Pf9Qtvy5_WNYXsCR2OQGC6Y/edit?usp=sharing",
"https://docs.google.com/document/u/0d/1qj9Dws3mDUP830CYWhe2Pf9Qtvy5_WNYXsCR2OQGC6Y/edit?usp=sharing",
"https://docs.google.com/spreadsheets/d/1CsyrNTdFMASIySE0AS6piHIKoKRPHR9V5ctRTg-kilU/edit?usp=sharing",
"https://docs.google.com/spreadsheets/u/1/d/1CsyrNTdFMASIySE0AS6piHIKoKRPHR9V5ctRTg-kilU/edit?usp=sharing",
"https://docs.google.com/presentation/d/1CntJ96QwyuQ72EO3Bu58SVyg-Ua1G7-Ev2RJBXDQSUU/edit?usp=sharing",
"https://docs.google.com/presentation/u/2d/1CntJ96QwyuQ72EO3Bu58SVyg-Ua1G7-Ev2RJBXDQSUU/edit?usp=sharing"
],
"formats":[
{
"appId":"googlesheets",
"format":"googlesheets$1",
"testResults":[
null,
null,
"googlesheets://docs.google.com/spreadsheets/d/1CsyrNTdFMASIySE0AS6piHIKoKRPHR9V5ctRTg-kilU/edit?usp=sharing",
"googlesheets://docs.google.com/spreadsheets/u/1/d/1CsyrNTdFMASIySE0AS6piHIKoKRPHR9V5ctRTg-kilU/edit?usp=sharing",
null,
null
]
}
]
},
{
"title":"Open Slides",
"regex":"https?(://docs\\.google\\.com/.*presentation/(u/\\d+/)?d/.*)$",
"testInputs":[
"https://docs.google.com/document/d/1qj9Dws3mDUP830CYWhe2Pf9Qtvy5_WNYXsCR2OQGC6Y/edit?usp=sharing",
"https://docs.google.com/document/u/0d/1qj9Dws3mDUP830CYWhe2Pf9Qtvy5_WNYXsCR2OQGC6Y/edit?usp=sharing",
"https://docs.google.com/spreadsheets/d/1CsyrNTdFMASIySE0AS6piHIKoKRPHR9V5ctRTg-kilU/edit?usp=sharing",
"https://docs.google.com/spreadsheets/u/1d/1CsyrNTdFMASIySE0AS6piHIKoKRPHR9V5ctRTg-kilU/edit?usp=sharing",
"https://docs.google.com/presentation/d/1CntJ96QwyuQ72EO3Bu58SVyg-Ua1G7-Ev2RJBXDQSUU/edit?usp=sharing",
"https://docs.google.com/presentation/u/2/d/1CntJ96QwyuQ72EO3Bu58SVyg-Ua1G7-Ev2RJBXDQSUU/edit?usp=sharing"
],
"formats":[
{
"appId":"googleslides",
"format":"googleslides$1",
"testResults":[
null,
null,
null,
null,
"googleslides://docs.google.com/presentation/d/1CntJ96QwyuQ72EO3Bu58SVyg-Ua1G7-Ev2RJBXDQSUU/edit?usp=sharing",
"googleslides://docs.google.com/presentation/u/2/d/1CntJ96QwyuQ72EO3Bu58SVyg-Ua1G7-Ev2RJBXDQSUU/edit?usp=sharing"
]
}
]
},
{
"title":"Add User",
"regex":"https?://(www\\.)?snapchat\\.com/add/([^/]+).*?$",
"testInputs":[
"https://www.snapchat.com/add/hunterwalk"
],
"formats":[
{
"appId":"snapchat",
"format":"snapchat://add/$2",
"testResults":[
"snapchat://add/hunterwalk"
]
}
]
},
{
"regex":"https?://(www\\.)?snapchat\\.com/unlock(.*)$",
"testInputs":[
"https://www.snapchat.com/unlock/?type=SNAPCODE&uuid=7d61fcc34ad3496f8b58d52211253de3&metadata=1"
],
"formats":[
{
"appId":"snapchat",
"format":"snapchat://unlock$2",
"testResults":[
"snapchat://unlock/?type=SNAPCODE&uuid=7d61fcc34ad3496f8b58d52211253de3&metadata=1"
]
}
]
},
{
"regex":"https?://(www\\.)?snapchat\\.com/discover.*$",
"notes":"Hard to test because Snap adds a bunch of session-specific params to the end. This works for now, a good testing URL is https://www.snapchat.com/discover/The-Verge/0517884694?sc_referrer=None&sc_ua=",
"formats":[
{
"appId":"snapchat",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = xmlhttp.responseText; var results = RegExp('.*(snapchat://.*?)\".*').exec(res); var match; if (results != null && results.length > 1) { match = results[1]; }; completionHandler(match); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('.*(snapchat://.*?)\".*').exec(res); var match = results != null && results.length > 1 ? results[1] : null; completionHandler(match); }"
}
]
},
{
"title":"Add User",
"regex":"https?://(www\\.)?peach\\.cool/add/([^/]+).*?$",
"testInputs":[
"http://peach.cool/add/timonus"
],
"formats":[
{
"appId":"peach",
"format":"peach://add/$2",
"testResults":[
"peach://add/timonus"
]
}
]
},
{
"regex":"https?(://byte\\.co/.*)$",
"testInputs":[
"http://byte.co/timonus",
"https://byte.co/timonus/BOhVuUQzRBU",
"https://byte.co/b/BOhVuUQzRBU"
],
"formats":[
{
"appId":"byte",
"format":"byte$1",
"testResults":[
"byte://byte.co/timonus",
"byte://byte.co/timonus/BOhVuUQzRBU",
"byte://byte.co/b/BOhVuUQzRBU"
]
}
]
},
{
"title":"Open Post",
"regex":"https?://(www\\.)?wear\\.jp/[^/]+/coordinate/(\\d+).*?$",
"testInputs":[
"http://wear.jp/chihirok1215/coordinate/6088645/",
"http://wear.jp/kumikofunayama/coordinate/6086529/?utm_source=twitter&utm_medium=w_aps&utm_campaign=code02_6086529"
],
"formats":[
{
"appId":"wear",
"format":"wear2020://wear.jp/coordinate/$2",
"testResults":[
"wear2020://wear.jp/coordinate/6088645",
"wear2020://wear.jp/coordinate/6086529"
]
}
]
},
{
"title":"Open Story",
"regex":"https?://(\\w+\\.)*media\\.daum\\.net/(m/media/([^/]+/)?newsview/|v/)(\\d+).*?$",
"testInputs":[
"http://m.media.daum.net/m/media/politics/newsview/20160213102546878",
"http://m.media.daum.net/m/media/politics/newsview/20160213063403758",
"http://m.media.daum.net/m/media/newsview/20090423095421323",
"http://v.media.daum.net/v/20160213102546878?f=m"
],
"formats":[
{
"appId":"daum",
"format":"daumapps://web?url=http%3A%2F%2Fv.media.daum.net%2Fv%2F$4%3Ff%3Dm",
"testResults":[
"daumapps://web?url=http%3A%2F%2Fv.media.daum.net%2Fv%2F20160213102546878%3Ff%3Dm",
"daumapps://web?url=http%3A%2F%2Fv.media.daum.net%2Fv%2F20160213063403758%3Ff%3Dm",
"daumapps://web?url=http%3A%2F%2Fv.media.daum.net%2Fv%2F20090423095421323%3Ff%3Dm",
"daumapps://web?url=http%3A%2F%2Fv.media.daum.net%2Fv%2F20160213102546878%3Ff%3Dm"
]
}
]
},
{
"title":"Open Profile",
"regex":"https?://([^\\.]+)\\.deviantart\\.com(?:/?\\?.*|/(gallery/?(\\?.*)?)?)?$",
"testInputs":[
"http://eving-1.deviantart.com/",
"http://eving-1.deviantart.com/gallery",
"http://eving-1.deviantart.com/gallery/",
"http://eving-1.deviantart.com/gallery/?foo=bar",
"http://eving-1.deviantart.com/gallery?foo=bar",
"http://fiookami.deviantart.com/",
"http://eving-1.deviantart.com/art/Girl-and-rain-558640205",
"http://eving-1.deviantart.com/gallery/xyz"
],
"formats":[
{
"appId":"deviantart",
"format":"deviantart://profile/$1",
"testResults":[
"deviantart://profile/eving-1",
"deviantart://profile/eving-1",
"deviantart://profile/eving-1",
"deviantart://profile/eving-1",
"deviantart://profile/eving-1",
"deviantart://profile/fiookami",
null,
null
]
}
]
},
{
"title":"Open Gallery",
"regex":"https?://([^\\.]+)\\.deviantart\\.com/([^/]+/)*gallery/\\d+.*$",
"testInputs":[
"http://daekazu.deviantart.com/gallery/778245/Pink-Sugar",
"https://www.deviantart.com/daekazu/gallery/778245/Pink-Sugar"
],
"formats":[
{
"appId":"deviantart",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = xmlhttp.responseText; var match = RegExp('://gallery/([^\\\"]+)').exec(res)[1]; completionHandler('deviantart://gallery/' + match); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var match = RegExp('://gallery/([^\\\"]+)').exec(res)[1]; completionHandler('deviantart://gallery/' + match); }",
"testResults":[
"deviantart://gallery/daekazu/D70348AB-51C4-4086-088F-BA379308C7EA",
"deviantart://gallery/daekazu/D70348AB-51C4-4086-088F-BA379308C7EA"
]
}
]
},
{
"title":"Open Collection",
"regex":"https?://([^\\.]+)\\.deviantart\\.com/favourites/\\d+.*$",
"testInputs":[
"http://dark-tiramisu.deviantart.com/favourites/67530142/Gravity-Falls?offset=0"
],
"formats":[
{
"appId":"deviantart",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = xmlhttp.responseText; var match = RegExp('://collection/([^\\\"]+)').exec(res)[1]; completionHandler('deviantart://collection/' + match); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var match = RegExp('://collection/([^\\\"]+)').exec(res)[1]; completionHandler('deviantart://collection/' + match); }",
"testResults":[
"deviantart://collection/Dark-Tiramisu/43D895CE-68F8-962A-A949-0A2F261EC497"
]
}
]
},
{
"title":"Open Deviation",
"regex":"https?://(([^\\.]+)\\.deviantart\\.com/(art|journal)/|sta\\.sh/).*$",
"testInputs":[
"http://eving-1.deviantart.com/art/Firewatch-583795685",
"http://cryptid-creations.deviantart.com/journal/Daily-Delayed-564105524",
"http://sta.sh/01d8vjlvsc4a",
"http://eving-1.deviantart.com/",
"http://fiookami.deviantart.com/"
],
"formats":[
{
"appId":"deviantart",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = xmlhttp.responseText; var match = RegExp('://deviation/([^\\\"]+)').exec(res)[1]; completionHandler('deviantart://deviation/' + match); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var match = RegExp('://deviation/([^\\\"]+)').exec(res)[1]; completionHandler('deviantart://deviation/' + match); }",
"testResults":[
"deviantart://deviation/06060A99-62E7-3212-444E-CBB6A82A1B5F",
"deviantart://deviation/478A8090-48B1-8053-37A9-6A696A106980",
"deviantart://deviation/1C8AACC8-600F-73F8-7AF8-208976A9F5F8",
null,
null
]
}
]
},
{
"title":"Open Tag",
"regex":"https?://(\\w+\\.)*deviantart\\.com/tag/([^/]+).*$",
"testInputs":[
"http://www.deviantart.com/tag/firewatch"
],
"formats":[
{
"appId":"deviantart",
"format":"deviantart://tag/$2",
"testResults":[
"deviantart://tag/firewatch"
]
}
]
},
{
"regex":"https?://(www\\.)?(anchor\\.fm/.*)$",
"testInputs":[
"https://anchor.fm/quietonset/episodes/36---Mank--Citizen-Kane--HBOxWarner--The-Mandalorian-enh9o8"
],
"formats":[
{
"appId":"anchor",
"format":"anchorfm://$2",
"testResults":[
"anchorfm://anchor.fm/quietonset/episodes/36---Mank--Citizen-Kane--HBOxWarner--The-Mandalorian-enh9o8"
]
}
]
},
{
"title":"Open Story",
"regex":"https?://(\\w+\\.)*9gag\\.com/gag/([^/]+).*$",
"testInputs":[
"http://m.9gag.com/gag/a97qAPm",
"http://9gag.com/gag/a3BZ4pQ"
],
"formats":[
{
"appId":"9gag",
"format":"ninegag://9gag.com/gag/$2",
"testResults":[
"ninegag://9gag.com/gag/a97qAPm",
"ninegag://9gag.com/gag/a3BZ4pQ"
]
}
]
},
{
"regex":"https?://(\\w+\\.)?tabelog\\.com/(\\w+/){3,4}(\\d+).*?$",
"testInputs":[
"http://s.tabelog.com/tokyo/A1301/A130101/13002260/",
"http://tabelog.com/en/tokyo/A1301/A130101/13002260/"
],
"formats":[
{
"appId":"tabelog",
"format":"tabelog-v2://rstdtl/$3",
"testResults":[
"tabelog-v2://rstdtl/13002260",
"tabelog-v2://rstdtl/13002260"
]
}
]
},
{
"title":"Open Auction",
"regex":"https?://(\\w+\\.)*auctions\\.yahoo\\.co\\.jp(/.*)?/auction/(\\w+).*$",
"testInputs":[
"http://page14.auctions.yahoo.co.jp/jp/auction/s482197065",
"http://page14.auctions.yahoo.co.jp/auction/s482197065"
],
"formats":[
{
"appId":"yahooauctions",
"format":"yjauctions://auctionitem?auctionid=$3",
"testResults":[
"yjauctions://auctionitem?auctionid=s482197065",
"yjauctions://auctionitem?auctionid=s482197065"
]
}
]
},
{
"title":"Open Track",
"regex":"https?://(www\\.)?(soundhound\\.com/?.*t=\\d+.*)$",
"testInputs":[
"http://soundhound.com/?t=100233113174326718",
"https://www.soundhound.com/?foo=bar&t=100233113174326718"
],
"formats":[
{
"appId":"soundhound",
"format":"soundhound://$2",
"testResults":[
"soundhound://soundhound.com/?t=100233113174326718",
"soundhound://soundhound.com/?foo=bar&t=100233113174326718"
]
}
]
},
{
"regex":"https?://([^\\.])+\\.hatenablog(\\.\\w+)+.*$",
"testInputs":[
"http://ko-chanblog.hatenablog.com/entry/2016/04/10/093117",
"http://iphone-news.hatenablog.jp/entry/perfume-instagram-cosmic-explorer",
"http://hmp2.hatenablog.jp/entry/shindafuriBlog",
"http://hmp2.hatenablog.jp/",
"http://hatenablog.jp/"
],
"formats":[
{
"appId":"hatenablog",
"script":"function process(url, completionHandler) { completionHandler('hatenablog:///open?uri=' + encodeURIComponent(url)); }",
"script2":"function process(url, completionHandler) { completionHandler('hatenablog:///open?uri=' + encodeURIComponent(url)); }",
"testResults":[
"hatenablog:///open?uri=http%3A%2F%2Fko-chanblog.hatenablog.com%2Fentry%2F2016%2F04%2F10%2F093117",
"hatenablog:///open?uri=http%3A%2F%2Fiphone-news.hatenablog.jp%2Fentry%2Fperfume-instagram-cosmic-explorer",
"hatenablog:///open?uri=http%3A%2F%2Fhmp2.hatenablog.jp%2Fentry%2FshindafuriBlog",
"hatenablog:///open?uri=http%3A%2F%2Fhmp2.hatenablog.jp%2F",
null
]
}
]
},
{
"title":"Open Story",
"regex":"https?://(\\w+\\.)*thescore\\.com/([^/]+/)?news/(\\d+).*?$",
"testInputs":[
"http://www.thescore.com/nba/news/1003047",
"http://www.thescore.com/news/1003738"
],
"formats":[
{
"appId":"thescore",
"format":"thescore:///news/$3",
"testResults":[
"thescore:///news/1003047",
"thescore:///news/1003738"
]
}
]
},
{
"regex":"https?://(\\w+\\.)*glassdoor\\.com/(.*)$",
"testInputs":[
"https://www.glassdoor.com/Overview/Working-at-Pinterest-EI_IE503467.11,20.htm",
"https://www.glassdoor.com/Reviews/Employee-Review-Flipboard-RVW10328958.htm"
],
"formats":[
{
"appId":"glassdoor",
"format":"glassdoor://$2",
"testResults":[
"glassdoor://Overview/Working-at-Pinterest-EI_IE503467.11,20.htm",
"glassdoor://Reviews/Employee-Review-Flipboard-RVW10328958.htm"
]
}
]
},
{
"title":"Open Chat",
"regex":"https?://(www\\.)?(telegram|t)\\.me/(?!(?i)addstickers)([^/\\?#]+).*$",
"testInputs":[
"https://telegram.me/MacStories",
"http://telegram.me/",
"https://www.telegram.me/?foo=bar",
"https://t.me/MacStories",
"http://t.me/",
"https://www.t.me/?foo=bar",
"https://t.me/addstickers/NickSantini",
"https://telegram.me/addStickers/NickSantini"
],
"formats":[
{
"appId":"telegram",
"format":"tg://resolve?domain=$3",
"testResults":[
"tg://resolve?domain=MacStories",
null,
null,
"tg://resolve?domain=MacStories",
null,
null,
null,
null
]
}
]
},
{
"title":"Add Stickers",
"regex":"https?://(www\\.)?(telegram|t)\\.me/(?i)addstickers/([^/\\?#]+).*$",
"testInputs":[
"https://t.me/addstickers/NickSantini",
"https://telegram.me/addStickers/NickSantini"
],
"formats":[
{
"appId":"telegram",
"format":"tg://addstickers?set=$3",
"testResults":[
"tg://addstickers?set=NickSantini",
"tg://addstickers?set=NickSantini"
]
}
]
},
{
"regex":"https?://(?:\\w+\\.)*mobile01\\.com/(\\w+detail)\\.php\\?(.*)$",
"testInputs":[
"http://www.mobile01.com/topicdetail.php?f=116&t=4824149",
"http://www.mobile01.com/newsdetail.php?id=18806",
"http://www.mobile01.com/topicdetail.php?f=502&t=4774267",
"http://m.mobile01.com/topicdetail.php?f=697&t=4821236"
],
"formats":[
{
"appId":"mobile01",
"format":"m01://$1?$2",
"testResults":[
"m01://topicdetail?f=116&t=4824149",
"m01://newsdetail?id=18806",
"m01://topicdetail?f=502&t=4774267",
"m01://topicdetail?f=697&t=4821236"
]
}
]
},
{
"regex":"https?://(www\\.)?genius\\.com/(\\d+|.*-lyrics|artists/).*$",
"testInputs":[
"https://genius.com/artists/Pouya",
"http://genius.com/Drake-one-dance-lyrics",
"http://genius.com/Gwen-stefani-me-without-you-lyrics",
"http://genius.com/3429394",
"http://genius.com/10006630"
],
"formats":[
{
"appId":"genius",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('(genius://.*?)(?:\"|&)').exec(res); var match = results != null && results.length > 1 ? results[1] : null; completionHandler(match); }",
"testResults":[
"genius://referents/11934000",
"genius://songs/2450584",
"genius://songs/2421134",
"genius://songs/156522",
null
]
}
]
},
{
"regex":"https?://(\\w+\\.)*espn\\.com(\\.\\w+)?/(?!video).*id/(\\d+).*$",
"testInputs":[
"http://www.espn.com/olympics/swimming/story/_/id/17299461/usoc-confirms-ryan-lochte-three-other-us-swimmers-robbed-rio?ex_cid=espntw",
"http://www.espn.com.mx/olimpicos/nota/_/id/2761177",
"http://www.espn.com.mx/video/clip/_/id/2761245",
"http://www.espn.com/olympics/story/_/id/17310907/happened-agony-defeat-ski-jumper",
"http://www.espn.com/espn/now?nowId=21-0557026347680013003-4",
"http://www.espn.com/olympics/swimming/story/_/id/17299461/usoc-confirms-ryan-lochte-three-other-us-swimmers-robbed-rio?ex_cid=espntw",
"http://www.espn.com/mlb/story/_/id/17299647/marlins-giancarlo-stanton-done-year-adam-conley-disabled-list&ex_cid=sportscenterTW?sf33356419=1",
"http://www.espn.com.ar/video/clip/_/id/2761282"
],
"formats":[
{
"appId":"espn",
"format":"sportscenter://x-callback-url/showStory?uid=$3",
"testResults":[
"sportscenter://x-callback-url/showStory?uid=17299461",
"sportscenter://x-callback-url/showStory?uid=2761177",
null,
"sportscenter://x-callback-url/showStory?uid=17310907",
null,
"sportscenter://x-callback-url/showStory?uid=17299461",
"sportscenter://x-callback-url/showStory?uid=17299647",
null
]
}
]
},
{
"title":"Stream Media",
"regex":"(https?://([^/\\s]+)/[^?]+\\.(?i)(mp4|mkv|tp|mov|avi|wmv|asf|flv|ogv|rmvb|mp3|wav|wma|flac|ape|m4v))/?(\\?.*)?$",
"useful":"http://stackoverflow.com/a/27755/3943258",
"testInputs":[
"https://dl.dropboxusercontent.com/s/s6n8yt4bm7z9mur/Opener.mp4",
"http://dl.dropboxusercontent.com/s/s6n8yt4bm7z9mur/Opener.mp4",
"http://dl.dropboxusercontent.com/s/s6n8yt4bm7z9mur/Opener.MP4",
"http://foo.bar.blah?query=mp4",
"http://test.ape",
"http://cache1.cloudflares.xyz:81/download/0771cff9b3e1c18e9f3d92f03b55590e/5b2f0ce4/user209445/129967a9a34e0_mobile.mp4",
"http://mac.homeplex.org/movies/Prep%20&%20Landing.m4v"
],
"formats":[
{
"appId":"nplayer",
"format":"nplayer-$1",
"testResults":[
"nplayer-https://dl.dropboxusercontent.com/s/s6n8yt4bm7z9mur/Opener.mp4",
"nplayer-http://dl.dropboxusercontent.com/s/s6n8yt4bm7z9mur/Opener.mp4",
"nplayer-http://dl.dropboxusercontent.com/s/s6n8yt4bm7z9mur/Opener.MP4",
null,
null,
"nplayer-http://cache1.cloudflares.xyz:81/download/0771cff9b3e1c18e9f3d92f03b55590e/5b2f0ce4/user209445/129967a9a34e0_mobile.mp4",
"nplayer-http://mac.homeplex.org/movies/Prep%20&%20Landing.m4v"
]
}
]
},
{
"title":"Stream Media",
"regex":"(https?://([^/\\s]+)/[^?]+\\.(?i)(mpeg|mp1v|mpg1|PIM1|mp2v|mpg2|vcr2|hdv1|hdv2|hdv3|mx.n|mx.p|DIV1|DIV2|DIV3|mp4|mp41|mp42|MPG4|MPG3|DIV4|DIV5|DIV6|col1|col0|3ivd|DIVX|Xvid|mp4s|m4s2|xvid|mp4v|fmp4|3iv2|smp4|h261|h262|h263|h264|s264|AVC1|DAVC|H264|X264|VSSH|SVQ.|cvid|thra|wmv1|wmv2|wmv3|wvc1|wmva|VP31|VP30|VP3|VP50|VP5|VP51|VP60|VP61|VP62|VP6F|VP6A|VP7|FSV1|IV31|IV32|IV41|IV51|RV10|RV13|RV20|RV30|RV40|BBCD|wmv|mpga|mp3|LAME|mp4a|a52|a52b|atrc|ILBC|Qclp|lpcJ|28_8|dnet|sipr|cook|atrc|raac|racp|ralf|shrn|spex|vorb|ogg|dts|wma|wma1|wma2|flac|alac|samr|SONC|3gp|asf|au|avi|flv|mov|ogm|mkv|mka|ts|mpg|mp2|nsc|nsv|nut|ra|ram|rm|tv|rmbv|a52|dts|aac|dv|vid|tta|tac|ty|wav|dts|xa|webm|m4v|m3u8))/?(\\?.*)?$",
"useful":"http://stackoverflow.com/a/27755/3943258",
"testInputs":[
"https://dl.dropboxusercontent.com/s/s6n8yt4bm7z9mur/Opener.mp4",
"http://foo.bar.blah?query=mp4",
"https://www.periscope.tv/w/arM8XDEzMzk2OHwxZGp4WFlReWRCQktaTiYY1knyfcjDKu8Qy9qnGZOp38aieGbiqYOFImuDn5E=",
"http://tngrm.tv",
"http://cache1.cloudflares.xyz:81/download/0771cff9b3e1c18e9f3d92f03b55590e/5b2f0ce4/user209445/129967a9a34e0_mobile.mp4",
"http://mac.homeplex.org/movies/Prep%20&%20Landing.m4v"
],
"formats":[
{
"appId":"vlc",
"script":"function process(url, completionHandler) { completionHandler('vlc-x-callback://x-callback-url/stream?url=' + encodeURIComponent(url)); }",
"script2":"function process(url, completionHandler) { completionHandler('vlc-x-callback://x-callback-url/stream?url=' + encodeURIComponent(url)); }",
"testResults":[
"vlc-x-callback://x-callback-url/stream?url=https%3A%2F%2Fdl.dropboxusercontent.com%2Fs%2Fs6n8yt4bm7z9mur%2FOpener.mp4",
null,
null,
null,
"vlc-x-callback://x-callback-url/stream?url=http%3A%2F%2Fcache1.cloudflares.xyz%3A81%2Fdownload%2F0771cff9b3e1c18e9f3d92f03b55590e%2F5b2f0ce4%2Fuser209445%2F129967a9a34e0_mobile.mp4",
"vlc-x-callback://x-callback-url/stream?url=http%3A%2F%2Fmac.homeplex.org%2Fmovies%2FPrep%2520%26%2520Landing.m4v"
]
},
{
"appId":"infuse",
"script":"function process(url, completionHandler) { completionHandler('infuse://x-callback-url/play?url=' + encodeURIComponent(url)); }",
"script2":"function process(url, completionHandler) { completionHandler('infuse://x-callback-url/play?url=' + encodeURIComponent(url)); }",
"testResults":[
"infuse://x-callback-url/play?url=https%3A%2F%2Fdl.dropboxusercontent.com%2Fs%2Fs6n8yt4bm7z9mur%2FOpener.mp4",
null,
null,
null,
"infuse://x-callback-url/play?url=http%3A%2F%2Fcache1.cloudflares.xyz%3A81%2Fdownload%2F0771cff9b3e1c18e9f3d92f03b55590e%2F5b2f0ce4%2Fuser209445%2F129967a9a34e0_mobile.mp4",
"infuse://x-callback-url/play?url=http%3A%2F%2Fmac.homeplex.org%2Fmovies%2FPrep%2520%26%2520Landing.m4v"
]
},
{
"appId":"oplayer",
"format":"oplayer://$0",
"testResults":[
"oplayer://https://dl.dropboxusercontent.com/s/s6n8yt4bm7z9mur/Opener.mp4",
null,
null,
null,
"oplayer://http://cache1.cloudflares.xyz:81/download/0771cff9b3e1c18e9f3d92f03b55590e/5b2f0ce4/user209445/129967a9a34e0_mobile.mp4",
"oplayer://http://mac.homeplex.org/movies/Prep%20&%20Landing.m4v"
]
},
{
"appId":"oplayerhd",
"format":"oplayer://$0",
"testResults":[
"oplayer://https://dl.dropboxusercontent.com/s/s6n8yt4bm7z9mur/Opener.mp4",
null,
null,
null,
"oplayer://http://cache1.cloudflares.xyz:81/download/0771cff9b3e1c18e9f3d92f03b55590e/5b2f0ce4/user209445/129967a9a34e0_mobile.mp4",
"oplayer://http://mac.homeplex.org/movies/Prep%20&%20Landing.m4v"
]
},
{
"appId":"oplayerlite",
"format":"oplayerlite://$0",
"testResults":[
"oplayerlite://https://dl.dropboxusercontent.com/s/s6n8yt4bm7z9mur/Opener.mp4",
null,
null,
null,
"oplayerlite://http://cache1.cloudflares.xyz:81/download/0771cff9b3e1c18e9f3d92f03b55590e/5b2f0ce4/user209445/129967a9a34e0_mobile.mp4",
"oplayerlite://http://mac.homeplex.org/movies/Prep%20&%20Landing.m4v"
]
},
{
"appId":"outplayer",
"format":"outplayer://$0",
"testResults":[
"outplayer://https://dl.dropboxusercontent.com/s/s6n8yt4bm7z9mur/Opener.mp4",
null,
null,
null,
"outplayer://http://cache1.cloudflares.xyz:81/download/0771cff9b3e1c18e9f3d92f03b55590e/5b2f0ce4/user209445/129967a9a34e0_mobile.mp4",
"outplayer://http://mac.homeplex.org/movies/Prep%20&%20Landing.m4v"
]
}
]
},
{
"title":"Download Media",
"regex":"(https?://([^/\\s]+)/[^?]+\\.(?i)(mpeg|mp1v|mpg1|PIM1|mp2v|mpg2|vcr2|hdv1|hdv2|hdv3|mx.n|mx.p|DIV1|DIV2|DIV3|mp4|mp41|mp42|MPG4|MPG3|DIV4|DIV5|DIV6|col1|col0|3ivd|DIVX|Xvid|mp4s|m4s2|xvid|mp4v|fmp4|3iv2|smp4|h261|h262|h263|h264|s264|AVC1|DAVC|H264|X264|VSSH|SVQ.|cvid|thra|wmv1|wmv2|wmv3|wvc1|wmva|VP31|VP30|VP3|VP50|VP5|VP51|VP60|VP61|VP62|VP6F|VP6A|VP7|FSV1|IV31|IV32|IV41|IV51|RV10|RV13|RV20|RV30|RV40|BBCD|wmv|mpga|mp3|LAME|mp4a|a52|a52b|atrc|ILBC|Qclp|lpcJ|28_8|dnet|sipr|cook|atrc|raac|racp|ralf|shrn|spex|vorb|ogg|dts|wma|wma1|wma2|flac|alac|samr|SONC|3gp|asf|au|avi|flv|mov|ogm|mkv|mka|ts|mpg|mp2|nsc|nsv|nut|ra|ram|rm|tv|rmbv|a52|dts|aac|dv|vid|tta|tac|ty|wav|dts|xa|webm|m4v|m3u8))/?(\\?.*)?$",
"useful":"http://stackoverflow.com/a/27755/3943258",
"testInputs":[
"https://dl.dropboxusercontent.com/s/s6n8yt4bm7z9mur/Opener.mp4",
"http://foo.bar.blah?query=mp4",
"https://www.periscope.tv/w/arM8XDEzMzk2OHwxZGp4WFlReWRCQktaTiYY1knyfcjDKu8Qy9qnGZOp38aieGbiqYOFImuDn5E=",
"http://tngrm.tv",
"http://cache1.cloudflares.xyz:81/download/0771cff9b3e1c18e9f3d92f03b55590e/5b2f0ce4/user209445/129967a9a34e0_mobile.mp4",
"http://mac.homeplex.org/movies/Prep%20&%20Landing.m4v"
],
"formats":[
{
"appId":"vlc",
"script":"function process(url, completionHandler) { completionHandler('vlc-x-callback://x-callback-url/download?url=' + encodeURIComponent(url)); }",
"script2":"function process(url, completionHandler) { completionHandler('vlc-x-callback://x-callback-url/download?url=' + encodeURIComponent(url)); }",
"testResults":[
"vlc-x-callback://x-callback-url/download?url=https%3A%2F%2Fdl.dropboxusercontent.com%2Fs%2Fs6n8yt4bm7z9mur%2FOpener.mp4",
null,
null,
null,
"vlc-x-callback://x-callback-url/download?url=http%3A%2F%2Fcache1.cloudflares.xyz%3A81%2Fdownload%2F0771cff9b3e1c18e9f3d92f03b55590e%2F5b2f0ce4%2Fuser209445%2F129967a9a34e0_mobile.mp4",
"vlc-x-callback://x-callback-url/download?url=http%3A%2F%2Fmac.homeplex.org%2Fmovies%2FPrep%2520%26%2520Landing.m4v"
]
}
]
},
{
"title":"Stream Media",
"regex":"(https?://.*)\\n.*(?i)content-type\":\\s*\"video.*",
"headers":1,
"formats":[
{
"appId":"nplayer",
"format":"nplayer-$1"
},
{
"appId":"vlc",
"script":"function process(url, completionHandler) { completionHandler('vlc-x-callback://x-callback-url/stream?url=' + encodeURIComponent(url)); }",
"script2":"function process(url, completionHandler) { completionHandler('vlc-x-callback://x-callback-url/stream?url=' + encodeURIComponent(url)); }"
},
{
"appId":"infuse",
"script":"function process(url, completionHandler) { completionHandler('infuse://x-callback-url/play?url=' + encodeURIComponent(url)); }",
"script2":"function process(url, completionHandler) { completionHandler('infuse://x-callback-url/play?url=' + encodeURIComponent(url)); }"
},
{
"appId":"oplayer",
"format":"oplayer://$1"
},
{
"appId":"oplayerhd",
"format":"oplayer://$1"
},
{
"appId":"oplayerlite",
"format":"oplayerlite://$1"
},
{
"appId":"outplayer",
"format":"outplayer://$1"
}
]
},
{
"title":"Download Media",
"regex":"(https?://.*)\\n.*(?i)content-type\":\\s*\"video.*",
"headers":1,
"formats":[
{
"appId":"vlc",
"script":"function process(url, completionHandler) { completionHandler('vlc-x-callback://x-callback-url/download?url=' + encodeURIComponent(url)); }",
"script2":"function process(url, completionHandler) { completionHandler('vlc-x-callback://x-callback-url/download?url=' + encodeURIComponent(url)); }"
}
]
},
{
"title":"Stream Media",
"regex":"https?://(www\\.)?streamable\\.com/\\w+/?(\\?.*)?$",
"notes":"No tests because there's an expiring token on the end of these URLs, but you can test with this https://streamable.com/y11x2",
"formats":[
{
"appId":"nplayer",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = xmlhttp.responseText; var results = RegExp('.*og:video.*?content=\"(.*)\".*').exec(res); var match; if (results != null && results.length > 1) { match = 'nplayer-' + results[1]; }; completionHandler(match); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('.*og:video.*?content=\"(.*)\".*').exec(res); var match = results != null && results.length > 1 ? 'nplayer-' + results[1] : null; completionHandler(match); }"
},
{
"appId":"vlc",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = xmlhttp.responseText; var results = RegExp('.*og:video.*?content=\"(.*)\".*').exec(res); var match; if (results != null && results.length > 1) { match = 'vlc-x-callback://x-callback-url/stream?url=' + encodeURIComponent(results[1]); }; completionHandler(match); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('.*og:video.*?content=\"(.*)\".*').exec(res); var match = results != null && results.length > 1 ? match = 'vlc-x-callback://x-callback-url/stream?url=' + encodeURIComponent(results[1]) : null; completionHandler(match); }"
},
{
"appId":"infuse",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = xmlhttp.responseText; var results = RegExp('.*og:video.*?content=\"(.*)\".*').exec(res); var match; if (results != null && results.length > 1) { match = 'infuse://x-callback-url/play?url=' + encodeURIComponent(results[1]); }; completionHandler(match); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('.*og:video.*?content=\"(.*)\".*').exec(res); var match = results != null && results.length > 1 ? match = 'infuse://x-callback-url/play?url=' + encodeURIComponent(results[1]): null; completionHandler(match); }"
},
{
"appId":"oplayer",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('.*og:video.*?content=\"(.*)\".*').exec(res); var match = results != null && results.length > 1 ? match = 'oplayer://' + results[1] : null; completionHandler(match); }"
},
{
"appId":"oplayerhd",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('.*og:video.*?content=\"(.*)\".*').exec(res); var match = results != null && results.length > 1 ? match = 'oplayer://' + results[1] : null; completionHandler(match); }"
},
{
"appId":"oplayerlite",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('.*og:video.*?content=\"(.*)\".*').exec(res); var match = results != null && results.length > 1 ? match = 'oplayerlite://' + results[1] : null; completionHandler(match); }"
},
{
"appId":"outplayer",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('.*og:video.*?content=\"(.*)\".*').exec(res); var match = results != null && results.length > 1 ? match = 'outplayer://' + results[1] : null; completionHandler(match); }"
}
]
},
{
"title":"Download Media",
"regex":"https?://(www\\.)?streamable\\.com/\\w+/?(\\?.*)?$",
"notes":"No tests because there's an expiring token on the end of these URLs, but you can test with this https://streamable.com/y11x2",
"formats":[
{
"appId":"vlc",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = xmlhttp.responseText; var results = RegExp('.*og:video.*?content=\"(.*)\".*').exec(res); var match; if (results != null && results.length > 1) { match = 'vlc-x-callback://x-callback-url/download?url=' + encodeURIComponent(results[1]); }; completionHandler(match); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('.*og:video.*?content=\"(.*)\".*').exec(res); var match = results != null && results.length > 1 ? match = 'vlc-x-callback://x-callback-url/download?url=' + encodeURIComponent(results[1]) : null; completionHandler(match); }"
}
]
},
{
"title":"Open Note",
"regex":"https?://(www\\.)?jianshu\\.com/p/\\w+",
"testInputs":[
"http://www.jianshu.com/p/90c10a242199",
"http://www.jianshu.com/p/90c10a24219"
],
"formats":[
{
"appId":"jianshu",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('(jianshu://notes/\\\\d+)').exec(res); var match = results != null && results.length > 1 ? results[1] : null; completionHandler(match); }",
"testResults":[
"jianshu://notes/2312808",
null
]
}
]
},
{
"title":"Open Geocache",
"regex":"https?://(www\\.)?(geocaching\\.com/geocache|coord\\.info)/(GC[A-Za-z0-9]+).*$",
"testInputs":[
"https://www.geocaching.com/geocache/GC46P90_positive-outlook",
"https://www.geocaching.com/geocache/GC59ZFJ_kermit-und-super-grobi",
"https://www.geocaching.com/geocache/GC68XHH_tour-dialysis-6",
"http://coord.info/GCPEK2",
"http://coord.info/GC46P90",
"https://www.geocaching.com/seek/log.aspx?LUID=a88b7b5e-9253-46cf-b9a3-e9f230b7819e"
],
"formats":[
{
"appId":"cachly",
"format":"cachly://gccode=$3",
"testResults":[
"cachly://gccode=GC46P90",
"cachly://gccode=GC59ZFJ",
"cachly://gccode=GC68XHH",
"cachly://gccode=GCPEK2",
"cachly://gccode=GC46P90",
null
]
}
]
},
{
"regex":"https?(://(?:www\\.)?netflix\\.com/(\\w+/)*(watch|title)/.*)$",
"testInputs":[
"https://www.netflix.com/watch/70129452",
"https://www.netflix.com/title/70077544",
"https://www.netflix.com/us/title/81252357?s=i&trkid=13747225&vlang=en&clip=81522111&t=twt"
],
"formats":[
{
"appId":"netflix",
"format":"nflx$1",
"testResults":[
"nflx://www.netflix.com/watch/70129452",
"nflx://www.netflix.com/title/70077544",
"nflx://www.netflix.com/us/title/81252357?s=i&trkid=13747225&vlang=en&clip=81522111&t=twt"
]
}
]
},
{
"title":"Open Sale",
"regex":"https?://(\\w+\\.)?wallapop\\.com/(i/|item/.*-)(\\d+).*?$",
"testInputs":[
"http://es.wallapop.com/item/vetusta-morla-memoria-instantanea-105787925",
"http://p.wallapop.com/i/106451972?_pid=wi&_uid=28825318&_me=s_tw"
],
"formats":[
{
"appId":"wallapop",
"format":"wallapop://i/$3",
"testResults":[
"wallapop://i/105787925",
"wallapop://i/106451972"
]
}
]
},
{
"regex":"https?://(www\\.|m\\.)?douyu\\.(com|tv)/(\\d+).*?$",
"testInputs":[
"https://www.douyu.com/2570",
"https://m.douyu.com/2570",
"http://douyu.tv/2570"
],
"formats":[
{
"appId":"douyu",
"format":"douyutv://$3&0&",
"testResults":[
"douyutv://2570&0&",
"douyutv://2570&0&",
"douyutv://2570&0&"
]
}
]
},
{
"regex":"(https?://(\\w+\\.)?namu\\.wiki/.*)$",
"testInputs":[
"https://namu.wiki/w/%EC%9D%B4%ED%99%94%EC%97%AC%EC%9E%90%EB%8C%80%ED%95%99%EA%B5%90%20%EC%A0%95%EC%9C%A0%EB%9D%BC%20%ED%8A%B9%ED%98%9C%20%EB%85%BC%EB%9E%80"
],
"formats":[
{
"appId":"namuviewer",
"format":"namuviewer://?url=$1",
"testResults":[
"namuviewer://?url=https://namu.wiki/w/%EC%9D%B4%ED%99%94%EC%97%AC%EC%9E%90%EB%8C%80%ED%95%99%EA%B5%90%20%EC%A0%95%EC%9C%A0%EB%9D%BC%20%ED%8A%B9%ED%98%9C%20%EB%85%BC%EB%9E%80"
]
}
]
},
{
"regex":"https?://(\\w+\\.)?pandora\\.com/(?!station/play/).*",
"testInputs":[
"https://www.pandora.com/artist/lcd-soundsystem/sound-of-silver/someone-great/TRqZxpdPnrfvZgc?part=ug-desktop&corr=1539181200",
"https://www.pandora.com/artist/lcd-soundsystem/sound-of-silver/ALwrmd3drc5frqP",
"https://www.pandora.com/station/play/3379768435072334643"
],
"formats":[
{
"appId":"pandora",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('(pandorav\\\\d+:/.*?)\\\\\\\\\"').exec(res); var match = results != null && results.length > 1 ? results[1] : null; if (match == null) { results = RegExp('(pandorav4/createStation.*?)\"').exec(res); if (results != null && results.length > 1) { match = results[1].replace('pandorav4/', 'pandorav4:/'); } } completionHandler(match); }",
"testResults":[
"pandorav4:/createStation?musicId=S857667&source=googdeep",
"pandorav4:/backstage/artist?pandoraId=AR:111861",
null
]
},
{
"appId":"spotify",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['spotify'] != null) { var appURL = res['linksByPlatform']['spotify']['nativeAppUriDesktop']; } completionHandler(appURL); }",
"testResults":[
null,
"spotify:album:1R8kkopLT4IAxzMMkjic6X",
null
]
},
{
"appId":"applemusic",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['appleMusic'] != null) { var appURL = res['linksByPlatform']['appleMusic']['nativeAppUriMobile']; } completionHandler(appURL); }",
"testResults":[
null,
"music://itunes.apple.com/us/album/_/742432549?mt=1&app=music&at=1000lHKX",
null
]
},
{
"appId":"itunesstore",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['itunes'] != null) { var appURL = res['linksByPlatform']['itunes']['nativeAppUriMobile']; } completionHandler(appURL); }",
"testResults":[
null,
"itmss://itunes.apple.com/us/album/_/742432549?mt=1&app=itunes&at=1000lHKX",
null
]
},
{
"appId":"youtube",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['youtube'] != null) { var appURL = res['linksByPlatform']['youtube']['url'].replace(RegExp('^.*?\\\\w+://', 'g'), 'vnd.youtube://'); } completionHandler(appURL); }",
"testResults":[
"vnd.youtube://www.youtube.com/watch?v=eISo-iFGGDg",
"vnd.youtube://www.youtube.com/playlist?list=PLDIxWXRU4UDq5rPhv-P-dHXFadb0FSBjQ",
null
]
},
{
"appId":"soundcloud",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['soundcloud'] != null) { var entityId = res['linksByPlatform']['soundcloud']['entityUniqueId']; var type; if (entityId.indexOf('SONG') != -1) { type = 'sounds'; } else if (entityId.indexOf('PLAYLIST') != -1) { type = 'playlists'; } if (type != null) { var appURL = 'soundcloud://' + type + ':' + entityId.replace(RegExp('.*_.*::', 'g'), ''); } } completionHandler(appURL); }",
"testResults":[
null,
"soundcloud://playlists:241266863",
null
]
},
{
"appId":"youtubemusic",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['youtube'] != null) { var appURL = res['linksByPlatform']['youtube']['url'].replace(RegExp('^.*?\\\\w+://', 'g'), 'youtubemusic://'); } completionHandler(appURL); }",
"testResults":[
"youtubemusic://www.youtube.com/watch?v=eISo-iFGGDg",
"youtubemusic://www.youtube.com/playlist?list=PLDIxWXRU4UDq5rPhv-P-dHXFadb0FSBjQ",
null
]
},
{
"appId":"amazonmusic",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['amazonMusic'] != null) { var appURL = res['linksByPlatform']['amazonMusic']['url'].replace(RegExp('^.*?\\\\w+/', 'g'), 'amznmp3://'); } completionHandler(appURL); }",
"testResults":[
null,
"amznmp3://albums/B000SX9NAC?do=play",
null
]
},
{
"appId":"tidal",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['tidal'] != null) { var entityId = res['linksByPlatform']['tidal']['entityUniqueId']; var type; if (entityId.indexOf('SONG') != -1) { type = 'track'; } else if (entityId.indexOf('ALBUM') != -1) { type = 'album'; } if (type != null) { var appURL = 'tidal://' + type + '/' + entityId.replace(RegExp('.*_.*::', 'g'), ''); } } completionHandler(appURL); }",
"testResults":[
null,
"tidal://album/141254",
null
]
}
]
},
{
"regex":"https?://(\\w+\\.)?pandora\\.com/station/play/(\\d+).*?",
"testInputs":[
"http://www.pandora.com/fall-out-boy/from-under-cork-tree/dance-dance?station=939625762651725460&shareImp=true&referrer=gonzalez_252",
"https://www.pandora.com/chris-brown/x-deluxe-version/do-better",
"https://www.pandora.com/station/play/3379768435072334643",
"https://www.pandora.com/korn/greatest-hits-vol-1-explicit/word-up"
],
"formats":[
{
"appId":"pandora",
"format":"pandorav2:/createStation?stationId=$2",
"testResults":[
null,
null,
"pandorav2:/createStation?stationId=3379768435072334643",
null
]
}
]
},
{
"title":"Open Story",
"regex":"https?://(\\w+\\.)?wsj\\.com/articles/.*$",
"testInputs":[
"http://www.wsj.com/articles/exxons-rex-tillerson-is-top-candidate-for-secretary-of-state-1481318464",
"http://www.wsj.com/articles/opec-russia-upbeat-about-securing-oil-output-deal-as-meeting-begins-1481362580",
"http://www.wsj.com/articles/amazons-new-ceo-can-either-help-workers-and-sellersor-automate-them-away-11612587602"
],
"formats":[
{
"appId":"wsj",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('article\\.id\".*content.*=.*\"(\\\\w+)\"').exec(res); var match = results != null && results.length > 1 ? 'wsj://launch?articleid=' + results[1] + '&weburl=http://www.wsj.com/articles/' + results[1] + '&headline=' : null; completionHandler(match); }",
"note":"We strip out the headline query item because WSJ seems to encode it in a non-standard way (details here https://goo.gl/t1rKyg). The headline in the first URL below is Exxon%u2019s%20Rex%20Tillerson%20is%20expected%20to%20be%20Trump%u2019s%20pick%20for%20secretary%20of%20state, for example, the %u causes NSURL to be incapable of parsing the result.",
"note2":"We provide a blank headline because if you don't the WSJ app ignores your URL",
"testResults":[
"wsj://launch?articleid=SB11202777042148913632204582487202009421794&weburl=http://www.wsj.com/articles/SB11202777042148913632204582487202009421794&headline=",
"wsj://launch?articleid=SB11202777042148913632204582488220182121442&weburl=http://www.wsj.com/articles/SB11202777042148913632204582488220182121442&headline=",
"wsj://launch?articleid=SB11864557436810924481104587265821646923042&weburl=http://www.wsj.com/articles/SB11864557436810924481104587265821646923042&headline="
]
}
]
},
{
"regex":"https?://(\\w+\\.)?mixcloud\\.com/(.+)$",
"testInputs":[
"https://m.mixcloud.com/dashradio/skee-1-on-1-with-adrian-peterson/",
"https://www.mixcloud.com/dashradio/skee-1-on-1-with-adrian-peterson/",
"https://beta.mixcloud.com/alexadregarcia/alexandre-garcia-121216/",
"https://www.mixcloud.com/alexadregarcia/alexandre-garcia-121216/",
"https://www.mixcloud.com/DJQuantize/147-emergency-fm-jungle-show-dec-9th-2016/"
],
"formats":[
{
"appId":"mixcloud",
"format":"mc://$2",
"testResults":[
"mc://dashradio/skee-1-on-1-with-adrian-peterson/",
"mc://dashradio/skee-1-on-1-with-adrian-peterson/",
"mc://alexadregarcia/alexandre-garcia-121216/",
"mc://alexadregarcia/alexandre-garcia-121216/",
"mc://DJQuantize/147-emergency-fm-jungle-show-dec-9th-2016/"
]
}
]
},
{
"title":"Open Story",
"regex":"https?://(\\w+\\.)?lemonde\\.fr/[^/]+/article/.*?_(\\d+).*?$",
"testInputs":[
"http://www.lemonde.fr/pixels/article/2016/12/11/jean-luc-melenchon-declare-qu-il-accordera-la-nationalite-francaise-a-mm-snowden-et-assange-s-il-est-elu_5047179_4408996.html?utm_medium=Social&utm_campaign=Echobox&utm_source=Twitter&utm_term=Autofeed#link_time=1481485993",
"http://www.lemonde.fr/international/article/2016/12/12/le-futur-secretaire-general-de-l-onu-antonio-guterres-appelle-a-une-reforme-globale_5047799_3210.html"
],
"formats":[
{
"appId":"lemonde",
"format":"lmfr://element/article/$2",
"testResults":[
"lmfr://element/article/5047179",
"lmfr://element/article/5047799"
]
}
]
},
{
"title":"Open Slides",
"regex":"https?://(www\\.)?slideshare\\.net/[^/]+/[^/|\\?]+.*$",
"testInputs":[
"http://www.slideshare.net/PeterHoddie/io-t-is-something-to-figure-out?utm_content=buffer9fb42&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer",
"http://www.slideshare.net/PeterHoddie",
"http://www.slideshare.net/PeterHoddie/?foo=bar"
],
"formats":[
{
"appId":"slideshare",
"script":"function process(url, completionHandler) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var res = xmlhttp.responseText; var results = RegExp('.*(slideshare-app://ss/\\\\d+).*').exec(res); var match; if (results != null && results.length > 1) { match = results[1]; }; completionHandler(match); } }; xmlhttp.open('GET', url, true); xmlhttp.send(); }",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('.*(slideshare-app://ss/\\\\d+).*').exec(res); var match = results != null && results.length > 1 ? results[1] : null; completionHandler(match); }",
"testResults":[
"slideshare-app://ss/61965473",
null,
null
]
}
]
},
{
"regex":"https?://(www\\.)?(appadvice\\.com/.*)$",
"testInputs":[
"https://appadvice.com/game/collection/best-party-games-for-party-time",
"https://appadvice.com/post/original-television-programming/734838",
"https://appadvice.com/collection/best-news-apps",
"https://appadvice.com/appnn/2017/01/todays-apps-gone-free-vantage-calendar-tone-super-barista-and-more",
"https://appadvice.com/appnn"
],
"formats":[
{
"appId":"appadvice",
"format":"aaexternal://$2",
"testResults":[
"aaexternal://appadvice.com/game/collection/best-party-games-for-party-time",
"aaexternal://appadvice.com/post/original-television-programming/734838",
"aaexternal://appadvice.com/collection/best-news-apps",
"aaexternal://appadvice.com/appnn/2017/01/todays-apps-gone-free-vantage-calendar-tone-super-barista-and-more",
"aaexternal://appadvice.com/appnn"
]
}
]
},
{
"title":"Open Doc",
"regex":"https?://paper\\.dropbox\\.com/doc/.*$",
"testInputs":[
"https://paper.dropbox.com/doc/Tangent-Release-Notes-xYQoYzNM07FVmuQ3Jp286"
],
"formats":[
{
"appId":"dropboxpaper",
"script":"function process(url, completionHandler) { completionHandler('dbx-paper://open-doc?url=' + encodeURIComponent(url)); }",
"script2":"function process(url, completionHandler) { completionHandler('dbx-paper://open-doc?url=' + encodeURIComponent(url)); }",
"testResults":[
"dbx-paper://open-doc?url=https%3A%2F%2Fpaper.dropbox.com%2Fdoc%2FTangent-Release-Notes-xYQoYzNM07FVmuQ3Jp286"
]
}
]
},
{
"regex":"https?://music\\.163\\.com/(?:(?:m|#)/)?(song|album|playlist|program)(?:(?:.*(?:&|\\?)id=|/))(\\d+).*$",
"testInputs":[
"http://music.163.com/m/song?id=475072294&userid=16656993",
"http://music.163.com/m/song/?id=475072294&userid=16656993",
"http://music.163.com/#/song/475072294/?userid=16656993",
"http://music.163.com/song/17124997",
"http://music.163.com/#/song/17124997"
],
"formats":[
{
"appId":"orpheus",
"format":"orpheus://$1/$2",
"testResults":[
"orpheus://song/475072294",
"orpheus://song/475072294",
"orpheus://song/475072294",
"orpheus://song/17124997",
"orpheus://song/17124997"
]
}
]
},
{
"title":"Open Story",
"regex":"https?://(www\\.)?blendle\\.com/(i|item)/([^/]+/[^/]+/)?([^/|\\?]*).*$",
"testInputs":[
"https://blendle.com/i/the-new-york-times/in-the-world-of-the-sapiosexual-the-hottest-body-part-is-the-brain/bnl-newyorktimes-20170603-18_1?sharer=eyJ2ZXJzaW9uIjoiMSIsInVpZCI6InRpbW9udXMiLCJpdGVtX2lkIjoiYm5sLW5ld3lvcmt0aW1lcy0yMDE3MDYwMy0xOF8xIn0%3D",
"https://blendle.com/item/bnl-newyorktimes-20170603-18_1"
],
"formats":[
{
"appId":"blendle",
"format":"blendle://item/$4",
"testResults":[
"blendle://item/bnl-newyorktimes-20170603-18_1",
"blendle://item/bnl-newyorktimes-20170603-18_1"
]
}
]
},
{
"regex":"https?://(\\w+\\.)?(zomato\\.com|zoma\\.to).*$",
"testInputs":[
"https://www.zomato.com/chennai/murugan-idli-shop-nanganallur/menu",
"http://www.zoma.to/kpYxKa",
"https://www.zomato.com/review/kpYxKa",
"http://www.zoma.to/pv/u_NTk2NzA0MjIzMT"
],
"formats":[
{
"appId":"zomato",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('.*(zomato://[^\"]+).*').exec(res); var match = results != null && results.length > 1 ? results[1] : null; completionHandler(match); }",
"testResults":[
"zomato://r/70085",
"zomato://review/30981346",
"zomato://review/30981346",
"zomato://pv/u_NTk2NzA0MjIzMT"
]
}
]
},
{
"title":"Open Story",
"regex":"https?://(www\\.)?lefigaro\\.fr/[^/]*/\\d+/\\d+/\\d+/\\d+-(\\w+)-.*$",
"testInputs":[
"http://www.lefigaro.fr/actualite-france/2017/10/02/01016-20171002ARTFIG00286-attentat-de-marseille-un-texte-depose-mardi-pour-systematiser-l-expulsion-des-etrangers-delinquants.php?utm_term=Autofeed&utm_campaign=Echobox&utm_medium=Social&utm_source=Twitter#link_time=1506970243",
"http://www.lefigaro.fr/flash-eco/2017/10/03/97002-20171003FILWWW00014-lait-des-paturages-plus-ecolo-et-plus-rentable.php"
],
"formats":[
{
"appId":"lefigaro",
"format":"lefigarofr://article/$2/lefigaro.fr",
"testResults":[
"lefigarofr://article/20171002ARTFIG00286/lefigaro.fr",
"lefigarofr://article/20171003FILWWW00014/lefigaro.fr"
]
}
]
},
{
"title":"Open Event",
"regex":"https?://(www\\.|m\\.)?ticketmaster\\.com/([^/]*/)?event/(\\w+).*$",
"testInputs":[
"http://www.ticketmaster.com/event/1C00533D161BD381?camefrom=CFC_ANOTHERPLANET_web&brand=anotherplanet",
"http://m.ticketmaster.com/event/1C00533D161BD381?camefrom=CFC_ANOTHERPLANET_web&brand=anotherplanet",
"http://www.ticketmaster.com/foo-bar/event/1C00533D161BD381?camefrom=CFC_ANOTHERPLANET_web&brand=anotherplanet",
"http://m.ticketmaster.com/foo-bar/event/1C00533D161BD381?camefrom=CFC_ANOTHERPLANET_web&brand=anotherplanet"
],
"formats":[
{
"appId":"ticketmaster",
"format":"ticketmaster:///event/$3",
"testResults":[
"ticketmaster:///event/1C00533D161BD381",
"ticketmaster:///event/1C00533D161BD381",
"ticketmaster:///event/1C00533D161BD381",
"ticketmaster:///event/1C00533D161BD381"
]
}
]
},
{
"title":"Open Artist",
"regex":"https?://(www\\.|m\\.)?ticketmaster\\.com/([^/]*/)?artist/(\\w+).*$",
"testInputs":[
"http://www.ticketmaster.com/Thom-Yorke-tickets/artist/1370037?tm_link=edp_Artist_Name",
"http://m.ticketmaster.com/Thom-Yorke-tickets/artist/1370037?tm_link=edp_Artist_Name",
"http://www.ticketmaster.com/artist/1370037?tm_link=edp_Artist_Name",
"http://m.ticketmaster.com/artist/1370037?tm_link=edp_Artist_Name"
],
"formats":[
{
"appId":"ticketmaster",
"format":"ticketmaster:///artist/$3",
"testResults":[
"ticketmaster:///artist/1370037",
"ticketmaster:///artist/1370037",
"ticketmaster:///artist/1370037",
"ticketmaster:///artist/1370037"
]
}
]
},
{
"title":"Open Venue",
"regex":"https?://(www\\.|m\\.)?ticketmaster\\.com/([^/]*/)?venue/(\\w+).*$",
"testInputs":[
"http://www.ticketmaster.com/Fox-Theater-Oakland-tickets-Oakland/venue/229846?tm_link=edp_Venue_Name_1",
"http://m.ticketmaster.com/Fox-Theater-Oakland-tickets-Oakland/venue/229846?tm_link=edp_Venue_Name_1",
"http://www.ticketmaster.com/venue/229846?tm_link=edp_Venue_Name_1",
"http://m.ticketmaster.com/venue/229846?tm_link=edp_Venue_Name_1"
],
"formats":[
{
"appId":"ticketmaster",
"format":"ticketmaster:///venue/$3",
"testResults":[
"ticketmaster:///venue/229846",
"ticketmaster:///venue/229846",
"ticketmaster:///venue/229846",
"ticketmaster:///venue/229846"
]
}
]
},
{
"regex":"https?://(www\\.)?(scrapbox\\.io/.*)$",
"testInputs":[
"https://scrapbox.io/walpurgisn/%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E7%B7%B4%E7%BF%92%E5%B8%B3"
],
"formats":[
{
"appId":"porter",
"format":"sbporter://$2",
"testResults":[
"sbporter://scrapbox.io/walpurgisn/%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E7%B7%B4%E7%BF%92%E5%B8%B3"
]
}
]
},
{
"title":"Open Post",
"regex":"https?://(www\\.|m\\.)?kwai\\.com/i/photo/.*photoId=(\\d+).*?$",
"testInputs":[
"http://www.kwai.com/i/photo/lwx?et=1_a%2F1590209410251264001_p0&photoId=4704203541&type=2&userId=604908634&fid=796339652&timestamp=1516541906439&cc=share_twitter"
],
"formats":[
{
"appId":"kwai",
"format":"kwai://work/$2",
"testResults":[
"kwai://work/4704203541"
]
}
]
},
{
"title":"Open Profile",
"regex":"https?://(www\\.|m\\.)?kuaishou\\.com/(live/)?user/(\\d+).*?$",
"testInputs":[
"https://m.kuaishou.com/user/604908634",
"https://www.kuaishou.com/live/user/604908634"
],
"formats":[
{
"appId":"kwai",
"format":"kwai://profile/$3",
"testResults":[
"kwai://profile/604908634",
"kwai://profile/604908634"
]
}
]
},
{
"title":"Open Post",
"regex":"https?://(www\\.)?(sspai\\.com/post/(\\d+)).*?$",
"testInputs":[
"https://www.sspai.com/post/43552",
"https://sspai.com/post/41311"
],
"formats":[
{
"appId":"sspai",
"format":"sspai://$2",
"testResults":[
"sspai://sspai.com/post/43552",
"sspai://sspai.com/post/41311"
]
}
]
},
{
"regex":"https?://(www\\.)?openrec\\.tv/.*$",
"testInputs":[
"https://www.openrec.tv/live/akinose_163cm",
"https://www.openrec.tv/live/BDESsPDMFBG",
"https://www.openrec.tv/user/tikubimen",
"https://www.openrec.tv/game/playerunknowns-battlegrounds-pubg"
],
"formats":[
{
"appId":"openrectv",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('.*(jp.co.cyber-z.openrec://.*?)\\\\\".*').exec(res); var match = results != null && results.length > 1 ? results[1] : null; completionHandler(match); }",
"testResults":[
"jp.co.cyber-z.openrec://live?id=781729&identify_id=akinose_163cm",
"jp.co.cyber-z.openrec://live?id=781716&identify_id=BDESsPDMFBG",
"jp.co.cyber-z.openrec://user?id=82422651&identify_id=EQdL8kGmxcP1T",
"jp.co.cyber-z.openrec://game?id=1438"
]
}
]
},
{
"regex":"https?://(www\\.)?tripadvisor(\\.\\w+)+/.+$",
"testInputs":[
"https://www.tripadvisor.com/Hotel_Review-g499443-d10267413-Reviews-W_Punta_de_Mita-Punta_de_Mita_Pacific_Coast.html",
"https://www.tripadvisor.com/Restaurant_Review-g60713-d349459-Reviews-4505_Burgers_BBQ-San_Francisco_California.html",
"http://tripadvisor.ca/Restaurant_Review-g60713-d349459-Reviews-4505_Burgers_BBQ-San_Francisco_California.html"
],
"formats":[
{
"appId":"tripadvisor",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('.*(tripadvisor://.*?)\\\\\".*').exec(res); var match = results != null && results.length > 1 ? results[1] : null; completionHandler(match); }",
"testResults":[
"tripadvisor://www.tripadvisor.com/Hotel_Review-g499443-d10267413-Reviews-m33762-W_Punta_de_Mita-Punta_de_Mita_Pacific_Coast.html",
"tripadvisor://www.tripadvisor.com/Restaurant_Review-g60713-d349459-Reviews-m33762-4505_Burgers_BBQ-San_Francisco_California.html",
"tripadvisor://www.tripadvisor.ca/Restaurant_Review-g60713-d349459-Reviews-m33762-4505_Burgers_BBQ-San_Francisco_California.html"
]
}
]
},
{
"title":"Open Product",
"regex":"https?(://(?:www\\.)?(?:newegg\\.com/(?:Product/Product\\.aspx\\?.*Item=|.*/p/)|flash\\.newegg\\.com/Product/)\\w+.*)?$",
"testInputs":[
"https://www.newegg.com/Product/Product.aspx?Item=N82E16889651010&ignorebbr=1",
"https://flash.newegg.com/Product/9SIA9UW6TX4004?icid=WP_0_03192018",
"https://www.newegg.com/asus-geforce-rtx-3070-dual-rtx3070-o8g/p/N82E16814126459R?Item=N82E16814126459R&Description=geforce+rtx+3070&cm_re=geforce_rtx+3070-_-14-126-459R-_-Product&nm_mc=AFC-RAN-COM&cm_mmc=AFC-RAN-COM&utm_medium=affiliates&utm_source=afc-Twitter+Account&AFFID=3811272&AFFNAME=Twitter+Account&ACRID=1&ASUBID=&ASID=https%3A%2F%2Ft.co%2FnqlD4aaCCZ%3Famp%3D1&ranMID=44583&ranEAID=3811272&ranSiteID=QL631ke.Df8-AzUTyT9ukSewJF0cELFzTw"
],
"formats":[
{
"appId":"newegg",
"format":"ngm$1",
"testResults":[
"ngm://www.newegg.com/Product/Product.aspx?Item=N82E16889651010&ignorebbr=1",
"ngm://flash.newegg.com/Product/9SIA9UW6TX4004?icid=WP_0_03192018",
"ngm://www.newegg.com/asus-geforce-rtx-3070-dual-rtx3070-o8g/p/N82E16814126459R?Item=N82E16814126459R&Description=geforce+rtx+3070&cm_re=geforce_rtx+3070-_-14-126-459R-_-Product&nm_mc=AFC-RAN-COM&cm_mmc=AFC-RAN-COM&utm_medium=affiliates&utm_source=afc-Twitter+Account&AFFID=3811272&AFFNAME=Twitter+Account&ACRID=1&ASUBID=&ASID=https%3A%2F%2Ft.co%2FnqlD4aaCCZ%3Famp%3D1&ranMID=44583&ranEAID=3811272&ranSiteID=QL631ke.Df8-AzUTyT9ukSewJF0cELFzTw"
]
}
]
},
{
"regex":"https?://(?:\\w+\\.)?mercadolibre(?:\\.\\w+)+/(\\w\\w\\w)-(\\d+).*?$",
"testInputs":[
"https://articulo.mercadolibre.com.ve/MLV-506096816-kit-rodaje-rodamiento-moto-tx-200-rin-paleta-42-15-132-_JM",
"https://auto.mercadolibre.com.ar/MLA-714415418-ford-ranger-30-cd-xlt-4x2-2008-unica-mano-de-uso-particular-_JM"
],
"formats":[
{
"appId":"mercadolibre",
"format":"meli://item?id=$1$2",
"testResults":[
"meli://item?id=MLV506096816",
"meli://item?id=MLA714415418"
]
}
]
},
{
"title":"Open Video",
"regex":"https?://seiga\\.nicovideo\\.jp/watch/(mg\\d+).*$",
"testInputs":[
"http://seiga.nicovideo.jp/watch/mg308978?ref=nicoms",
"http://seiga.nicovideo.jp/watch/mg307641?ref=nicoms"
],
"formats":[
{
"appId":"nicoseiga",
"format":"nicoseiga://watch/$1",
"testResults":[
"nicoseiga://watch/mg308978",
"nicoseiga://watch/mg307641"
]
}
]
},
{
"regex":"https?://(www\\.)?airtable\\.com/(\\w+/\\w+).*?$",
"testInputs":[
"https://airtable.com/tbl41aPSQnB2JJ1uE/viw6mQSohadJqqdg1"
],
"formats":[
{
"appId":"airtable",
"format":"airtable:///$2",
"testResults":[
"airtable:///tbl41aPSQnB2JJ1uE/viw6mQSohadJqqdg1"
]
}
]
},
{
"title":"Open Podcast",
"regex":"https?://one\\.npr\\.org/.*sharedMediaId=(\\d+:\\d+).*?$",
"testInputs":[
"https://one.npr.org/?sharedMediaId=601759872:601759873"
],
"formats":[
{
"appId":"nprone",
"format":"nprone://listen?sharedMediaId=$1",
"testResults":[
"nprone://listen?sharedMediaId=601759872:601759873"
]
}
]
},
{
"regex":"https?://(www\\.)?booking\\.com/.*",
"testInputs":[
"https://www.booking.com/searchresults.html?label=gen173nr-1FCAEoggJCAlhYSDNYBHIFdXNfY2GIAQGYATG4AQfIAQzYAQHoAQH4AQKSAgF5qAID;sid=3eb3d2cf4049c37d5506fd3c570f814f;class_interval=1&dest_id=20024809&dest_type=city&dtdisc=0&from_sf=1&group_adults=2&group_children=0&inac=0&index_postcard=0&label_click=undef&no_rooms=1&offset=0&postcard=0&room1=A%2CA&sb_price_type=total&src=index&src_elem=sb&ss=atlanta&ss_all=0&ssb=empty&sshis=0&",
"https://www.booking.com/hotel/us/omni-cnn-center.html?label=gen173nr-1FCAEoggJCAlhYSDNYBHIFdXNfY2GIAQGYATG4AQfIAQzYAQHoAQH4AQKSAgF5qAID;sid=3eb3d2cf4049c37d5506fd3c570f814f;dest_id=20024809;dest_type=city;dist=0;group_adults=2;hapos=1;hpos=1;room1=A%2CA;sb_price_type=total;srepoch=1531889849;srfid=068e41b420575d928702c1577140e5c31414c493X1;srpvid=a07122dcf7d701af;type=total;ucfs=1&"
],
"formats":[
{
"appId":"booking",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('.*\\\\\"(booking://.*?)\\\\\".*').exec(res); var match = results != null && results.length > 1 ? results[1] : null; completionHandler(match); }",
"testResults":[
"booking://searchresults?dest_id=20024809&dest_type=city&affiliate_id=375119",
"booking://hotel/522909?affiliate_id=375119"
]
}
]
},
{
"regex":"https?://derstandard\\.at/(.+)$",
"testInputs":[
"https://derstandard.at/2000086779585/Sobotka-Sollten-Gesetze-gegen-Wiederbetaetigung-noch-erweitern",
"https://derstandard.at/r5782/Bundeslaender?ref=nav_haupt",
"https://derstandard.at/Kultur?ref=nav_haupt"
],
"formats":[
{
"appId":"istandard",
"format":"iStandard://$1",
"testResults":[
"iStandard://2000086779585/Sobotka-Sollten-Gesetze-gegen-Wiederbetaetigung-noch-erweitern",
"iStandard://r5782/Bundeslaender?ref=nav_haupt",
"iStandard://Kultur?ref=nav_haupt"
]
}
]
},
{
"regex":"https?://(www\\.)(deezer\\.com/.*)$",
"testInputs":[
"https://www.deezer.com/us/track/124991588",
"http://www.deezer.com/track/8016045",
"https://www.deezer.com/us/artist/5531258",
"http://www.deezer.com/artist/5531258",
"https://www.deezer.com/us/playlist/4160013622",
"https://www.deezer.com/playlist/4160013622"
],
"formats":[
{
"appId":"deezer",
"format":"deezer://www.$2",
"testResults":[
"deezer://www.deezer.com/us/track/124991588",
"deezer://www.deezer.com/track/8016045",
"deezer://www.deezer.com/us/artist/5531258",
"deezer://www.deezer.com/artist/5531258",
"deezer://www.deezer.com/us/playlist/4160013622",
"deezer://www.deezer.com/playlist/4160013622"
]
}
]
},
{
"title":"Add App",
"regex":"https?://((testflight|beta\\.itunes)\\.apple\\.com(/join|/v1/(app|invite))/.*)$",
"testInputs":[
"https://testflight.apple.com/join/yP1ZHFr0",
"https://beta.itunes.apple.com/v1/invite/842f010727584f1da5e008c7234aad2b2fb03e35b07d426e99baf5beb58fb72734caab58?ct=BenjaminSandofsky93099055&advp=10000&platform=ios",
"https://beta.itunes.apple.com/v1/app/978489855",
"https://testflight.apple.com/v1/invite/7accd6fcdc8d42d0be4995f67d6079ca5757b37964ba4809a815582e53a79adf368d98b6?ct=AppleComputer&advp=10000&platform=ios"
],
"formats":[
{
"appId":"testflight",
"format":"itms-beta://$1",
"testResults":[
"itms-beta://testflight.apple.com/join/yP1ZHFr0",
"itms-beta://beta.itunes.apple.com/v1/invite/842f010727584f1da5e008c7234aad2b2fb03e35b07d426e99baf5beb58fb72734caab58?ct=BenjaminSandofsky93099055&advp=10000&platform=ios",
"itms-beta://beta.itunes.apple.com/v1/app/978489855",
"itms-beta://testflight.apple.com/v1/invite/7accd6fcdc8d42d0be4995f67d6079ca5757b37964ba4809a815582e53a79adf368d98b6?ct=AppleComputer&advp=10000&platform=ios"
]
}
]
},
{
"regex":"https?://(www\\.)?(theathletic\\.com/.+)$",
"testInputs":[
"https://theathletic.com/584168/2018/10/13/sporer-diagnosing-the-islanders-defensive-improvements-since-their-season-opener/"
],
"formats":[
{
"appId":"theathletic",
"format":"theathletic://$2",
"testResults":[
"theathletic://theathletic.com/584168/2018/10/13/sporer-diagnosing-the-islanders-defensive-improvements-since-their-season-opener/"
]
}
]
},
{
"regex":"https?(://(?!v\\w)(\\w+\\.)?tiktok\\.com/.+)$",
"testInputs":[
"https://m.tiktok.com/v/6611870748761918725.html?u_code=d2efh6j7chk78e&utm_source=twitter&utm_campaign=client_share&utm_medium=android&share_app_name=musically&iid=6611569857811203845&timestamp=1539446157&user_id=6610293843588448261",
"https://t.tiktok.com/i18n/share/video/6611871928930012418/?region=PH&mid=6360467876020751105&u_code=d2g7ai3j6cbjc4&&iid=6611859828577126145&utm_campaign=sever_share&utm_medium=android&app=tiktok&utm_source=twitter",
"https://t.tiktok.com/i18n/share/challenge/1615191334550530?utm_campaign=client_share&app=tiktok&utm_medium=ios&tt_from=copy&utm_source=copy&iid=6618689673571174145",
"https://vm.tiktok.com/7PDf8Q/",
"https://vt.tiktok.com/hSMSSR/",
"https://www.tiktok.com/@chunkysdead?language=en&sec_uid=MS4wLjABAAAAO_9DL8UYqvAl2dLW5MYKzypggSDbn1rIjgJ-gSbp4KG0_d0dibKG7GfSCKwJBjvI&u_code=db0h2kj2k84hk8&utm_campaign=client_share&app=musically&utm_medium=ios&user_id=6794243058260739077&tt_from=copy&utm_source=copy&source=h5_m"
],
"formats":[
{
"appId":"tiktok",
"format":"snssdk1233$1",
"testResults":[
"snssdk1233://m.tiktok.com/v/6611870748761918725.html?u_code=d2efh6j7chk78e&utm_source=twitter&utm_campaign=client_share&utm_medium=android&share_app_name=musically&iid=6611569857811203845&timestamp=1539446157&user_id=6610293843588448261",
"snssdk1233://t.tiktok.com/i18n/share/video/6611871928930012418/?region=PH&mid=6360467876020751105&u_code=d2g7ai3j6cbjc4&&iid=6611859828577126145&utm_campaign=sever_share&utm_medium=android&app=tiktok&utm_source=twitter",
"snssdk1233://t.tiktok.com/i18n/share/challenge/1615191334550530?utm_campaign=client_share&app=tiktok&utm_medium=ios&tt_from=copy&utm_source=copy&iid=6618689673571174145",
null,
null,
"snssdk1233://www.tiktok.com/@chunkysdead?language=en&sec_uid=MS4wLjABAAAAO_9DL8UYqvAl2dLW5MYKzypggSDbn1rIjgJ-gSbp4KG0_d0dibKG7GfSCKwJBjvI&u_code=db0h2kj2k84hk8&utm_campaign=client_share&app=musically&utm_medium=ios&user_id=6794243058260739077&tt_from=copy&utm_source=copy&source=h5_m"
]
}
]
},
{
"regex":"https?(://(www\\.)?tapatalk\\.com/.*)$",
"testInputs":[
"https://www.tapatalk.com/groups/evgeniamedvedeva/gp-skate-canada-international-2018-t10-s380.html"
],
"formats":[
{
"appId":"tapatalk",
"format":"tapatalk$1",
"testResults":[
"tapatalk://www.tapatalk.com/groups/evgeniamedvedeva/gp-skate-canada-international-2018-t10-s380.html"
]
}
]
},
{
"regex":"https?://(\\w+\\.)*iheart(\\.\\w+)+/(podcast|live|artist|playlist)/([^-/]*-)*\\d+.*?$",
"testInputs":[
"https://www.iheart.com/podcast/bleeding-green-nation-29778453/",
"https://www.iheart.com/podcast/29778453/",
"https://www.iheart.com/podcast/bleeding-green-nation-29778453/episode/bgn-radio-20-is-dallas-a-must-win-30126429/?autoplay=true&cmp=ios_share",
"https://www.iheart.com/podcast/358-bleeding-green-nation-29778453/episode/bgn-radio-20-is-dallas-a-30126429/?autoplay=true&cmp=ios_share",
"https://www.iheart.com/live/1029-now-2237/?pname=fire&campid=local&callletters=kdmx-fm",
"https://www.iheart.com/live/1029-now-2237/",
"https://www.iheart.com/live/1029-now-2237",
"https://www.iheart.com/live/2237/",
"https://www.iheart.com/live/2237",
"https://www.iheart.com/artist/damfmastermind-32266030/albums/lovestruck-65100530/",
"https://www.iheart.com/artist/damfmastermind-32266030/",
"https://www.iheart.com/playlist/workout-hits-312064750-CfGQPw9nkkFE5QGCLiwSbQ/"
],
"formats":[
{
"appId":"iheartradio",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('.*(ihr://[^\\\"]+).*').exec(res); var match = results != null && results.length > 1 ? results[1] : null; completionHandler(match); }",
"testResults":[
"ihr://play/custom/talk/show/29778453",
"ihr://play/custom/talk/show/29778453",
"ihr://play/custom/talk/show/29778453",
"ihr://play/custom/talk/show/29778453",
"ihr://play/live/2237",
"ihr://play/live/2237",
"ihr://play/live/2237",
"ihr://play/live/2237",
"ihr://play/live/2237",
"ihr://play/custom/album/65100530",
"ihr://play/artist/32266030",
"ihr://goto/playlist/312064750/CfGQPw9nkkFE5QGCLiwSbQ"
]
}
]
},
{
"regex":"https?://(\\w+\\.)*newspicks\\.com/(.+)$",
"testInputs":[
"https://newspicks.com/news/3530812?ref=user_904964&u=qpajax&from=twitter",
"https://newspicks.com/movie-series/6?movieId=238"
],
"formats":[
{
"appId":"newspicks",
"format":"newspicks://$2",
"testResults":[
"newspicks://news/3530812?ref=user_904964&u=qpajax&from=twitter",
"newspicks://movie-series/6?movieId=238"
]
}
]
},
{
"headers":1,
"regex":"https?://\\w+(\\.\\w+)+/(@|users/|web/accounts/)([^/]+).*?$\\n.*(?i)(server\":\"[^\"]*mastodon).*",
"note":"Headers for Mastodon servers seem to include Server=Mastodon. We use that instead of whitelisting a big blob of hosts for now.",
"testsThatCantBeRunCuzHeaders":[
"https://mastodon.technology/web/statuses/101673699373863528",
"https://masthead.social/@editor/101672869547896675",
"https://mastodon.technology/users/JPEG/statuses/101658532656614023",
"https://mastodon.technology/web/accounts/100301",
"https://mastodon.social/@Gargron/",
"https://mastodon.technology/users/JPEG"
],
"formats":[
{
"appId":"amaroq",
"script2":"function process(url, completionHandler) { completionHandler('amaroq://open?url=' + encodeURIComponent(url.split('\\n')[0])); }"
}
]
},
{
"title":"Open Status",
"headers":1,
"regex":"https?://\\w+(?:\\.\\w+)+/(?:@[^/]+|(?:(?:web|users/\\w+)/statuses))/(\\d+).*?\\n.*(?i)(?:server\":\"[^\"]*mastodon).*",
"note":"Headers for Mastodon servers seem to include Server=Mastodon. We use that instead of whitelisting a big blob of hosts for now.",
"testsThatCantBeRunCuzHeaders":[
"https://mastodon.technology/web/statuses/101673699373863528",
"https://masthead.social/@editor/101672869547896675",
"https://mastodon.technology/users/JPEG/statuses/101658532656614023",
"https://niu.moe/@mrjunge/102078356387296311"
],
"formats":[
{
"appId":"mast",
"format":"com.shi.mastodon://id=$1"
}
]
},
{
"title":"Open Question",
"regex":"https?://detail\\.chiebukuro\\.yahoo\\.co\\.jp/qa/question_detail/q(\\d+).*?$",
"testInputs":[
"https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13203620018"
],
"formats":[
{
"appId":"yahooqajp",
"format":"yjchiebukuro://?qid=$1",
"testResults":[
"yjchiebukuro://?qid=13203620018"
]
}
]
},
{
"title":"Open Recipe",
"regex":"https?://cooking\\.nytimes\\.com/recipes/(\\d+).*?$",
"testInputs":[
"https://cooking.nytimes.com/recipes/1020075-caramelized-onion-and-poppy-seed-hamantaschen"
],
"formats":[
{
"appId":"nytcooking",
"format":"nytcooking://cooking.nytimes.com/recipes/$1",
"testResults":[
"nytcooking://cooking.nytimes.com/recipes/1020075"
]
}
]
},
{
"regex":"https?://(www\\.)?liketoknow\\.it/(.+)$",
"testInputs":[
"https://www.liketoknow.it/ltk/7dAiHuJA1yx37wfETjZqUy",
"https://www.liketoknow.it/marvelousinthemidwest"
],
"formats":[
{
"appId":"liketoknowit",
"format":"com.rewardstyle.lt://$2",
"testResults":[
"com.rewardstyle.lt://ltk/7dAiHuJA1yx37wfETjZqUy",
"com.rewardstyle.lt://marvelousinthemidwest"
]
}
]
},
{
"regex":"https?://(\\w+\\.)*rightmove\\.co\\.uk/property[^/]+/property-(\\d+).*$",
"testInputs":[
"https://www.rightmove.co.uk/property-for-sale/property-74972759.html",
"https://www.rightmove.co.uk/property-to-rent/property-61343787.html"
],
"formats":[
{
"appId":"rightmove",
"format":"rightmove://PROPERTY_DETAILS?propertyId=$2",
"testResults":[
"rightmove://PROPERTY_DETAILS?propertyId=74972759",
"rightmove://PROPERTY_DETAILS?propertyId=61343787"
]
}
]
},
{
"title":"Open File",
"regex":"(https?://([^?]+(\\.json)(?!\\w).*))$",
"testInputs":[
"https://raw.githubusercontent.com/timonus/OpenerManifest/master/openerManifest-v3.json",
"https://raw.githubusercontent.com/timonus/OpenerManifest/master/openerManifest-v3.json?foo=bar",
"https://www.jsonline.com/in-depth/news/solutions/2021/01/19/sen-ron-johnson-calls-editorial-unhinged-editorial-board-responds/4204754001/"
],
"formats":[
{
"appId":"jayson",
"script2":"function process(url, completionHandler) { completionHandler('jayson:///view?link=' + encodeURIComponent(url)); }",
"testResults":[
"jayson:///view?link=https%3A%2F%2Fraw.githubusercontent.com%2Ftimonus%2FOpenerManifest%2Fmaster%2FopenerManifest-v3.json",
"jayson:///view?link=https%3A%2F%2Fraw.githubusercontent.com%2Ftimonus%2FOpenerManifest%2Fmaster%2FopenerManifest-v3.json%3Ffoo%3Dbar",
null
]
}
]
},
{
"regex":"https?://(?:\\w+\\.)*(?:lih\\.kg/|lihkg\\.com/thread/)(\\d+)(?:/page/(\\d+))?.*?$",
"testInputs":[
"https://lihkg.com/thread/1470105/page/1?fbclid=IwAR0KBRh5nWNwD8BllSvWYt26vnRfqMq3K73lO_5iuVCZnLSh0jP74q5ZhTI",
"https://lih.kg/1492195",
"https://lihkg.com/thread/1492195/page/1",
"https://lihkg.com/thread/1492195/",
"https://lihkg.com/thread/1492195/page/20",
"https://lih.kg/dHnkuT"
],
"formats":[
{
"appId":"lihkg",
"format":"lihkg://open_topic?thread_id=$1&page=$2&order=reply_time",
"testResults":[
"lihkg://open_topic?thread_id=1470105&page=1&order=reply_time",
"lihkg://open_topic?thread_id=1492195&page=&order=reply_time",
"lihkg://open_topic?thread_id=1492195&page=1&order=reply_time",
"lihkg://open_topic?thread_id=1492195&page=&order=reply_time",
"lihkg://open_topic?thread_id=1492195&page=20&order=reply_time",
null
]
}
]
},
{
"regex":"https?://(\\w+\\.)*teamblind\\.com/(s|article)/(\\w+-)*(\\w+).*?$",
"testInputs":[
"https://us.teamblind.com/s/MxtjybRD",
"https://usapi.teamblind.com/s/ToGii3Pt",
"https://www.teamblind.com/article/S386HR1044-Myth-Buster-with-sources-cited-8rqdxDK4"
],
"formats":[
{
"appId":"blind",
"format":"teamblind://open/?a=$4",
"testResults":[
"teamblind://open/?a=MxtjybRD",
"teamblind://open/?a=ToGii3Pt",
"teamblind://open/?a=8rqdxDK4"
]
}
]
},
{
"regex":"https?://photos\\.google(\\.\\w+)+/share/.*$",
"testInputs":[
"https://photos.app.goo.gl/tJauJwkXnLTsReGX7",
"https://photos.google.com/share/AF1QipP7JbEKCF8_oDGDaXMvV1glnBGEHyP0goeCZpx5VFY5pNonLUaPfgzsqWBwTIAVHA?key=ZWpaRUNZZXBkazBVaDc1TEFQTFQ3R0FCWk1jS1d3",
"https://photos.google.com/share/AF1QipNUX_bH-s1HJcdz5ZG41hMdCEJwv-l0avx5-NnNOKv4_q0HrDq-KSwNOuqn5TE-_Q?key=TnFXWlozcERDc2R2WURlamVUWEp1bTJ4VDZQWVVn"
],
"formats":[
{
"appId":"googlephotos",
"script2":"function process(url, completionHandler) { completionHandler('googlephotos://photos.app.goo.gl?link=' + encodeURIComponent(url)); }",
"testResults":[
null,
"googlephotos://photos.app.goo.gl?link=https%3A%2F%2Fphotos.google.com%2Fshare%2FAF1QipP7JbEKCF8_oDGDaXMvV1glnBGEHyP0goeCZpx5VFY5pNonLUaPfgzsqWBwTIAVHA%3Fkey%3DZWpaRUNZZXBkazBVaDc1TEFQTFQ3R0FCWk1jS1d3",
"googlephotos://photos.app.goo.gl?link=https%3A%2F%2Fphotos.google.com%2Fshare%2FAF1QipNUX_bH-s1HJcdz5ZG41hMdCEJwv-l0avx5-NnNOKv4_q0HrDq-KSwNOuqn5TE-_Q%3Fkey%3DTnFXWlozcERDc2R2WURlamVUWEp1bTJ4VDZQWVVn"
]
}
]
},
{
"regex":"https?://(song|album)\\.link/(\\w+/)?(s|i)/.*$",
"note":"from https://github.com/songlink/docs/blob/master/ios-shortcuts.md. Should also match https://song.link/i/1443109064 and https://song.link/us/i/1443109064 (outdated?)",
"testInputs":[
"https://song.link/s/1GZH9Sv6zCIse2GKihRHKy",
"https://album.link/s/31qVWUdRrlb8thMvts0yYL"
],
"formats":[
{
"appId":"spotify",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['entitiesByUniqueId'] != null) { for (var key in res['entitiesByUniqueId']) { if (key.includes('SPOTIFY_SONG')) { completionHandler('spotify:track:' + res['entitiesByUniqueId'][key]['id']); } else if (key.includes('SPOTIFY_ALBUM')) { completionHandler('spotify:album:' + res['entitiesByUniqueId'][key]['id']); } } } completionHandler(null); }",
"testResults":[
"spotify:track:1GZH9Sv6zCIse2GKihRHKy",
"spotify:album:31qVWUdRrlb8thMvts0yYL"
]
},
{
"appId":"applemusic",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['entitiesByUniqueId'] != null) { for (var key in res['entitiesByUniqueId']) { if (key.includes('ITUNES_SONG')) { var requestURL = 'https://api.song.link/v1-alpha.1/links?type=song&platform=itunes&id=' + res['entitiesByUniqueId'][key]['id']; var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['appleMusic'] != null) { var appURL = res['linksByPlatform']['appleMusic']['nativeAppUriMobile']; } completionHandler(appURL); } else if (key.includes('ITUNES_ALBUM')) { completionHandler('music://itunes.apple.com/album/id' + res['entitiesByUniqueId'][key]['id']); } } } completionHandler(null); }",
"testResults":[
"music://itunes.apple.com/us/album/_/1474018185?i=1474018186&mt=1&app=music&at=1000lHKX",
"music://itunes.apple.com/album/id1484742845"
]
},
{
"appId":"itunesstore",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['entitiesByUniqueId'] != null) { for (var key in res['entitiesByUniqueId']) { if (key.includes('ITUNES_SONG')) { var requestURL = 'https://api.song.link/v1-alpha.1/links?type=song&platform=itunes&id=' + res['entitiesByUniqueId'][key]['id']; var res = jsonRequest(requestURL); if (res != null && res['linksByPlatform'] != null && res['linksByPlatform']['appleMusic'] != null) { var appURL = res['linksByPlatform']['appleMusic']['nativeAppUriMobile'].replace('music://', 'itms://'); } completionHandler(appURL); } else if (key.includes('ITUNES_ALBUM')) { completionHandler('itms://itunes.apple.com/album/id' + res['entitiesByUniqueId'][key]['id']); } } } completionHandler(null); }",
"testResults":[
"itms://itunes.apple.com/us/album/_/1474018185?i=1474018186&mt=1&app=music&at=1000lHKX",
"itms://itunes.apple.com/album/id1484742845"
]
},
{
"appId":"youtube",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['entitiesByUniqueId'] != null) { for (var key in res['entitiesByUniqueId']) { if (key.includes('YOUTUBE_VIDEO')) { completionHandler('vnd.youtube://www.youtube.com/watch?v=' + res['entitiesByUniqueId'][key]['id']); } else if (key.includes('YOUTUBE_PLAYLIST')) { completionHandler('vnd.youtube://www.youtube.com/playlist?list=' + res['entitiesByUniqueId'][key]['id']); } } } completionHandler(null); }",
"testResults":[
"vnd.youtube://www.youtube.com/watch?v=ZjuA_o6Jzyo",
"vnd.youtube://www.youtube.com/playlist?list=PLHwvDXmNUa92NlFPooY1P5tfDo4T85ORz"
]
},
{
"appId":"soundcloud",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['entitiesByUniqueId'] != null) { for (var key in res['entitiesByUniqueId']) { if (key.includes('SOUNDCLOUD_SONG')) { completionHandler('soundcloud://sounds:' + res['entitiesByUniqueId'][key]['id']); } else if (key.includes('SOUNDCLOUD_PLAYLIST')) { completionHandler('soundcloud://playlists:' + res['entitiesByUniqueId'][key]['id']); } } } completionHandler(null); }",
"testResults":[
null,
"soundcloud://playlists:991346893"
]
},
{
"appId":"youtubemusic",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['entitiesByUniqueId'] != null) { for (var key in res['entitiesByUniqueId']) { if (key.includes('YOUTUBE_VIDEO')) { completionHandler('vnd.youtube://www.youtube.com/watch?v=' + res['entitiesByUniqueId'][key]['id']); } else if (key.includes('YOUTUBE_PLAYLIST')) { completionHandler('youtubemusic://www.youtube.com/playlist?list=' + res['entitiesByUniqueId'][key]['id']); } } } completionHandler(null); }",
"testResults":[
"youtubemusic://www.youtube.com/watch?v=ZjuA_o6Jzyo",
"youtubemusic://www.youtube.com/playlist?list=PLHwvDXmNUa92NlFPooY1P5tfDo4T85ORz"
]
},
{
"appId":"pandora",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['entitiesByUniqueId'] != null) { for (var key in res['entitiesByUniqueId']) { if (key.includes('PANDORA_SONG')) { completionHandler('pandorav4://backstage/track?pandoraId=' + res['entitiesByUniqueId'][key]['id']); } else if (key.includes('PANDORA_ALBUM')) { completionHandler('pandorav4://backstage/album?pandoraId=' + res['entitiesByUniqueId'][key]['id']); } } } completionHandler(null); }",
"testResults":[
"pandorav4://backstage/track?pandoraId=TR:20593906",
"pandorav4://backstage/album?pandoraId=AL:4715643"
]
},
{
"appId":"amazonmusic",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['entitiesByUniqueId'] != null) { for (var key in res['entitiesByUniqueId']) { if (key.includes('AMAZON_SONG')) { completionHandler('amznmp3://albums/_?trackAsin=' + res['entitiesByUniqueId'][key]['id']); } else if (key.includes('AMAZON_ALBUM')) { completionHandler('amznmp3://albums/' + res['entitiesByUniqueId'][key]['id']); } } } completionHandler(null); }",
"testResults":[
"amznmp3://albums/_?trackAsin=B07VQLSD1K",
"amznmp3://albums/B07ZJKS6D1"
]
},
{
"appId":"tidal",
"script2":"function process(url, completionHandler) { var requestURL = 'https://api.song.link/v1-alpha.1/links?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['entitiesByUniqueId'] != null) { for (var key in res['entitiesByUniqueId']) { if (key.includes('TIDAL_SONG')) { completionHandler('tidal://track/' + res['entitiesByUniqueId'][key]['id']); } else if (key.includes('TIDAL_ALBUM')) { completionHandler('tidal://album/' + res['entitiesByUniqueId'][key]['id']); } } } completionHandler(null); }",
"testResults":[
"tidal://track/113929184",
"tidal://album/130691516"
]
}
]
},
{
"regex":"https?(://(?:\\w+\\.)*zoom\\.(?:us|com)(?:\\.\\w+)*)/j/(\\d*)(?:.*?(pwd=\\w+).*?|.*)$",
"testInputs":[
"https://zoom.us/j/7083784912?pwd=eXlYS05Xd3F3SUJkY1VuVlMvT0p2UT09",
"https://us04web.zoom.us/j/9702782093?pwd=TUdSajFTaXpuSmpKSHhXRUZNWUJYQT09",
"https://vanderbilt.zoom.us/j/117407117",
"https://zoom.com.cn/j/3702319312"
],
"formats":[
{
"appId":"zoom",
"format":"zoomus$1/join?action=join&confno=$2&$3",
"testResults":[
"zoomus://zoom.us/join?action=join&confno=7083784912&pwd=eXlYS05Xd3F3SUJkY1VuVlMvT0p2UT09",
"zoomus://us04web.zoom.us/join?action=join&confno=9702782093&pwd=TUdSajFTaXpuSmpKSHhXRUZNWUJYQT09",
"zoomus://vanderbilt.zoom.us/join?action=join&confno=117407117&",
"zoomus://zoom.com.cn/join?action=join&confno=3702319312&"
]
}
]
},
{
"regex":"https?://(\\w+\\.)*craigslist\\.org/(.*)$",
"testInputs":[
"https://sfbay.craigslist.org/pen/sop/d/palo-alto-apple-32-pro-display-xdr/7128524663.html"
],
"formats":[
{
"appId":"craigslist",
"format":"craigslist://$2",
"testResults":[
"craigslist://pen/sop/d/palo-alto-apple-32-pro-display-xdr/7128524663.html"
]
}
]
},
{
"title":"Open Video",
"regex":"https?://(\\w+\\.)*dailymotion\\.com/video/(\\w+).*?$",
"testInputs":[
"https://www.dailymotion.com/video/x7v8llj"
],
"formats":[
{
"appId":"dailymotion",
"format":"dailymotion://video/$2",
"testResults":[
"dailymotion://video/x7v8llj"
]
}
]
},
{
"regex":"https?(://(\\w+\\.)*target(\\.\\w+)+/(?!gift-registry.*)(.*)$)",
"testInputs":[
"https://www.target.com/p/doom-eternal-xbox-one-digital/-/A-77435284",
"https://www.target.com/gift-registry/giftgiver?registryId=7321c1abb48948e297661a1bd6edfe40&type=BABY&ref=reg_home_friends_fam"
],
"formats":[
{
"appId":"target",
"format":"target$1",
"testResults":[
"target://www.target.com/p/doom-eternal-xbox-one-digital/-/A-77435284",
null
]
}
]
},
{
"title":"Open Comic",
"regex":"https?://(www\\.|m\\.)?xkcd\\.com/(\\d+).*?$",
"testInputs":[
"http://xkcd.com/1508/",
"http://m.xkcd.com/1694/"
],
"formats":[
{
"appId":"xkcdy",
"format":"xkcdy://comics/$2",
"testResults":[
"xkcdy://comics/1508",
"xkcdy://comics/1694"
]
}
]
},
{
"regex":"https?(://(\\w+\\.)*notion\\.(so|com)/.+)$",
"formats":[
{
"appId":"notion",
"format":"notion$1"
}
]
},
{
"title":"Open Meeting",
"regex":"https?(://(?:.+\\.)+webex\\.com/.*)(?:(?i)(?:mtid=))(.+)$",
"testInputs":[
"https://pwc-doit.webex.com/pwc-doit/k2/j.php?MTID=t4387317225f2575a17bb75824f10022c",
"https://pwc-doit.webex.com/pwc-doit/k2/j.php?MK=t4387317225f2575a17bb75824f10022c"
],
"formats":[
{
"appId":"webex",
"format":"wbx$1MK=$2",
"testResults":[
"wbx://pwc-doit.webex.com/pwc-doit/k2/j.php?MK=t4387317225f2575a17bb75824f10022c",
null
]
}
]
},
{
"title":"Open Meeting",
"regex":"https?(://(?:.+\\.)+webex\\.com/.*((?i)(?:mk=))(.+))$",
"testInputs":[
"https://pwc-doit.webex.com/pwc-doit/k2/j.php?MTID=t4387317225f2575a17bb75824f10022c",
"https://pwc-doit.webex.com/pwc-doit/k2/j.php?MK=t4387317225f2575a17bb75824f10022c"
],
"formats":[
{
"appId":"webex",
"format":"wbx$1",
"testResults":[
null,
"wbx://pwc-doit.webex.com/pwc-doit/k2/j.php?MK=t4387317225f2575a17bb75824f10022c"
]
}
]
},
{
"regex":"https?://sports\\.yahoo\\.com/.+$",
"testInputs":[
"https://sports.yahoo.com/from-ruins-to-renaissance-how-the-sports-card-market-became-appealing-to-investors-183139381.html"
],
"formats":[
{
"appId":"yahoosports",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('(ysportacular://.*?)\"').exec(res); var match = results != null && results.length > 1 ? results[1] : null; completionHandler(match); }",
"testResults":[
"ysportacular://v2/news/details?articleUuid=60eb833f-8780-3be5-90c9-469c9f6a8fcc&src=web"
]
}
]
},
{
"regex":"https?://(\\w+\\.)*(cbsnews\\.com/.*)$",
"testInputs":[
"https://www.cbsnews.com/live-updates/trump-pardons-capitol-security-inauguration/"
],
"formats":[
{
"appId":"cbsnews",
"format":"cbsnewsapp://$2",
"testResults":[
"cbsnewsapp://cbsnews.com/live-updates/trump-pardons-capitol-security-inauguration/"
]
}
]
},
{
"title":"Open Product",
"regex":"https?://(www\\.)walmart\\.com/ip/([^/]+/)?(\\d+).*?$",
"testInputs":[
"https://www.walmart.com/ip/XB1-Xbox-Series-X/606518560",
"https://www.walmart.com/ip/443574645",
"https://www.walmart.com/cp/xbox-series/9206773"
],
"formats":[
{
"appId":"walmart",
"format":"walmart://ip/$3",
"testResults":[
"walmart://ip/606518560",
"walmart://ip/443574645",
null
]
}
]
},
{
"title":"Open Group",
"regex":"https?://signal\\.group/(#.*)$",
"testInputs":[
"https://signal.group/#CjQKIKrT9fPKRmW7zdlXndPA0kZ2p3JT12cA5t3U78LKwktNEhA6R4LtxlNpIvmbNsziRNXN"
],
"formats":[
{
"appId":"signal",
"format":"sgnl://signal.group/$1",
"testResults":[
"sgnl://signal.group/#CjQKIKrT9fPKRmW7zdlXndPA0kZ2p3JT12cA5t3U78LKwktNEhA6R4LtxlNpIvmbNsziRNXN"
]
}
]
},
{
"title":"Open Note",
"regex":"https?://note\\.com/\\w+/n/(\\w+).*?$",
"testInputs":[
"https://note.com/hamu81848551/n/n744f9359522b",
"https://note.com/hamu81848551"
],
"formats":[
{
"appId":"note",
"format":"note://note/$1",
"testResults":[
"note://note/n744f9359522b",
null
]
}
]
},
{
"title":"Open Profile",
"regex":"https?://note\\.com/(\\w+)(/(?!n/.*).*?)?$",
"testInputs":[
"https://note.com/hamu81848551/n/n744f9359522b",
"https://note.com/hamu81848551"
],
"formats":[
{
"appId":"note",
"format":"note://user/$1",
"testResults":[
null,
"note://user/hamu81848551"
]
}
]
},
{
"regex":"https?(://(\\w+\\.)*bestbuy\\.com/site/.*)",
"testInputs":[
"https://www.bestbuy.com/site/microsoft-controller-for-xbox-series-x-xbox-series-s-and-xbox-one-latest-model-carbon-black/6430655.p?skuId=6430655"
],
"formats":[
{
"appId":"bestbuy",
"format":"bestbuy$1",
"testResults":[
"bestbuy://www.bestbuy.com/site/microsoft-controller-for-xbox-series-x-xbox-series-s-and-xbox-one-latest-model-carbon-black/6430655.p?skuId=6430655"
]
}
]
},
{
"title":"Open Product",
"regex":"https?://(\\w+\\.)*bhphotovideo\\.com/c/product/([^/]+).*?$",
"testInputs":[
"https://www.bhphotovideo.com/c/product/1619483-REG/sony_ilce_1_b_alpha_a1_mirrorless_digital.html",
"https://www.bhphotovideo.com/c/buy/Mirrorless-Cameras/ci/16158/N/4288586281",
"https://www.bhphotovideo.com/c/buy/Digital-Cameras/ci/9811/N/4288586282"
],
"formats":[
{
"appId":"bhphoto",
"format":"bhphoto://product?product_id=$2",
"testResults":[
"bhphoto://product?product_id=1619483-REG",
null,
null
]
}
]
},
{
"regex":"https?://(?:\\w+\\.)*bhphotovideo\\.com/c/buy/.*/ci/(\\d+)/N/(\\d+).*?$",
"testInputs":[
"https://www.bhphotovideo.com/c/product/1619483-REG/sony_ilce_1_b_alpha_a1_mirrorless_digital.html",
"https://www.bhphotovideo.com/c/buy/Mirrorless-Cameras/ci/16158/N/4288586281",
"https://www.bhphotovideo.com/c/buy/Digital-Cameras/ci/9811/N/4288586282"
],
"formats":[
{
"appId":"bhphoto",
"format":"bhphoto://category?endeca_id=$2&ci=$1",
"testResults":[
null,
"bhphoto://category?endeca_id=4288586281&ci=16158",
"bhphoto://category?endeca_id=4288586282&ci=9811"
]
}
]
},
{
"title":"Open Listing",
"regex":"https?://(?:\\w+\\.)?streeteasy\\.com/(?:sale|building)/.+$",
"testInputs":[
"https://streeteasy.com/sale/1544178",
"https://streeteasy.com/building/atelier-condominium/9b"
],
"formats":[
{
"appId":"streeteasy",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('ios-app://660363289/streeteasy/([^\\']+)\\'').exec(res); var match = results != null && results.length > 1 ? 'streeteasy://' + results[1] : null; completionHandler(match); }",
"testResults":[
"streeteasy://sale/1544178",
"streeteasy://rental/2770017"
]
}
]
},
{
"regex":"https?://((\\w+\\.)*apple\\.com/(\\w+/)?shop/.+)$",
"testInputs":[
"https://www.apple.com/shop/buy-iphone/carrier-offers",
"https://www.apple.com/ca/shop/buy-iphone/carrier-offers"
],
"formats":[
{
"appId":"applestore",
"format":"applestore://$1",
"testResults":[
"applestore://www.apple.com/shop/buy-iphone/carrier-offers",
"applestore://www.apple.com/ca/shop/buy-iphone/carrier-offers"
]
}
]
},
{
"regex":"https?://news.yahoo.co.jp/.+$",
"testInputs":[
"https://news.yahoo.co.jp/articles/6f725158836acbd8b7b9bf80e060ba9e447a43f3",
"https://news.yahoo.co.jp/pickup/6399291",
"https://news.yahoo.co.jp/categories/sports"
],
"formats":[
{
"appId":"yahoonewsjp",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('(yj\\\\w+://.*?)\"').exec(res); var match = results != null && results.length > 1 ? results[1] : null; completionHandler(match); }",
"testResults":[
"yjtrend://d/hdl/20210721-07211049-sph-soci",
"yjtrend://d/tpc/6399291",
"yjnews://l/top/"
]
}
]
},
{
"title":"Open Story",
"regex":"https?://(\\w+\\.)*theepochtimes\\.com/((?!c-.*).+)$",
"testInputs":[
"https://www.theepochtimes.com/immediately-cease-repression-of-falun-gong-us-tells-beijing-on-eve-of-persecution-anniversary_3908539.html",
"https://link.theepochtimes.com/mkt_app/remembering-the-fallen-22-years-of-persecution-and-punishment_3909264.html",
"https://www.theepochtimes.com/c-science"
],
"formats":[
{
"appId":"theepochtimes",
"format":"eetapp://applinks/$2",
"testResults":[
"eetapp://applinks/immediately-cease-repression-of-falun-gong-us-tells-beijing-on-eve-of-persecution-anniversary_3908539.html",
"eetapp://applinks/mkt_app/remembering-the-fallen-22-years-of-persecution-and-punishment_3909264.html",
null
]
}
]
},
{
"regex":"https?://(\\w+\\.)*olx\\.com\\.br/.*(/|-)(\\d+)(\\.html?)?$",
"testInputs":[
"https://www.olx.com.br/vi/908354794.htm",
"https://mg.olx.com.br/belo-horizonte-e-regiao/servicos/gesseiro-908190242",
"https://sp.olx.com.br/sao-paulo-e-regiao/celulares/smartphone-moto-e7-plus-desbloqueado-907800417",
"https://sc.olx.com.br/norte-de-santa-catarina"
],
"formats":[
{
"appId":"olx",
"format":"olxapp://adpage/&id=$3",
"testResults":[
"olxapp://adpage/&id=908354794",
"olxapp://adpage/&id=908190242",
"olxapp://adpage/&id=907800417",
null
]
}
]
},
{
"regex":"https?://(\\w+\\.)*olx\\.com\\.br/(?!.*(/|-)(\\d+)(\\.html?)?).+$",
"testInputs":[
"https://www.olx.com.br/vi/908354794.htm",
"https://mg.olx.com.br/belo-horizonte-e-regiao/servicos/gesseiro-908190242",
"https://sp.olx.com.br/sao-paulo-e-regiao/celulares/smartphone-moto-e7-plus-desbloqueado-907800417",
"https://sc.olx.com.br/norte-de-santa-catarina"
],
"formats":[
{
"appId":"olx",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('(olxapp://.*?)\"').exec(res); var match = results != null && results.length > 1 ? results[1] : null; completionHandler(match); }",
"testResults":[
null,
null,
null,
"olxapp://list/&state=11&region=47"
]
}
]
},
{
"regex":"https?://(\\w+\\.)*vinted(\\.\\w+)+/.+$",
"testInputs":[
"https://www.vinted.co.uk/women/shoes/heels/high-heels/1249887661-asos-orange-heeled-sandals",
"https://www.vinted.fr/member/12918-emilielou",
"https://www.vinted.pl/kobiety/kosmetyki/pielegnacja-twarzy/147364862-normalizujacy-tonik-do-twarzy-vianek"
],
"formats":[
{
"appId":"vinted",
"script2":"function process(url, completionHandler) { var res = httpRequest(url); var results = RegExp('(vinted\\\\w+://.*?)\"').exec(res); var match = results != null && results.length > 1 ? results[1] : null; completionHandler(match); }",
"testResults":[
"vintedfr://item?id=1249887661&portal=fr",
"vintedfr://user?id=12918&portal=fr",
"vintedpl://item?id=147364862&portal=pl"
]
}
]
}
],
"apps":[
{
"name":"Apollo",
"identifier":"apollo",
"storeId":979274575,
"scheme":"apollo"
},
{
"name":"YouTube",
"identifier":"youtube",
"storeId":544007664,
"scheme":"youtube"
},
{
"name":"Twitter",
"identifier":"twitter",
"storeId":333903271,
"macStoreId":1482454543,
"scheme":"twitter"
},
{
"name":"Amazon",
"identifier":"amazon",
"storeId":297606951,
"scheme":"com.amazon.mobile.shopping",
"docs":"https://stackoverflow.com/a/35697717/3943258"
},
{
"name":"Google Maps",
"identifier":"googlemaps",
"storeId":585027354,
"scheme":"comgooglemapsurl",
"docs":"https://developers.google.com/maps/documentation/ios/urlscheme"
},
{
"name":"Instagram",
"identifier":"instagram",
"storeId":389801252,
"scheme":"instagram"
},
{
"name":"App Store",
"identifier":"appstore",
"scheme":"itms-apps",
"iconURL":"https://s3.amazonaws.com/www.opener.link/app-icon/appstore-120.jpg"
},
{
"name":"Tweetbot",
"identifier":"tweetbot",
"storeId":1527500834,
"macStoreId":1384080005,
"scheme":"tweetbot",
"docs":"http://tapbots.net/tweetbot3/support/url-schemes/"
},
{
"name":"narwhal",
"identifier":"narwhal",
"storeId":845422455,
"scheme":"narwhal"
},
{
"name":"Reddit",
"identifier":"reddit",
"storeId":1064216828,
"scheme":"reddit"
},
{
"name":"pixiv",
"identifier":"pixiv",
"storeId":337248563,
"scheme":"pixiv"
},
{
"name":"Zoom",
"identifier":"zoom",
"storeId":546505307,
"scheme":"zoomus"
},
{
"name":"Spotify",
"identifier":"spotify",
"storeId":324684580,
"scheme":"spotify"
},
{
"name":"VLC",
"identifier":"vlc",
"storeId":650377962,
"scheme":"vlc-x-callback",
"docs":"https://wiki.videolan.org/Documentation:IOS/#x-callback-url and https://wiki.videolan.org/VLC_Features_Formats/"
},
{
"name":"Apple Maps",
"identifier":"applemaps",
"storeId":915056765,
"scheme":"maps"
},
{
"name":"Facebook",
"identifier":"facebook",
"storeId":284882215,
"scheme":"fb"
},
{
"name":"Amazon Music",
"identifier":"amazonmusic",
"storeId":510855668,
"scheme":"amznmp3"
},
{
"name":"Ivory",
"identifier":"ivory",
"storeId":1294347486,
"scheme":"ivory"
},
{
"name":"NYTimes",
"identifier":"nytimes",
"storeId":284862083,
"scheme":"nytimes"
},
{
"name":"Lookmark",
"identifier":"lookmark",
"storeId":1016517297,
"scheme":"lookmark"
},
{
"name":"Google Sheets",
"identifier":"googlesheets",
"storeId":842849113,
"scheme":"googlesheets"
},
{
"name":"GitHub",
"identifier":"github",
"storeId":1477376905,
"scheme":"github"
},
{
"name":"Apple News",
"identifier":"applenews",
"storeId":1066498020,
"scheme":"applenews"
},
{
"name":"TikTok",
"identifier":"tiktok",
"scheme":"snssdk1233",
"iconURL":"https://s3.amazonaws.com/www.opener.link/app-icon/tiktok-120-2.jpg"
},
{
"name":"Musi",
"identifier":"musi",
"scheme":"musi",
"iconURL":"https://s3.amazonaws.com/www.opener.link/app-icon/musi-114.jpg",
"docs":"https://db.tt/u0SzsnCf7u"
},
{
"name":"Twitch",
"identifier":"twitch",
"storeId":460177396,
"scheme":"twitch",
"docs":"https://github.com/justintv/Twitch-API/blob/master/mobile_deeplinks.md"
},
{
"name":"iTunes Store",
"identifier":"itunesstore",
"storeId":915061235,
"scheme":"itms"
},
{
"name":"VK",
"identifier":"vk",
"storeId":564177498,
"scheme":"vk",
"docs":"http://handleopenurl.com/scheme/vk"
},
{
"name":"Twitterrific",
"identifier":"twitterrific",
"storeId":580311103,
"macStoreId":1289378661,
"scheme":"twitterrific",
"docs":"http://support.iconfactory.com/kb/twitterrific/url-schemes-in-twitterrific and http://twitterrific.com/ios/poweruser"
},
{
"name":"Wikipedia",
"identifier":"wikipedia",
"storeId":324715238,
"scheme":"wikipedia-official",
"docs":"https://goo.gl/HPyqeR and https://goo.gl/XvFQr4"
},
{
"name":"Documents",
"identifier":"documents",
"storeId":364901807,
"scheme":"rhttp",
"docs":"https://helpspot.readdle.com/documents/index.php?pg=kb.page&id=516"
},
{
"name":"Waze",
"identifier":"waze",
"storeId":323229106,
"scheme":"waze",
"docs":"https://www.waze.com/about/dev"
},
{
"name":"Taobao",
"identifier":"taobao",
"storeId":387682726,
"scheme":"taobao"
},
{
"name":"V for Wikipedia",
"identifier":"viki",
"storeId":993435362,
"scheme":"v-for-wiki",
"docs":"http://bit.ly/1RIpw7c"
},
{
"name":"Apple Music",
"identifier":"applemusic",
"storeId":1108187390,
"scheme":"music"
},
{
"name":"Slide",
"identifier":"slide",
"storeId":1260626828,
"scheme":"slide",
"docs":"https://bit.ly/2IieyGV"
},
{
"name":"Google Drive",
"identifier":"googledrive",
"storeId":507874739,
"scheme":"googledrive",
"docs":"http://stackoverflow.com/questions/21049526/how-does-one-open-a-document-in-the-native-google-drive-ios-app"
},
{
"name":"Tumblr",
"identifier":"tumblr",
"storeId":305343404,
"scheme":"tumblr"
},
{
"name":"The Athletic",
"identifier":"theathletic",
"storeId":1135216317,
"scheme":"theathletic"
},
{
"name":"Dropbox",
"identifier":"dropbox",
"storeId":327630330,
"scheme":"dbapi-6"
},
{
"name":"CornerTube",
"identifier":"cornertube",
"storeId":1073199994,
"scheme":"cornertube"
},
{
"name":"YouTube Music",
"identifier":"youtubemusic",
"storeId":1017492454,
"scheme":"youtubemusic"
},
{
"name":"AliExpress",
"identifier":"aliexpress",
"storeId":436672029,
"scheme":"aliexpress",
"platform":"phone"
},
{
"name":"Google Docs",
"identifier":"googledocs",
"storeId":842842640,
"scheme":"googledocs"
},
{
"name":"SoundCloud",
"identifier":"soundcloud",
"storeId":336353151,
"scheme":"soundcloud"
},
{
"name":"Aviary",
"identifier":"aviary",
"storeId":1522043420,
"scheme":"aviary"
},
{
"name":"eBay",
"identifier":"ebay",
"storeId":282614216,
"scheme":"ebay"
},
{
"name":"Telegram",
"identifier":"telegram",
"storeId":686449807,
"macStoreId":747648890,
"scheme":"tg"
},
{
"name":"Shortcuts",
"identifier":"workflow",
"storeId":915249334,
"scheme":"workflow"
},
{
"name":"OPlayer Lite",
"identifier":"oplayerlite",
"storeId":385907472,
"scheme":"oplayerlite"
},
{
"name":"Pinterest",
"identifier":"pinterest",
"storeId":429047995,
"scheme":"pinterest"
},
{
"name":"Overcast",
"identifier":"overcast",
"storeId":888422857,
"scheme":"overcast"
},
{
"name":"Weibo Intl.",
"identifier":"weibointernational",
"storeId":1215210046,
"scheme":"weibointernational",
"docs":"https://db.tt/7vAu94IQ8i"
},
{
"name":"Medium",
"identifier":"medium",
"storeId":828256236,
"scheme":"medium"
},
{
"name":"Target",
"identifier":"target",
"storeId":297430070,
"scheme":"target"
},
{
"name":"Imgur",
"identifier":"imgur",
"storeId":639881495,
"scheme":"imgur"
},
{
"name":"Best Buy",
"identifier":"bestbuy",
"storeId":314855255,
"scheme":"bestbuy"
},
{
"name":"Weibo",
"identifier":"weibo",
"storeId":350962117,
"scheme":"sinaweibo"
},
{
"name":"PDF Expert",
"identifier":"pdfexpert",
"storeId":743974925,
"scheme":"pdfehttp",
"docs":"https://helpspot.readdle.com/pdfexpert/index.php?pg=kb.page&id=496"
},
{
"name":"GoodReader",
"identifier":"goodreader",
"storeId":777310222,
"scheme":"ghttp"
},
{
"name":"nPlayer",
"identifier":"nplayer",
"storeId":539397400,
"macStoreId":1451273814,
"scheme":"nplayer",
"docs":"http://forum.nplayer.tv/topic/328/custom-url-scheme/7 and https://db.tt/fyXxQtMW"
},
{
"name":"niconico",
"identifier":"niconico",
"storeId":307764057,
"scheme":"niconico"
},
{
"name":"Price Tag",
"identifier":"pricetag",
"scheme":"pricetag",
"iconURL":"https://s3.amazonaws.com/www.opener.link/app-icon/pricetag-114.jpg"
},
{
"name":"Etsy",
"identifier":"etsy",
"storeId":477128284,
"scheme":"etsy"
},
{
"name":"Notion",
"identifier":"notion",
"storeId":1232780281,
"scheme":"notion"
},
{
"name":"Kickstarter",
"identifier":"kickstarter",
"storeId":596961532,
"scheme":"ksr"
},
{
"name":"Octal",
"identifier":"octal",
"storeId":1308885491,
"scheme":"octal",
"docs":"https://db.tt/arGn8KwhFi, https://github.com/dangwu/Octal/issues/72"
},
{
"name":"The Wall Street Journal",
"identifier":"wsj",
"storeId":364387007,
"scheme":"wsj"
},
{
"name":"Flickr",
"identifier":"flickr",
"storeId":328407587,
"scheme":"flickr",
"docs":"https://www.flickr.com/services/api/misc.urls.html"
},
{
"name":"VSCO",
"identifier":"vscocam",
"storeId":588013838,
"scheme":"vsco"
},
{
"name":"Apple TV",
"identifier":"appletv",
"storeId":1174078549,
"scheme":"com.apple.tv"
},
{
"name":"Swarm",
"identifier":"swarm",
"storeId":870161082,
"scheme":"swarm"
},
{
"name":"Quora",
"identifier":"quora",
"storeId":456034437,
"scheme":"quora"
},
{
"name":"Pocket Casts",
"identifier":"pocketcasts",
"storeId":414834813,
"scheme":"pktc",
"docs":"http://support.pocketcasts.com/article/how-can-i-use-pocket-casts-with-apps-like-launch-center/"
},
{
"name":"Yahoo! Auctions",
"identifier":"yahooauctions",
"storeId":356968629,
"scheme":"yjauctions",
"country":"jp"
},
{
"name":"Antenna",
"identifier":"amrc",
"scheme":"amrc",
"iconURL":"https://s3.amazonaws.com/www.opener.link/app-icon/antenna-120-g.jpg",
"docs":"https://www.reddit.com/r/amrc/comments/329z6d/beta_just_wanted_to_say_thanks/"
},
{
"name":"Google Photos",
"identifier":"googlephotos",
"storeId":962194608,
"scheme":"googlephotos"
},
{
"name":"Infuse",
"identifier":"infuse",
"storeId":1136220934,
"scheme":"infuse",
"docs":"https://support.firecore.com/hc/en-us/articles/215090997-Callback-URLs"
},
{
"name":"IMDb",
"identifier":"imdb",
"storeId":342792525,
"scheme":"imdb",
"docs":"http://wiki.akosma.com/IPhone_URL_Schemes#IMDb_Movies_.26_TV and http://handleopenurl.com/scheme/imdb-movies-and-tv"
},
{
"name":"Walmart",
"identifier":"walmart",
"storeId":338137227,
"scheme":"walmart"
},
{
"name":"The Guardian",
"identifier":"theguardian",
"storeId":409128287,
"scheme":"gnmguardian"
},
{
"name":"BaconReader",
"identifier":"baconreader",
"storeId":725730936,
"scheme":"baconreader",
"docs":"https://db.tt/YiwQSygnrO"
},
{
"name":"Apple Podcasts",
"identifier":"applepodcasts",
"storeId":525463029,
"scheme":"podcasts"
},
{
"name":"Deliveries",
"identifier":"deliveries",
"storeId":290986013,
"scheme":"deliveries"
},
{
"name":"LinkedIn",
"identifier":"linkedin",
"storeId":288429040,
"scheme":"linkedin"
},
{
"name":"CodeHub",
"identifier":"codehub",
"scheme":"codehub",
"iconURL":"https://s3.amazonaws.com/www.opener.link/app-icon/codehub.jpg",
"docs":"https://github.com/thedillonb/CodeHub/blob/master/CodeHub.iOS/AppDelegate.cs#L258-L280 and https://github.com/thedillonb/CodeHub/issues/19"
},
{
"name":"TestFlight",
"identifier":"testflight",
"storeId":899247664,
"scheme":"itms-beta"
},
{
"name":"Vimeo",
"identifier":"vimeo",
"storeId":425194759,
"scheme":"vimeo",
"docs":"https://developer.vimeo.com/apis/simple and https://github.com/vimeo/VIMDeeplink"
},
{
"name":"Fenix",
"identifier":"fenix",
"storeId":1437821840,
"scheme":"fenix"
},
{
"name":"LIHKG",
"identifier":"lihkg",
"storeId":1178373396,
"scheme":"lihkg"
},
{
"name":"Comet",
"identifier":"comet",
"storeId":1146204813,
"scheme":"comet"
},
{
"name":"Newegg",
"identifier":"newegg",
"storeId":345188269,
"scheme":"ngm"
},
{
"name":"Note",
"identifier":"note",
"storeId":906581110,
"scheme":"note"
},
{
"name":"Webex Meet",
"identifier":"webex",
"storeId":298844386,
"scheme":"wbx",
"docs":"https://www.ketianyun.com/files/docfile/pdf/IOS_wbx_scheme.pdf"
},
{
"name":"WSH LST",
"identifier":"wshlst",
"storeId":1323785754,
"scheme":"wshlst",
"docs":"https://db.tt/hc4v5XExOr"
},
{
"name":"Airbnb",
"identifier":"airbnb",
"storeId":401626263,
"scheme":"airbnb"
},
{
"name":"CatchApp",
"identifier":"catchapp",
"storeId":362047999,
"scheme":"catchapp",
"country":"jp",
"platform":"phone"
},
{
"name":"PPHub",
"identifier":"pphub",
"storeId":1314212521,
"scheme":"pphub",
"docs":"https://db.tt/d6RQ8Fe4Ie, https://bit.ly/2SPj1VJ"
},
{
"name":"Spring",
"identifier":"spring",
"storeId":1508706541,
"scheme":"spring",
"docs":"https://github.com/JunyuKuang/Project-Spring-for-Twitter/blob/master/URL%20Schemes.md"
},
{
"name":"Readder",
"identifier":"readder",
"storeId":1043575806,
"scheme":"readder",
"docs":"https://www.reddit.com/r/readder/comments/5sbf3b/url_schemexcallback_support/"
},
{
"name":"SmilePlayer2",
"identifier":"smileplayer2",
"scheme":"smileplayer2",
"iconURL":"https://s3.amazonaws.com/www.opener.link/app-icon/smileplayer-120-g.jpg"
},
{
"name":"Snapchat",
"identifier":"snapchat",
"storeId":447188370,
"scheme":"snapchat"
},
{
"name":"Zillow",
"identifier":"zillow",
"storeId":310738695,
"scheme":"zillowapp"
},
{
"name":"Cachly",
"identifier":"cachly",
"storeId":645384141,
"scheme":"cachly"
},
{
"name":"Evernote",
"identifier":"evernote",
"storeId":281796108,
"scheme":"evernote",
"docs":"https://dev.evernote.com/doc/articles/note_links.php"
},
{
"name":"Apple Books",
"identifier":"ibooks",
"storeId":364709193,
"scheme":"itms-books"
},
{
"name":"Yelp",
"identifier":"yelp",
"storeId":284910350,
"scheme":"yelp"
},
{
"name":"Castro",
"identifier":"castro",
"storeId":1080840241,
"scheme":"castro",
"docs":"https://db.tt/W3jwOEI2"
},
{
"name":"DeviantArt",
"identifier":"deviantart",
"storeId":925219396,
"scheme":"deviantart",
"docs":"https://www.deviantart.com/developers/app_links"
},
{
"name":"Eventbrite",
"identifier":"eventbrite",
"storeId":487922291,
"scheme":"com-eventbrite-attendee"
},
{
"name":"Goodreads",
"identifier":"goodreads",
"storeId":355833469,
"scheme":"goodreads"
},
{
"name":"Jingdong",
"identifier":"jingdong",
"storeId":414245413,
"scheme":"openapp.jdmobile"
},
{
"name":"NYT Cooking",
"identifier":"nytcooking",
"storeId":911422904,
"scheme":"nytcooking"
},
{
"name":"HACK",
"identifier":"hack",
"storeId":1464477788,
"scheme":"hack",
"docs":"https://db.tt/qT9KXSfk95"
},
{
"name":"Google Slides",
"identifier":"googleslides",
"storeId":879478102,
"scheme":"googleslides"
},
{
"name":"Coderx",
"identifier":"grape",
"storeId":1371929193,
"scheme":"grape",
"docs":"https://db.tt/xAauKtgWxJ"
},
{
"name":"WikiLinks",
"identifier":"wikilinks",
"storeId":990956008,
"scheme":"wikilinks"
},
{
"name":"Le Monde",
"identifier":"lemonde",
"storeId":294047850,
"scheme":"lmfr"
},
{
"name":"Product Hunt",
"identifier":"producthunt",
"storeId":904658671,
"scheme":"producthunt"
},
{
"name":"Zhihu",
"identifier":"zhihu",
"storeId":432274380,
"scheme":"zhihu"
},
{
"name":"Pixez",
"identifier":"pixez",
"storeId":1494435126,
"scheme":"pixez"
},
{
"name":"CatchApp",
"identifier":"catchapppad",
"storeId":438159430,
"scheme":"catchapp",
"country":"jp",
"platform":"pad"
},
{
"name":"Mixcloud",
"identifier":"mixcloud",
"storeId":401206431,
"scheme":"mc"
},
{
"name":"PDF Viewer",
"identifier":"pdfviewer",
"storeId":1120099014,
"scheme":"pdfviewer",
"docs":"https://pdfviewer.io/guides/ios/url-scheme/"
},
{
"name":"Wikipanion",
"identifier":"wikipanion",
"storeId":288349436,
"scheme":"wplink",
"platform":"phone"
},
{
"name":"Working Copy",
"identifier":"workingcopy",
"storeId":896694807,
"scheme":"working-copy",
"docs":"http://workingcopyapp.com/url-schemes.html"
},
{
"name":"Beam",
"identifier":"beam",
"scheme":"beamapp",
"iconURL":"https://s3.amazonaws.com/www.opener.link/app-icon/beam.jpg",
"docs":"https://twitter.com/beamreddit/status/762625995568472064"
},
{
"name":"ESPN",
"identifier":"espn",
"storeId":317469184,
"scheme":"sportscenter"
},
{
"name":"Netflix",
"identifier":"netflix",
"storeId":363590051,
"scheme":"nflx"
},
{
"name":"Slickdeals",
"identifier":"slickdeals",
"storeId":584632814,
"scheme":"slickdeals"
},
{
"name":"Tabelog",
"identifier":"tabelog",
"storeId":763377066,
"scheme":"tabelog-v2",
"country":"jp"
},
{
"name":"TIDAL",
"identifier":"tidal",
"storeId":913943275,
"scheme":"tidal"
},
{
"name":"Trello",
"identifier":"trello",
"storeId":461504587,
"scheme":"trello",
"docs":"https://trello.com/c/cJfzOdDm/188-automate-with-url-scheme"
},
{
"name":"bilibili",
"identifier":"bilibili",
"storeId":736536022,
"scheme":"bilibili",
"country":"cn"
},
{
"name":"Charm",
"identifier":"charm",
"storeId":1102153379,
"scheme":"x-charm",
"docs":"http://bit.ly/29sCrgV"
},
{
"name":"Genius",
"identifier":"genius",
"storeId":709482991,
"scheme":"genius"
},
{
"name":"Strava",
"identifier":"strava",
"storeId":426826309,
"scheme":"strava"
},
{
"name":"Blind",
"identifier":"blind",
"storeId":737534965,
"scheme":"teamblind"
},
{
"name":"Meetup",
"identifier":"meetup",
"storeId":375990038,
"scheme":"meetup"
},
{
"name":"Mercado Libre",
"identifier":"mercadolibre",
"storeId":463624852,
"scheme":"meli"
},
{
"name":"Booking.com",
"identifier":"booking",
"storeId":367003839,
"scheme":"booking"
},
{
"name":"Doodle",
"identifier":"doodle",
"storeId":938182547,
"scheme":"doodle"
},
{
"name":"GIPHY",
"identifier":"giphy",
"storeId":974748812,
"scheme":"giphy"
},
{
"name":"Glassdoor",
"identifier":"glassdoor",
"storeId":589698942,
"scheme":"glassdoor"
},
{
"name":"Stack Exchange",
"identifier":"stackexchange",
"scheme":"se-zaphod",
"iconURL":"https://s3.amazonaws.com/www.opener.link/app-icon/se-120-g.jpg",
"docs":"http://stackexchange.com/feeds/sites"
},
{
"name":"Airtable",
"identifier":"airtable",
"storeId":914172636,
"scheme":"airtable"
},
{
"name":"Box",
"identifier":"box",
"storeId":290853822,
"scheme":"boxopenshared"
},
{
"name":"Dailymotion",
"identifier":"dailymotion",
"storeId":336978041,
"scheme":"dailymotion"
},
{
"name":"Moke",
"identifier":"moke",
"scheme":"moke",
"iconURL":"https://s3.amazonaws.com/www.opener.link/app-icon/moke.jpg",
"docs":"http://moke.com/moke/url_schemes.html"
},
{
"name":"TED",
"identifier":"ted",
"storeId":376183339,
"scheme":"ted"
},
{
"name":"Anchor",
"identifier":"anchor",
"storeId":1056182234,
"scheme":"anchorfm"
},
{
"name":"Citymapper",
"identifier":"citymapper",
"storeId":469463298,
"scheme":"citymapper",
"docs":"https://citymapper.com/tools/1053/launch-citymapper-for-directions"
},
{
"name":"Namuwiki",
"identifier":"namuviewer",
"storeId":993035669,
"scheme":"namuviewer"
},
{
"name":"NewsPicks",
"identifier":"newspicks",
"storeId":640956497,
"scheme":"newspicks"
},
{
"name":"PipTube",
"identifier":"piptube",
"scheme":"piptube",
"iconURL":"https://s3.amazonaws.com/www.opener.link/app-icon/piptube-114.jpg",
"platform":"pad"
},
{
"name":"sspai",
"identifier":"sspai",
"storeId":1191720421,
"scheme":"sspai"
},
{
"name":"Wikipanion",
"identifier":"wikipanionpad",
"storeId":364195592,
"scheme":"wplink",
"platform":"pad"
},
{
"name":"BuzzFeed",
"identifier":"buzzfeed",
"storeId":352969997,
"scheme":"buzzfeed"
},
{
"name":"Gfycat",
"identifier":"gfycat",
"storeId":1034129733,
"scheme":"gfycat"
},
{
"name":"Jayson",
"identifier":"jayson",
"storeId":1447750768,
"scheme":"jayson"
},
{
"name":"music.163.com",
"identifier":"orpheus",
"scheme":"orpheus",
"iconURL":"https://s3.amazonaws.com/www.opener.link/app-icon/orpheus-114.jpg"
},
{
"name":"Redfin",
"identifier":"redfin",
"storeId":327962480,
"scheme":"redfin"
},
{
"name":"SoundHound",
"identifier":"soundhound",
"storeId":355554941,
"scheme":"soundhound"
},
{
"name":"Wolfram Alpha",
"identifier":"wolframalpha",
"storeId":334989259,
"scheme":"wolframalpha"
},
{
"name":"Prime Video",
"identifier":"amazonprimevideo",
"storeId":545519333,
"scheme":"aiv"
},
{
"name":"Behance",
"identifier":"behance",
"storeId":489667151,
"scheme":"behance"
},
{
"name":"500px",
"identifier":"500px",
"storeId":471965292,
"scheme":"px"
},
{
"name":"9GAG",
"identifier":"9gag",
"storeId":545551605,
"scheme":"ninegag"
},
{
"name":"ABC News",
"identifier":"abcnewsiphone",
"storeId":300255638,
"scheme":"abcnewsiphone",
"platform":"phone"
},
{
"name":"AliExpress",
"identifier":"aliexpresshd",
"storeId":854356557,
"scheme":"aliexpresshd",
"platform":"pad"
},
{
"name":"Alibaba",
"identifier":"alibaba",
"storeId":503451073,
"scheme":"enalibaba"
},
{
"name":"Amaroq",
"identifier":"amaroq",
"storeId":1214116200,
"scheme":"amaroq"
},
{
"name":"AppAdvice",
"identifier":"appadvice",
"storeId":364906378,
"scheme":"aaexternal"
},
{
"name":"Asana",
"identifier":"asana",
"storeId":489969512,
"scheme":"asana"
},
{
"name":"B&H Photo",
"identifier":"bhphoto",
"storeId":390928219,
"scheme":"bhphoto"
},
{
"name":"Blendle",
"identifier":"blendle",
"storeId":947936149,
"scheme":"blendle"
},
{
"name":"CBS News",
"identifier":"cbsnews",
"storeId":334256223,
"scheme":"cbsnewsapp"
},
{
"name":"Crew",
"identifier":"crew",
"storeId":1547171709,
"scheme":"crewforstackoverflow"
},
{
"name":"Daum",
"identifier":"daum",
"storeId":365494029,
"scheme":"daumapps"
},
{
"name":"Deezer",
"identifier":"deezer",
"storeId":292738169,
"scheme":"deezer"
},
{
"name":"Douyu",
"identifier":"douyu",
"storeId":863882795,
"scheme":"douyutv"
},
{
"name":"Dropbox Paper",
"identifier":"dropboxpaper",
"storeId":1126623662,
"scheme":"dbx-paper"
},
{
"name":"Dubsmash",
"identifier":"dubsmash",
"storeId":918820076,
"scheme":"dubsmash"
},
{
"name":"Fancy",
"identifier":"fancy",
"storeId":407324335,
"scheme":"fancy"
},
{
"name":"Flipboard",
"identifier":"flipboard",
"storeId":358801284,
"scheme":"flipboard"
},
{
"name":"Foursquare",
"identifier":"foursquare",
"storeId":306934924,
"scheme":"foursquare"
},
{
"name":"GitHawk",
"identifier":"githawk",
"storeId":1252320249,
"scheme":"freetime",
"docs":"https://github.com/GitHawkApp/GitHawkRoutes"
},
{
"name":"Goldstar",
"identifier":"goldstar",
"storeId":721048990,
"scheme":"goldstar"
},
{
"name":"Google+",
"identifier":"googleplus",
"storeId":447119634,
"scheme":"gplus",
"docs":"http://stackoverflow.com/a/21231485"
},
{
"name":"Groupon",
"identifier":"groupon",
"storeId":352683833,
"scheme":"groupon"
},
{
"name":"Hatena Blog",
"identifier":"hatenablog",
"storeId":583299321,
"scheme":"hatenablog"
},
{
"name":"Houzz",
"identifier":"houzz",
"storeId":399563465,
"scheme":"houzz"
},
{
"name":"Hulu",
"identifier":"hulu",
"storeId":376510438,
"scheme":"hulu"
},
{
"name":"Hype Machine",
"identifier":"hypemachine",
"storeId":414315986,
"scheme":"hypem"
},
{
"name":"IFTTT",
"identifier":"ifttt",
"storeId":660944635,
"scheme":"ifttt"
},
{
"name":"Inquire",
"identifier":"curiosity",
"storeId":1045268097,
"scheme":"curiosity",
"docs":"https://tamper.zendesk.com/hc/en-us/articles/206610436-Does-Curiosity-have-a-URL-scheme- and http://stackoverflow.com/a/31685114"
},
{
"name":"JIRA Connect",
"identifier":"jira",
"storeId":590540499,
"scheme":"jira",
"platform":"phone"
},
{
"name":"JIRA Connect",
"identifier":"jirapad",
"storeId":628608825,
"scheme":"jira",
"platform":"pad"
},
{
"name":"Jianshu",
"identifier":"jianshu",
"storeId":888237539,
"scheme":"jianshu"
},
{
"name":"Jingdong HD",
"identifier":"jingdongpad",
"storeId":434374726,
"scheme":"openApp.jdiPad",
"platform":"pad"
},
{
"name":"Kwai",
"identifier":"kwai",
"storeId":440948110,
"scheme":"kwai"
},
{
"name":"LIKEtoKNOW.it",
"identifier":"liketoknowit",
"storeId":1154027990,
"scheme":"com.rewardstyle.ltk"
},
{
"name":"Launch Center Pro",
"identifier":"launchcenterpro",
"storeId":532016360,
"scheme":"launch",
"platform":"phone"
},
{
"name":"Launch Center Pro",
"identifier":"launchcenterproipad",
"storeId":532016360,
"scheme":"launch",
"platform":"pad"
},
{
"name":"Le Figaro",
"identifier":"lefigaro",
"storeId":319557427,
"scheme":"lefigarofr"
},
{
"name":"Mast",
"identifier":"mast",
"storeId":1437429129,
"scheme":"com.shi.mastodon",
"docs":"https://bit.ly/2H94C4f"
},
{
"name":"Mobile01",
"identifier":"mobile01",
"storeId":444909583,
"scheme":"m01"
},
{
"name":"Monochrome",
"identifier":"monochrome",
"scheme":"com.falconassets.monochrome",
"iconURL":"https://s3.amazonaws.com/www.opener.link/app-icon/monochrome.jpg",
"docs":"https://bit.ly/2Gn5AWf (hard copy https://db.tt/wfRHS2GF3s)"
},
{
"name":"NPR One",
"identifier":"nprone",
"storeId":874498884,
"scheme":"nprone"
},
{
"name":"OPENREC.tv",
"identifier":"openrectv",
"storeId":912776162,
"scheme":"jp.co.cyber-z.openrec"
},
{
"name":"OPlayer",
"identifier":"oplayer",
"storeId":344784375,
"scheme":"oplayer",
"platform":"phone"
},
{
"name":"OPlayer HD",
"identifier":"oplayerhd",
"storeId":373236724,
"scheme":"oplayer",
"platform":"pad"
},
{
"name":"OpenTable",
"identifier":"opentable",
"storeId":296581815,
"scheme":"reservetable-com.contextoptional.OpenTable-1"
},
{
"name":"Outplayer",
"identifier":"outplayer",
"storeId":1449923287,
"scheme":"outplayer"
},
{
"name":"Pandora",
"identifier":"pandora",
"storeId":284035177,
"scheme":"pandorav4"
},
{
"name":"Peach",
"identifier":"peach",
"storeId":1067891186,
"scheme":"peach"
},
{
"name":"Porter",
"identifier":"porter",
"storeId":1305805708,
"scheme":"sbporter"
},
{
"name":"ProTube",
"identifier":"protube",
"scheme":"protube",
"iconURL":"https://s3.amazonaws.com/www.opener.link/app-icon/protube.jpg",
"docs":"http://j-gessner.de/1/post/2014/12/protube-2-url-scheme.html"
},
{
"name":"Quip",
"identifier":"quip",
"storeId":647922896,
"scheme":"quip"
},
{
"name":"Rightmove",
"identifier":"rightmove",
"storeId":323822803,
"scheme":"rightmove"
},
{
"name":"Runkeeper",
"identifier":"runkeeper",
"storeId":300235330,
"scheme":"runkeeper"
},
{
"name":"Scribd",
"identifier":"scribd",
"storeId":542557212,
"scheme":"iscribd"
},
{
"name":"Signal",
"identifier":"signal",
"storeId":874139669,
"scheme":"sgnl"
},
{
"name":"Sina Blog",
"identifier":"sinablog",
"storeId":466711718,
"scheme":"sinablog"
},
{
"name":"SlideShare",
"identifier":"slideshare",
"storeId":917418728,
"scheme":"slideshare-app"
},
{
"name":"Stack Overflow",
"identifier":"stackoverflow",
"scheme":"com.stackexchange.stackoverflow",
"iconURL":"https://s3.amazonaws.com/www.opener.link/app-icon/stack-overflow-114.jpg"
},
{
"name":"StubHub",
"identifier":"stubhub",
"storeId":366562751,
"scheme":"stubhub"
},
{
"name":"Tapatalk",
"identifier":"tapatalk",
"storeId":307880732,
"scheme":"tapatalk"
},
{
"name":"Tappd That",
"identifier":"tappdthat",
"storeId":591671468,
"scheme":"tappdthat",
"docs":"http://tappdthat.com/releasenotes"
},
{
"name":"The Score",
"identifier":"thescore",
"storeId":285692706,
"scheme":"thescore"
},
{
"name":"Ticketmaster",
"identifier":"ticketmaster",
"storeId":500003565,
"scheme":"ticketmaster"
},
{
"name":"Tieba",
"identifier":"tieba",
"storeId":477927812,
"scheme":"com.baidu.tieba"
},
{
"name":"Transit",
"identifier":"transit",
"storeId":498151501,
"scheme":"transit",
"docs":"http://transitapp.com/developers"
},
{
"name":"TripAdvisor",
"identifier":"tripadvisor",
"storeId":284876795,
"scheme":"tripadvisor"
},
{
"name":"Trulia",
"identifier":"trulia",
"storeId":288487321,
"scheme":"truliapdpforrent"
},
{
"name":"Trulia Rentals",
"identifier":"truliarent",
"storeId":508163604,
"scheme":"truliapdpforrent"
},
{
"name":"TuneIn Radio",
"identifier":"tunein",
"storeId":418987775,
"scheme":"tunein"
},
{
"name":"Untappd",
"identifier":"untappd",
"storeId":449141888,
"scheme":"untappd",
"docs":"http://help.untappd.com/discussions/feature-requests/854-support-for-url-schemes"
},
{
"name":"WEAR",
"identifier":"wear",
"storeId":725208930,
"scheme":"wear2020"
},
{
"name":"Waffle",
"identifier":"waffle",
"scheme":"com.arturremizov.waffle",
"iconURL":"https://s3.amazonaws.com/www.opener.link/app-icon/waffle-140.jpg"
},
{
"name":"Wallapop",
"identifier":"wallapop",
"storeId":692753615,
"scheme":"wallapop",
"country":"es"
},
{
"name":"We Heart It",
"identifier":"weheartit",
"storeId":539124565,
"scheme":"whi"
},
{
"name":"Wikiwand",
"identifier":"wikiwand",
"scheme":"wikiwand-article",
"iconURL":"https://s3.amazonaws.com/www.opener.link/app-icon/wikiwand-114.jpg",
"docs":"https://wikiwand-ios.uservoice.com/knowledgebase/articles/513725-does-the-wikiwand-ios-app-support-url-schemes"
},
{
"name":"Wonder",
"identifier":"wonder",
"storeId":1050888989,
"scheme":"wonder",
"docs":"http://jonathanthiry.com/wonder/url-schemes"
},
{
"name":"XKCDY",
"identifier":"xkcdy",
"storeId":1520259318,
"scheme":"xkcdy"
},
{
"name":"Yahoo Sports",
"identifier":"yahoosports",
"storeId":286058814,
"scheme":"ysportacular"
},
{
"name":"Yahoo! Q&A JP",
"identifier":"yahooqajp",
"storeId":354626165,
"scheme":"yjchiebukuro",
"country":"jp"
},
{
"name":"YouPlayer",
"identifier":"youplayer",
"scheme":"youplayer",
"iconURL":"https://s3.amazonaws.com/www.opener.link/app-icon/youplayer-114.jpg"
},
{
"name":"Youku",
"identifier":"youku",
"storeId":336141475,
"scheme":"youku",
"platform":"phone"
},
{
"name":"Youku HD",
"identifier":"youkuhd",
"storeId":394075284,
"scheme":"youkuhd",
"platform":"pad"
},
{
"name":"Zomato",
"identifier":"zomato",
"storeId":434613896,
"scheme":"zomato"
},
{
"name":"byte",
"identifier":"byte",
"storeId":1441800002,
"scheme":"byte"
},
{
"name":"craigslist",
"identifier":"craigslist",
"storeId":1336642410,
"scheme":"craigslist"
},
{
"name":"iHeartRadio",
"identifier":"iheartradio",
"storeId":290638154,
"scheme":"ihr"
},
{
"name":"iNico 2",
"identifier":"inico2",
"scheme":"inico2http",
"iconURL":"https://s3.amazonaws.com/www.opener.link/app-icon/inico2-114.jpg"
},
{
"name":"iOctocat",
"identifier":"ioctocat",
"scheme":"ioc",
"iconURL":"https://s3.amazonaws.com/www.opener.link/app-icon/ioctocat-114.jpg"
},
{
"name":"iStandard",
"identifier":"istandard",
"storeId":376832518,
"scheme":"iStandard"
},
{
"name":"nicoli",
"identifier":"nicoli",
"scheme":"nicolihttp",
"iconURL":"https://s3.amazonaws.com/www.opener.link/app-icon/nicoli-114.jpg",
"docs":"https://db.tt/jes30BC1aR and https://db.tt/YFaVbFzlcb"
},
{
"name":"\u30cb\u30b3\u30cb\u30b3\u6f2b\u753b",
"identifier":"nicoseiga",
"scheme":"nicoseiga",
"iconURL":"https://s3.amazonaws.com/www.opener.link/app-icon/nicoseiga-120.jpg"
},
{
"name":"Syndromi",
"identifier":"syndromi",
"storeId":1547850133,
"scheme":"syndromi"
},
{
"name":"StreetEasy",
"identifier":"streeteasy",
"storeId":1199581182,
"scheme":"streeteasy"
},
{
"name":"Apple Store",
"identifier":"applestore",
"storeId":375380948,
"scheme":"applestore"
},
{
"name":"Yahoo News JP",
"identifier":"yahoonewsjp",
"storeId":407906756,
"scheme":"yjtrend",
"country":"jp"
},
{
"name":"Epoch Times",
"identifier":"theepochtimes",
"storeId":670443321,
"scheme":"eetapp"
},
{
"name":"OLX",
"identifier":"olx",
"storeId":692808319,
"scheme":"olxapp"
},
{
"name":"X.app",
"identifier":"xapp",
"storeId":1533525753,
"scheme":"xapp"
},
{
"name":"Vinted",
"identifier":"vinted",
"storeId":632064380,
"scheme":"vintedfr",
"country":"gb"
}
],
"browsers":[
{
"name":"Safari",
"identifier":"safari",
"scheme":"https",
"iconURL":"https://s3.amazonaws.com/www.opener.link/app-icon/safari-120.jpg",
"regex":".+",
"script":"function process(url, completionHandler) { completionHandler(url); }",
"script2":"function process(url, completionHandler) { var urlRes = RegExp('https?://((www\\\\.)?apple\\\\.news|news\\\\.apple\\\\.com)').exec(url); if (urlRes != null && urlRes.length > 1) { var res = httpRequest(url); var results = RegExp('redirectToUrl.*\\\\(\"(.*)\"\\\\)').exec(res); var match = results != null && results.length > 1 ? results[1] : url; completionHandler(match); } else { completionHandler(url); } }",
"testInputs":[
"http://www.opener.link/",
"http://apple.news/AI7uxm31EQCWECHjfLjdZAA/",
"https://apple.news/AW5OfgikKQs-rRr_tfTb37w",
"https://apple.news/AKY74NN47QC6Ae4io2CrxmQ",
"https://news.apple.com/AKY74NN47QC6Ae4io2CrxmQ"
],
"testResults":[
"http://www.opener.link/",
"https://www.theverge.com/2021/1/26/22250795/xbox-game-pass-subscribers-growth-microsoft",
"http://www.chron.com/entertainment/preview/article/Free-Press-Summer-Fest-favorite-to-return-to-6690333.php",
"https://apple.news/AKY74NN47QC6Ae4io2CrxmQ",
"https://news.apple.com/AKY74NN47QC6Ae4io2CrxmQ"
]
},
{
"name":"Chrome",
"identifier":"chrome",
"storeId":535886823,
"scheme":"googlechrome",
"regex":"http(s?.*)$",
"format":"googlechrome$1",
"docs":"https://developer.chrome.com/multidevice/ios/links",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"googlechrome://www.opener.link/",
"googlechromes://twitter.com/openerapp"
]
},
{
"name":"Firefox",
"identifier":"firefox",
"storeId":989804926,
"scheme":"firefox",
"regex":".+",
"script":"function process(url, completionHandler) { completionHandler('firefox://open-url?url=' + encodeURIComponent(url)); }",
"script2":"function process(url, completionHandler) { completionHandler('firefox://open-url?url=' + encodeURIComponent(url)); }",
"docs":"https://github.com/mozilla/firefox-ios-open-in-client",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"firefox://open-url?url=http%3A%2F%2Fwww.opener.link%2F",
"firefox://open-url?url=https%3A%2F%2Ftwitter.com%2Fopenerapp"
]
},
{
"name":"Brave",
"identifier":"brave",
"storeId":1052879175,
"scheme":"brave",
"regex":".+",
"script":"function process(url, completionHandler) { completionHandler('brave://open-url?url=' + encodeURIComponent(url)); }",
"script2":"function process(url, completionHandler) { completionHandler('brave://open-url?url=' + encodeURIComponent(url)); }",
"docs":"https://github.com/brave/ios-open-thirdparty-browser",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"brave://open-url?url=http%3A%2F%2Fwww.opener.link%2F",
"brave://open-url?url=https%3A%2F%2Ftwitter.com%2Fopenerapp"
]
},
{
"name":"Microsoft Edge",
"identifier":"microsoftedge",
"storeId":1288723196,
"scheme":"microsoft-edge-https",
"regex":"(https?.*)",
"format":"microsoft-edge-$1",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"microsoft-edge-http://www.opener.link/",
"microsoft-edge-https://twitter.com/openerapp"
]
},
{
"name":"Apple News",
"identifier":"applenews",
"storeId":1066498020,
"scheme":"applenews",
"regex":"https?://(.*)$",
"format":"applenews://$1",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"applenews://www.opener.link/",
"applenews://twitter.com/openerapp"
]
},
{
"name":"DuckDuckGo",
"identifier":"duckduckgo",
"storeId":663592361,
"scheme":"ddgQuickLink",
"macStoreId":1482920575,
"regex":"https?://(.*)$",
"format":"ddgQuickLink://$1",
"docs":"https://github.com/duckduckgo/iOS/pull/274",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"ddgQuickLink://www.opener.link/",
"ddgQuickLink://twitter.com/openerapp"
]
},
{
"name":"Firefox Focus",
"identifier":"firefoxfocus",
"storeId":1055677337,
"scheme":"firefox-focus",
"regex":".+",
"script":"function process(url, completionHandler) { completionHandler('firefox-focus://open-url?url=' + encodeURIComponent(url)); }",
"script2":"function process(url, completionHandler) { completionHandler('firefox-focus://open-url?url=' + encodeURIComponent(url)); }",
"docs":"https://github.com/mozilla-mobile/focus-ios/issues/32",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"firefox-focus://open-url?url=http%3A%2F%2Fwww.opener.link%2F",
"firefox-focus://open-url?url=https%3A%2F%2Ftwitter.com%2Fopenerapp"
]
},
{
"name":"iCab",
"identifier":"icab",
"storeId":308111628,
"scheme":"x-icabmobile",
"regex":".+",
"script":"function process(url, completionHandler) { completionHandler('x-icabmobile://x-callback-url/open?url=' + encodeURIComponent(url)); }",
"script2":"function process(url, completionHandler) { completionHandler('x-icabmobile://x-callback-url/open?url=' + encodeURIComponent(url)); }",
"docs":"http://www.icab.de/blog/2012/07/01/icab-mobile-6-0-supports-x-callback-url/",
"testInputs":[
"http://www.opener.link/"
],
"testResults":[
"x-icabmobile://x-callback-url/open?url=http%3A%2F%2Fwww.opener.link%2F"
]
},
{
"name":"Documents",
"identifier":"documents",
"storeId":364901807,
"scheme":"rhttp",
"regex":"(https?.*)",
"format":"r$1",
"docs":"https://helpspot.readdle.com/documents/index.php?pg=kb.page&id=516",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"rhttp://www.opener.link/",
"rhttps://twitter.com/openerapp"
]
},
{
"name":"Alook",
"identifier":"alook",
"storeId":1261944766,
"scheme":"alook",
"regex":"https?://(.*)$",
"format":"alook://$1",
"docs":"https://db.tt/eOvfiHRdgU",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"alook://www.opener.link/",
"alook://twitter.com/openerapp"
]
},
{
"name":"Opera Touch",
"identifier":"operatouch",
"storeId":1411869974,
"scheme":"touch-url",
"regex":"(https?.*)",
"format":"touch-url://open-url?url=$1",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"touch-url://open-url?url=http://www.opener.link/",
"touch-url://open-url?url=https://twitter.com/openerapp"
]
},
{
"name":"Aloha",
"identifier":"aloha",
"storeId":1105317682,
"scheme":"alohabrowser",
"regex":".+",
"script":"function process(url, completionHandler) { completionHandler('alohabrowser://open?link=' + encodeURIComponent(url)); }",
"script2":"function process(url, completionHandler) { completionHandler('alohabrowser://open?link=' + encodeURIComponent(url)); }",
"docs":"https://db.tt/iZB4HjFsdw",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"alohabrowser://open?link=http%3A%2F%2Fwww.opener.link%2F",
"alohabrowser://open?link=https%3A%2F%2Ftwitter.com%2Fopenerapp"
]
},
{
"name":"Files",
"identifier":"files",
"storeId":349275540,
"scheme":"downloadslite",
"platform":"phone",
"regex":"(https?.*)",
"format":"downloadslite://$1",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"downloadslite://http://www.opener.link/",
"downloadslite://https://twitter.com/openerapp"
]
},
{
"name":"Command",
"identifier":"command",
"storeId":1485289520,
"scheme":"command",
"regex":"https?://(.*)$",
"format":"command://$1",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"command://www.opener.link/",
"command://twitter.com/openerapp"
]
},
{
"name":"GoodReader",
"identifier":"goodreader",
"storeId":777310222,
"scheme":"ghttp",
"regex":"(https?.*)",
"format":"g$1",
"docs":"https://goodreader.com/gr-man-howto.html#openfromother",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"ghttp://www.opener.link/",
"ghttps://twitter.com/openerapp"
]
},
{
"name":"Puffin Pro",
"identifier":"puffin",
"storeId":406239138,
"scheme":"puffin-x-callback",
"regex":"http(s?.*)$",
"format":"puffin$1",
"docs":"https://www.puffinbrowser.com/development/",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"puffin://www.opener.link/",
"puffins://twitter.com/openerapp"
]
},
{
"name":"Sleipnir",
"identifier":"sleipnir",
"storeId":404732112,
"scheme":"shttp",
"regex":"(https?.*)",
"format":"s$1",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"shttp://www.opener.link/",
"shttps://twitter.com/openerapp"
]
},
{
"name":"Ohajiki",
"identifier":"ohajiki",
"storeId":926105977,
"scheme":"ohajiki",
"regex":"(https?.*)",
"format":"oo$1",
"docs":"http://en.ohajiki.ios-web.com/url-scheme.html",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"oohttp://www.opener.link/",
"oohttps://twitter.com/openerapp"
]
},
{
"name":"Yandex",
"identifier":"yandex",
"storeId":483693909,
"scheme":"yandexbrowser-open-url",
"regex":"https?(.*)",
"format":"yandexbrowser-open-url$1",
"testInputs":[
"http://www.opener.link/"
],
"testResults":[
"yandexbrowser-open-url://www.opener.link/"
]
},
{
"name":"Private Browser",
"identifier":"privatebrowser",
"storeId":368483462,
"scheme":"private",
"regex":"https?://(.*)$",
"format":"private://$1",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"private://www.opener.link/",
"private://twitter.com/openerapp"
]
},
{
"name":"Perfect Browser",
"identifier":"perfectbrowser",
"storeId":1360915927,
"scheme":"perfect",
"regex":"https?(.*)",
"format":"perfect$1",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"perfect://www.opener.link/",
"perfect://twitter.com/openerapp"
]
},
{
"name":"1Password",
"identifier":"1password",
"storeId":568903335,
"scheme":"ophttp",
"macStoreId":1333542190,
"regex":"(https?.*)",
"format":"op$1",
"docs":"https://blog.agilebits.com/2013/01/24/developers-heres-how-to-add-a-little-1password-to-your-ios-apps/",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"ophttp://www.opener.link/",
"ophttps://twitter.com/openerapp"
]
},
{
"name":"Web Video Caster",
"identifier":"wvc",
"storeId":1400866497,
"scheme":"wvc-x-callback",
"regex":"https?://(.*)$",
"script":"function process(url, completionHandler) { completionHandler('wvc-x-callback://open?url=' + encodeURIComponent(url)); }",
"script2":"function process(url, completionHandler) { completionHandler('wvc-x-callback://open?url=' + encodeURIComponent(url)); }",
"docs":"http://www.webvideocaster.com/integrations",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"wvc-x-callback://open?url=http%3A%2F%2Fwww.opener.link%2F",
"wvc-x-callback://open?url=https%3A%2F%2Ftwitter.com%2Fopenerapp"
]
},
{
"name":"Inspect",
"identifier":"inspect",
"storeId":1203594958,
"scheme":"inspect",
"regex":"https?.*",
"script":"function process(url, completionHandler) { completionHandler('inspect://open-url?url=' + encodeURIComponent(url)); }",
"script2":"function process(url, completionHandler) { completionHandler('inspect://open-url?url=' + encodeURIComponent(url)); }",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"inspect://open-url?url=http%3A%2F%2Fwww.opener.link%2F",
"inspect://open-url?url=https%3A%2F%2Ftwitter.com%2Fopenerapp"
]
},
{
"name":"Onion Browser",
"identifier":"onionbrowser",
"storeId":519296448,
"scheme":"onionhttp",
"regex":"http(s?.*)$",
"format":"onionhttp$1",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"onionhttp://www.opener.link/",
"onionhttps://twitter.com/openerapp"
]
},
{
"name":"SnowHaze",
"identifier":"snowhaze",
"storeId":1121026941,
"scheme":"shtps",
"regex":"http(s?.*)$",
"format":"shtp$1",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"shtp://www.opener.link/",
"shtps://twitter.com/openerapp"
]
},
{
"name":"LastPass",
"identifier":"lastpass",
"storeId":324613447,
"scheme":"lastpass",
"regex":"(https?.*)",
"format":"lastpass://$1",
"docs":"https://helpdesk.lastpass.com/lastpass-mobile/ios/",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"lastpass://http://www.opener.link/",
"lastpass://https://twitter.com/openerapp"
]
},
{
"name":"Ohajiki D",
"identifier":"ohajikid",
"scheme":"ohajikid",
"iconURL":"https://s3.amazonaws.com/www.opener.link/app-icon/ohajikid-120.jpg",
"regex":"(https?.*)",
"format":"ood$1",
"docs":"http://en.ohajiki.ios-web.com/url-scheme.html",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"oodhttp://www.opener.link/",
"oodhttps://twitter.com/openerapp"
]
},
{
"name":"Pure",
"identifier":"pure",
"storeId":1301166115,
"scheme":"purewebbrowser",
"regex":"https?://(.*)$",
"format":"purewebbrowser://$1",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"purewebbrowser://www.opener.link/",
"purewebbrowser://twitter.com/openerapp"
]
},
{
"name":"Smooz",
"identifier":"smooz",
"scheme":"smooz",
"iconURL":"https://s3.amazonaws.com/www.opener.link/app-icon/smooz-120.jpg",
"regex":"(https?.*)",
"format":"smooz://url/$1",
"docs":"https://bit.ly/2Jh15Pz",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"smooz://url/http://www.opener.link/",
"smooz://url/https://twitter.com/openerapp"
]
},
{
"name":"Quark",
"identifier":"quark",
"storeId":1160172628,
"scheme":"quark",
"regex":"https?://(.*)$",
"format":"quark://$1",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"quark://www.opener.link/",
"quark://twitter.com/openerapp"
]
},
{
"name":"SiteSucker",
"identifier":"sitesucker",
"storeId":346896838,
"scheme":"sitesucker",
"regex":"(https?.*)",
"format":"sitesucker:$1",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"sitesucker:http://www.opener.link/",
"sitesucker:https://twitter.com/openerapp"
]
},
{
"name":"Srcfari",
"identifier":"srcfari",
"storeId":805903147,
"scheme":"srcfari",
"regex":"https?(.*)",
"format":"srcfari$1",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"srcfari://www.opener.link/",
"srcfari://twitter.com/openerapp"
]
},
{
"name":"Berry",
"identifier":"berrybrowser",
"storeId":1385743638,
"scheme":"berrybrowser",
"regex":".+",
"script":"function process(url, completionHandler) { completionHandler('berrybrowser://?url=' + encodeURIComponent(url)); }",
"script2":"function process(url, completionHandler) { completionHandler('berrybrowser://?url=' + encodeURIComponent(url)); }",
"docs":"https://db.tt/XFBJzBxqxM",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"berrybrowser://?url=http%3A%2F%2Fwww.opener.link%2F",
"berrybrowser://?url=https%3A%2F%2Ftwitter.com%2Fopenerapp"
]
},
{
"name":"Adblock Browser",
"identifier":"adblockbrowser",
"storeId":1015653330,
"scheme":"adblockbrowser",
"iconURL":"https://s3.amazonaws.com/www.opener.link/app-icon/abb-120.jpg",
"regex":"https?://(.*)$",
"format":"adblockbrowser://$1",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"adblockbrowser://www.opener.link/",
"adblockbrowser://twitter.com/openerapp"
]
},
{
"name":"Cake",
"identifier":"cake",
"storeId":1163553130,
"scheme":"cakebrowser",
"regex":"(https?.*)",
"format":"cakebrowser://open-url?url=$1",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"cakebrowser://open-url?url=http://www.opener.link/",
"cakebrowser://open-url?url=https://twitter.com/openerapp"
]
},
{
"name":"Dolphin",
"identifier":"dolphinphone",
"storeId":1440710469,
"scheme":"dolphin",
"platform":"phone",
"regex":"(https?.*)",
"format":"dolphin://$1",
"docs":"http://handleopenurl.com/scheme/dolphin-browser",
"testInputs":[
"http://www.opener.link/"
],
"testResults":[
"dolphin://http://www.opener.link/"
]
},
{
"name":"Dolphin",
"identifier":"dolphinpad",
"storeId":460812023,
"scheme":"dolphin",
"platform":"pad",
"regex":"(https?.*)",
"format":"dolphin://$1",
"docs":"http://handleopenurl.com/scheme/dolphin-browser",
"testInputs":[
"http://www.opener.link/"
],
"testResults":[
"dolphin://http://www.opener.link/"
]
},
{
"name":"Files HD",
"identifier":"fileshd",
"storeId":383846063,
"scheme":"dlhdlite",
"platform":"pad",
"regex":"(https?.*)",
"format":"dlhdlite://$1",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"dlhdlite://http://www.opener.link/",
"dlhdlite://https://twitter.com/openerapp"
]
},
{
"name":"Lion",
"identifier":"lionbrowser",
"storeId":1072142180,
"scheme":"lionapp",
"regex":"https?://(.*)$",
"format":"lionapp://$1",
"docs":"https://twitter.com/patrickleeadams/status/968221902094458881",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"lionapp://www.opener.link/",
"lionapp://twitter.com/openerapp"
]
},
{
"name":"Opera Mini",
"identifier":"operamini",
"scheme":"opera-http",
"iconURL":"https://s3.amazonaws.com/www.opener.link/app-icon/operamini-114.jpg",
"country":"fr",
"regex":"(https?.*)",
"format":"opera-$1",
"docs":"http://handleopenurl.com/scheme/opera-mini",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"opera-http://www.opener.link/",
"opera-https://twitter.com/openerapp"
]
},
{
"name":"QQ Browser",
"identifier":"qqbrowser",
"storeId":370139302,
"scheme":"mqqbrowser",
"regex":"(https?.*)$",
"format":"mqqbrowser://url=$1",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"mqqbrowser://url=http://www.opener.link/",
"mqqbrowser://url=https://twitter.com/openerapp"
]
},
{
"name":"Red Onion",
"identifier":"redonion",
"storeId":829739720,
"scheme":"redbrowser",
"regex":"http(s?.*)$",
"format":"redbrowser$1",
"testInputs":[
"http://www.opener.link/",
"https://twitter.com/openerapp"
],
"testResults":[
"redbrowser://www.opener.link/",
"redbrowsers://twitter.com/openerapp"
]
}
],
"previews":[
{
"regex":"https?://(?:www\\.|m\\.)?(?:youtu\\.be/|youtube\\.com/(?:embed/|.*(?:\\?|&)v=))([a-zA-Z0-9_\\-]+).*?((\\?|&)(start|t)=\\w+)?.*?$",
"format":"https://img.youtube.com/vi/$1/hqdefault.jpg",
"docs":"https://stackoverflow.com/questions/2068344/how-do-i-get-a-youtube-video-thumbnail-from-the-youtube-api"
},
{
"regex":"https?://(www\\.|rover\\.|m\\.)?ebay(\\.\\w+)+/(itm|i)/([0-9A-Za-z_-]+/)?(\\d+)(/|\\?)?.*$",
"format":"https://i.ebayimg.com/images/i/$1-0-1/s-l375/p.jpg",
"docs":"https://stackoverflow.com/a/39545334/3943258"
},
{
"regex":"https?://(\\w+\\.)?imgur\\.com/(gallery/|a/|r/.*/)?\\w+.*?$",
"script2":"function process(url, completionHandler) { var match = RegExp('http(?:s)?://(?:\\\\w+\\\\.)?imgur\\\\.com/(?:gallery/|a/|r/.*/)?(\\\\w+).*?$').exec(url); var identifier = match[1]; var requestURL = 'https://api.imgur.com/3/image/' + identifier + '.json?client_id=5db623156c4be49'; var res = jsonRequest(requestURL); var imageURL = 'https://i.imgur.com/' + identifier + 'h.jpg'; if (res != null && res['data'] != null && res['data']['animated'] == 1 && res['data']['link'].endsWith('gif')) { imageURL = res['data']['link']; } completionHandler(imageURL); }",
"canSave":1,
"docs":"https://thomas.vanhoutte.be/miniblog/imgur-thumbnail-trick/, https://api.imgur.com/models/image"
},
{
"regex":"https?://((?:\\w+\\.)?pixiv\\.net/(?:(?:.+/)?artworks/|member_illust\\.php?.*illust_id=)(\\d+).*)$",
"format":"https://embed.pixiv.net/decorate.php?illust_id=$2"
},
{
"regex":"https?://(itunes|apps|music|books|podcasts|tv)\\.apple\\.com/(?!.*/story/.*).*?/(id)?\\d+.*?$",
"script2":"function process(url, completionHandler) { var match = RegExp('http(?:s)?://\\\\w+\\.apple\\.com/.*?/(?:id)?(\\\\d+).*?$').exec(url); var identifier = match[1]; var requestURL = 'https://itunes.apple.com/lookup?id=' + identifier; var res = jsonRequest(requestURL); var imageURL = null; if (res != null) { imageURL = res['results'][0]['artworkUrl100'].replace('100x100', '500x500'); } completionHandler(imageURL); }"
},
{
"regex":"https?://(?:\\w+\\.)*giphy\\.com/(?:gifs|media)/(?:.+-)*(\\w+).*?$",
"format":"https://media.giphy.com/media/$1/giphy.gif",
"canSave":1
},
{
"regex":"https?://(\\w+\\.)*gfycat\\.com(/amp)?/[^-]*-.*?$",
"script2":"function process(url, completionHandler) { var match = RegExp('http(?:s)?://(?:\\\\w+\\\\.)*gfycat\\\\.com(?:/amp)?/([^-]*)(?:-.*)?$').exec(url); var identifier = match[1]; var requestURL = 'https://api.gfycat.com/v1/gfycats/' + identifier; var res = jsonRequest(requestURL); var imageURL; if (res != null && res['gfyItem'] != null) { imageURL = res['gfyItem']['gifUrl']; } completionHandler(imageURL); }",
"canSave":1,
"docs":"https://developers.gfycat.com/api/#getting-info-for-a-single-gfycat"
},
{
"regex":"https?://(play\\.|open\\.|www\\.)?spotify\\.com/(track|album|playlist|episode|show|user/\\w+/playlist|artist)/.*$",
"script2":"function process(url, completionHandler) { var res = jsonRequest('https://embed.spotify.com/oembed?url=' + encodeURIComponent(url.split('&')[0])); match = res != null ? res['thumbnail_url'] : null; completionHandler(match); }",
"docs":"https://stackoverflow.com/a/16496995/3943258 / https://twitter.com/nicklas2k/status/330094611202723840"
},
{
"regex":"https?://((?!www\\.)[a-zA-Z0-9\\-]+\\.(\\w+\\.)*wikipedia\\.(com|org)/([^/]+/)?.*)$",
"script2":"function process(url, completionHandler) { var match = RegExp('(https?://((?!www\\\\.)(?:([a-zA-Z0-9\\\\-]+)\\\\.)(?:\\\\w+\\\\.)*wikipedia\\\\.(?:com|org)/(?:[^/]+/)?(.*)))$').exec(url); var locale = match[3]; var title = match[4]; url = 'https://' + locale + '.wikipedia.org/w/api.php?action=query&format=json&formatversion=2&prop=pageimages%7Cpageterms&piprop=thumbnail&pithumbsize=800&titles=' + title; var res = jsonRequest(url); var page = res['query']['pages'][0]; var thumb; if (page != null && page['thumbnail'] != null) { thumb = page['thumbnail']['source']; } completionHandler(thumb); }",
"canSave":1,
"docs":"Copied from Curiosity's rules (two should match) and https://stackoverflow.com/a/43039946/3943258"
},
{
"regex":"https?://(www\\.)?dropbox\\.com/s/\\w+.*\\.(?i)(jpeg|jpg|png|bmp|heic|gif|tiff).*$",
"script2":"function process(url, completionHandler) { completionHandler('https://dl.' + RegExp('https?://(?:www\\.)?(dropbox\\.com/s/\\\\w+.*)$').exec(url)[1]); }",
"canSave":1
},
{
"regex":"https?://(\\w+\\.)*nytimes\\.com/.*",
"script2":"function process(url, completionHandler) { var requestURL = 'https://www.nytimes.com/svc/oembed/json/?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['thumbnail_url'] != null) { var imageURL = res['thumbnail_url']; } completionHandler(imageURL); }"
},
{
"regex":"https?://(\\w+\\.)*tiktok\\.com/(.*/)?v(ideo)?/.*",
"script2":"function process(url, completionHandler) { var requestURL = 'https://www.tiktok.com/oembed?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['thumbnail_url'] != null) { var imageURL = res['thumbnail_url']; } completionHandler(imageURL); }"
},
{
"regex":"https?://(\\w+\\.)*soundcloud\\.com/.*",
"script2":"function process(url, completionHandler) { var requestURL = 'https://soundcloud.com/oembed?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['thumbnail_url'] != null) { var imageURL = res['thumbnail_url']; } completionHandler(imageURL); }"
},
{
"regex":"https?://(\\w+\\.)*pinterest(\\.\\w+)+/.*",
"script2":"function process(url, completionHandler) { var requestURL = 'https://www.pinterest.com/oembed.json?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['thumbnail_url'] != null) { var imageURL = res['thumbnail_url']; } completionHandler(imageURL); }",
"canSave":1
},
{
"regex":"https?://(\\w+\\.)*(flickr\\.com|flic\\.kr)/p(hotos?)?/.*",
"script2":"function process(url, completionHandler) { var requestURL = 'https://www.flickr.com/services/oembed.json/?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['thumbnail_url'] != null) { var imageURL = res['thumbnail_url']; } completionHandler(imageURL); }"
},
{
"regex":"https?://(\\w+\\.)*vimeo\\.com/.*",
"script2":"function process(url, completionHandler) { var requestURL = 'https://vimeo.com/api/oembed.json/?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['thumbnail_url'] != null) { var imageURL = res['thumbnail_url']; } completionHandler(imageURL); }"
},
{
"regex":"https?://(\\w+\\.)*deviantart\\.com/.*(art/|d).*",
"script2":"function process(url, completionHandler) { var requestURL = 'http://backend.deviantart.com/oembed?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['thumbnail_url'] != null) { var imageURL = res['thumbnail_url']; } completionHandler(imageURL); }"
},
{
"regex":"https?://(\\w+\\.)*ted\\.com/talks?/.*",
"script2":"function process(url, completionHandler) { var requestURL = 'https://www.ted.com/services/v1/oembed.json?url=' + encodeURIComponent(url); var res = jsonRequest(requestURL); if (res != null && res['thumbnail_url'] != null) { var imageURL = res['thumbnail_url']; } completionHandler(imageURL); }"
}
],
"redirects":{
"https?://(\\w+\\.)*google\\.\\w+/url.*url=[^&]+.*$":{
"param":"url",
"tests":{
"https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&ved=0ahUKEwjbyv_kobXVAhUJjlQKHbf6A_cQFggwMAI&url=https%3A%2F%2Fstackoverflow.com%2Fquestions%2F44698788%2Fxcode-9-ios-11-nsurlconnection-sendasynchronousrequest-":"https://stackoverflow.com/questions/44698788/xcode-9-ios-11-nsurlconnection-sendasynchronousrequest-"
}
},
"https?://(\\w+\\.)*google\\.\\w+/url.*q=[^&]+.*$":{
"param":"q",
"tests":{
"https://www.google.com/url?q=https://tools.usps.com/go/TrackConfirmAction?tLabels%3D9400109898642582249765&source=gmail-imap&ust=1605928088000000&usg=AOvVaw2boSYz56UApStkErTM9ceq":"https://tools.usps.com/go/TrackConfirmAction?tLabels=9400109898642582249765"
}
},
"https?://(\\w+\\.)*youtube\\.\\w+/redirect.*$":{
"param":"q",
"tests":{
"https://www.youtube.com/redirect?q=https%3A%2F%2Fwww.instagram.com%2Fbuzzfeedmexico&redir_token=we4J0KCg2kOCbalPCznDnG1dyUJ8MTU0ODA0MTkzOUAxNTQ3OTU1NTM5&v=Umj1ZWr-CAs&event=video_description":"https://www.instagram.com/buzzfeedmexico"
}
},
"(?:(?i)http(?:s)?://[^/]+.(?:cdn.ampproject.org/\\w|google.com(?:\\.\\w+)*/amp))/(?:(s)/)?(.*)$":{
"format":"http$1://$2",
"docs":"https://developers.google.com/amp/cache/overview",
"tests":{
"https://thepostermovement-tumblr-com.cdn.ampproject.org/c/thepostermovement.tumblr.com/post/163639670215/blade-runner-2049-by-raborlatte-posters/amp":"http://thepostermovement.tumblr.com/post/163639670215/blade-runner-2049-by-raborlatte-posters/amp",
"https://www.google.com/amp/s/amp.reddit.com/r/MechanicalKeyboards/comments/8e5zxl/mech_keyboard_tier_list/":"https://amp.reddit.com/r/MechanicalKeyboards/comments/8e5zxl/mech_keyboard_tier_list/",
"https://www.google.com.au/amp/s/www.devdiscourse.com/article/entertainment/1216447-mindhunter-season-3-possibilities-cast-revealed-what-we-know-so-far%3famp":"https://www.devdiscourse.com/article/entertainment/1216447-mindhunter-season-3-possibilities-cast-revealed-what-we-know-so-far%3famp"
}
},
"https?://l\\.(messenger|facebook|workplace)\\.com/l\\.php.*$":{
"param":"u",
"tests":{
"https://l.facebook.com/l.php?u=https%3A%2F%2Ftwitter.com%2Fdominiquecrenn%2Fstatus%2F1009122219052716033&h=AT3NbNfy0YjZSm3aFoNrgsfB3tVS9wb2D-PEHADnPdbGVIlHTuScyJExmWa6q5hlL0s-Tg753uksiJG_dusXonuf-18Ghrh1KK_PhpKvz3Em1L8rc6Rt7zjEyISchPALg5kbJBtSChL2_MqbVEarRA":"https://twitter.com/dominiquecrenn/status/1009122219052716033",
"https://l.messenger.com/l.php?u=https%3A%2F%2Ftwitter.com%2FOpenerApp%2Fstatus%2F960747968574849025&h=ATMFKeV37EBYtyu3JB0NatoCI5yEGIwAq3UD_GL-hFDKo8y-67d9fqGlN0Fc62vEgQxte71CCmPIO5AIVmPD3EaP6ciUOaNcdLy29IifshQx9nd1OIF9lK6GXwoi1_HF7C_gZ82m9LW3MSh0askAZJxoTu9hAsbfp4o":"https://twitter.com/OpenerApp/status/960747968574849025",
"https://l.workplace.com/l.php?u=https%3A%2F%2Ftwitter.com%2Ffromedome%2Fstatus%2F1088895797712818176%3Fs%3D21":"https://twitter.com/fromedome/status/1088895797712818176?s=21"
}
},
"https?://(\\w+\\.)*facebook\\.com/login(\\.php)?/?.*(\\?|&)next":{
"param":"next",
"tests":{
"https://www.facebook.com/login/?next=https://www.facebook.com/groups/designersloungesf/":"https://www.facebook.com/groups/designersloungesf/",
"https://www.facebook.com/login?next=https://www.facebook.com/groups/designersloungesf/":"https://www.facebook.com/groups/designersloungesf/",
"https://www.facebook.com/login/?foo=bar&next=https://www.facebook.com/groups/designersloungesf/":"https://www.facebook.com/groups/designersloungesf/",
"https://www.facebook.com/login?foo=bar&next=https://www.facebook.com/groups/designersloungesf/":"https://www.facebook.com/groups/designersloungesf/",
"https://www.facebook.com/login.php/?next=https://www.facebook.com/groups/designersloungesf/":"https://www.facebook.com/groups/designersloungesf/",
"https://www.facebook.com/login.php?next=https://www.facebook.com/groups/designersloungesf/":"https://www.facebook.com/groups/designersloungesf/",
"https://www.facebook.com/login.php/?foo=bar&next=https://www.facebook.com/groups/designersloungesf/":"https://www.facebook.com/groups/designersloungesf/",
"https://www.facebook.com/login.php?foo=bar&next=https://www.facebook.com/groups/designersloungesf/":"https://www.facebook.com/groups/designersloungesf/"
}
},
"https?://(l\\.instagram\\.com/|(\\w+\\.)*instagram\\.com/linkshim).*$":{
"param":"u",
"tests":{
"https://l.instagram.com/?u=https%3A%2F%2Ftwitter.com%2Ftimonus&e=ATOdA5qfPc7e1I0QtKdMsIX_B6r7wH4MgNVyRjkDSg_qnJXzsyyHOPRlAPbth7ZyPQT-PGR6yNehcg":"https://twitter.com/timonus",
"https://www.instagram.com/linkshim/?u=https%3A%2F%2Ftwitter.com%2Ftimonus&e=AT0LfDKXDfqTMV41nrNv8FFYVu3Son_TuNHJHMv6_5-Gomz2gQ3Y9RotGED5QJ1ZOuM0CiMcXD5pRARbAX3m8dXZt0ZhuNNCc3oTHgGyFLU8BzS614wZkKR8Sg":"https://twitter.com/timonus"
}
},
"(https?://(?:www\\.)?(?:instagram\\.com|instagr\\.am))/accounts/login.*?(?:\\?|&)next=(.*)$":{
"format":"$1$2",
"tests":{
"https://www.instagram.com/accounts/login/?next=/p/CF2EA6GJ7Ba/?igshid%3Drvm8zrfyymsg":"https://www.instagram.com/p/CF2EA6GJ7Ba/?igshid%3Drvm8zrfyymsg"
}
},
"https?://out\\.reddit\\.com.*$":{
"param":"url",
"tests":{
"https://out.reddit.com/t3_7vjm8a?url=https%3A%2F%2Fstreamable.com%2Fkgw2g?token=AQAAKkp5Wh4r24n3FqO6zjWJvcnP2Rqg-ZnuqG43qls4CFLaS99n&app_name=reddit.com":"https://streamable.com/kgw2g?token=AQAAKkp5Wh4r24n3FqO6zjWJvcnP2Rqg-ZnuqG43qls4CFLaS99n"
}
},
"https?://(\\w+\\.)+(app\\.link|bnc\\.lt)/.*\\$original_url.*$":{
"param":"$original_url",
"tests":{
"https://reddit.app.link/3p?$3p=e_as&$original_url=https://www.reddit.com/r/apolloapp/comments/ks0yi8/anyone_else_want_to_open_twitter_links_in_fenix/gnivkdj/?$deep_link%3Dtrue%26correlation_id%3D7df4b548-bf01-430b-8814-b12e522faaac%26ref%3Demail_comment_reply%26ref_campaign%3Demail_comment_reply%26ref_source%3Demail&$web_only=true":"https://www.reddit.com/r/apolloapp/comments/ks0yi8/anyone_else_want_to_open_twitter_links_in_fenix/gnivkdj/?$deep_link=true&correlation_id=7df4b548-bf01-430b-8814-b12e522faaac&ref=email_comment_reply&ref_campaign=email_comment_reply&ref_source=email"
}
},
"https?://t\\.umblr\\.com/redirect.*$":{
"param":"z",
"tests":{
"http://t.umblr.com/redirect?z=http%3A%2F%2Fwww.twitter.com%2Fcatana_comics&t=ZDE1MGVkMWU1MmQzZWY2MzBlMGZiMmZlYmYwYWExYTI5Zjc4Y2M1NyxUbU4zdWpESg%3D%3D&p=&m=0":"http://www.twitter.com/catana_comics"
}
},
"https?://ct\\.pinterest\\.com/_/_/redirect.*$":{
"param":"url",
"tests":{
"https://ct.pinterest.com/_/_/redirect/?src=open&user_id=128282426794312100&url=https://www.auteur-watches.com/product/classic-black/":"https://www.auteur-watches.com/product/classic-black/"
}
},
"https?://(www\\.)?medium\\.com/r/?\\?url.*$":{
"param":"url",
"tests":{
"https://medium.com/r/?url=https%3A%2F%2Fgithub.com%2Ftimonus%2FTJActivityViewController":"https://github.com/timonus/TJActivityViewController",
"https://www.medium.com/r/?url=https%3A%2F%2Fgithub.com%2Ftimonus%2FTJActivityViewController":"https://github.com/timonus/TJActivityViewController",
"http://medium.com/r/?url=https%3A%2F%2Fgithub.com%2Ftimonus%2FTJActivityViewController":"https://github.com/timonus/TJActivityViewController",
"http://www.medium.com/r/?url=https%3A%2F%2Fgithub.com%2Ftimonus%2FTJActivityViewController":"https://github.com/timonus/TJActivityViewController"
}
},
"https?://(\\w+\\.)*twitter\\.com/i/redirect.*$":{
"param":"url",
"tests":{
"https://twitter.com/i/redirect?url=https%3A%2F%2Ftwitter.com%2Fi%2Fevents%2F1180824138832723968%3Fcn%3DZmxleGlibGVfcmVjc18y%26refsrc%3Demail&t=1+1570380899543&cn=ZmxleGlibGVfcmVjc18y&sig=a393f55f1c1e1ca0bae933b0adc256b3f9e0dea7&iid=20d1000f765847d085d99c843677ddf2&uid=298542384&nid=244+277221392":"https://twitter.com/i/events/1180824138832723968?cn=ZmxleGlibGVfcmVjc18y&refsrc=email"
}
},
"https?://(?:song|album)\\.link/(http.*)$":{
"format":"$1",
"tests":{
"https://song.link/https://open.spotify.com/track/1GZH9Sv6zCIse2GKihRHKy":"https://open.spotify.com/track/1GZH9Sv6zCIse2GKihRHKy",
"http://album.link/https://open.spotify.com/album/31qVWUdRrlb8thMvts0yYL?si=BOiRROdoTqygljFpvFDacw":"https://open.spotify.com/album/31qVWUdRrlb8thMvts0yYL?si=BOiRROdoTqygljFpvFDacw"
}
},
"https?://(?:www\\.)?overcast\\.fm/itunes(\\d+).*?$":{
"format":"https://podcasts.apple.com/podcast/id$1",
"tests":{
"https://overcast.fm/itunes1510451759/macstories-unwind":"https://podcasts.apple.com/podcast/id1510451759",
"http://overcast.fm/itunes14530342":"https://podcasts.apple.com/podcast/id14530342"
}
},
"https?://(?:www\\.)?castro\\.fm/itunes/(\\d+).*?$":{
"format":"https://podcasts.apple.com/podcast/id$1",
"tests":{
"https://castro.fm/itunes/1143273587":"https://podcasts.apple.com/podcast/id1143273587"
}
},
"(https?://(?:www\\.)?(?:instagram\\.com|instagr\\.am)/.*?)(?:\\?|&)?igshid(?:=|%3D)\\w+(.*?)$":{
"format":"$1$2",
"tests":{
"https://www.instagram.com/p/CFdlX1LpVU8/?igshid=q8almnz47owt":"https://www.instagram.com/p/CFdlX1LpVU8/",
"https://www.instagram.com/p/CFdlX1LpVU8/?foo=bar&igshid=q8almnz47owt":"https://www.instagram.com/p/CFdlX1LpVU8/?foo=bar"
}
},
"(https?://(?:mobile\\.|www\\.|m\\.)?twitter\\.com/.*?)(?:\\?|&)?s(?:=|%3D)\\d+(.*?)$":{
"format":"$1$2",
"tests":{
"https://twitter.com/dabit3/status/1308066681512775682?s=21":"https://twitter.com/dabit3/status/1308066681512775682",
"https://twitter.com/dabit3/status/1308066681512775682?foo=bar&s=21":"https://twitter.com/dabit3/status/1308066681512775682?foo=bar"
}
},
"(https?://(?:play\\.|open\\.|www\\.)?spotify\\.com/.*?)(?:\\?|&)?si(?:=|%3D)\\w+(.*?)$":{
"format":"$1$2",
"tests":{
"https://open.spotify.com/track/7GDGodzWVL6nCOBAhZ39rf?si=Qoej9v5HR8O8q5xOWu1PGA":"https://open.spotify.com/track/7GDGodzWVL6nCOBAhZ39rf",
"https://open.spotify.com/track/7GDGodzWVL6nCOBAhZ39rf?foo=bar&si=Qoej9v5HR8O8q5xOWu1PGA":"https://open.spotify.com/track/7GDGodzWVL6nCOBAhZ39rf?foo=bar"
}
},
"(https?://(?:(?:\\w+\\.)*amazon(?:(?:\\.\\w+)+)/.*?))(?:\\?|&)?ref(?:=|%3D)\\w+(.*?)$":{
"format":"$1$2",
"tests":{
"https://www.amazon.com/dp/B081SHMJ77/ref=cm_sw_r_sms_api_i_7s1AFbE3WS0G8":"https://www.amazon.com/dp/B081SHMJ77/",
"https://www.amazon.com/dp/B081RJ8DW1/ref=cm_sw_r_cp_api_fabc_V2NVFbX5E8KHT?_encoding=UTF8&psc=1":"https://www.amazon.com/dp/B081RJ8DW1/?_encoding=UTF8&psc=1"
}
},
"(https?://(?:(?:\\w+\\.)+app\\.link|bnc\\.lt)/(?:.*)\\?(?:(?!.*web_only=true.*).*))(\\#.*)?$":{
"format":"$1&$web_only=true$2",
"docs":"Pesky Branch.io links (*.app.link) use HTML redirects by default, which breaks Opener. In order to force a Branch link to HTTP redirect to its underlying web link you can add query param $web_onyl=true (yes, including the '$'). Found from docs here https://bit.ly/2EjUPHd and here https://bit.ly/2EswGit. NOTE: Tests for this rule also apply to the following rule.",
"tests":{
"https://rsci.app.link/IrW5wDIMzS?_p=f6523a44f42bc2626680177a2e":"https://rsci.app.link/IrW5wDIMzS?_p=f6523a44f42bc2626680177a2e&$web_only=true",
"https://rsci.app.link/IrW5wDIMzS":"https://rsci.app.link/IrW5wDIMzS?$web_only=true",
"https://bnc.lt/focc/IieWSuUHJR":"https://bnc.lt/focc/IieWSuUHJR?$web_only=true",
"https://bnc.lt/focc/IieWSuUHJR?foo=bar":"https://bnc.lt/focc/IieWSuUHJR?foo=bar&$web_only=true",
"https://bnc.lt/focc/IieWSuUHJR?$web_only=true&foo=bar":"https://bnc.lt/focc/IieWSuUHJR?$web_only=true&foo=bar",
"https://bnc.lt/focc/IieWSuUHJR?foo=bar&$web_only=true":"https://bnc.lt/focc/IieWSuUHJR?foo=bar&$web_only=true"
}
},
"(https?://(?:(?:\\w+\\.)+app\\.link|bnc\\.lt)/(?!.*\\?.*)(?:(?!.*web_only=true.*).*))(\\#.*)?$":{
"format":"$1?$web_only=true$2"
},
"https?://(www\\.)?opener\\.link/r\\?.*url=.+$":{
"param":"url",
"tests":{
"https://opener.link/r?url=https%3A%2F%2Ftwitter.com%2Ftimonus":"https://twitter.com/timonus"
}
},
"https?://(www\\.)?opener\\.link/r/?#(.*)$":{
"format":"$2",
"tests":{
"http://opener.link/r#https://www.apple.com":"https://www.apple.com"
}
},
"https?://href\\.li/\\?(.*)$":{
"format":"$1",
"tests":{
"https://href.li/?https://castro.fm/itunes/1143273587":"https://castro.fm/itunes/1143273587"
}
},
"https?://app\\.adjust\\.net\\.in.*redirect=.*":{
"param":"redirect",
"tests":{
"https://app.adjust.net.in/abuwqb?tracker_limit=250000&deep_link=spotify%3A%2F%2Falbum%2F2ffRAIZdlGEwnYE5ytIw88-G0MfUN_cmrzg&redirect=https%3A%2F%2Fopen.spotify.com%2Falbum%2F2ffRAIZdlGEwnYE5ytIw88-G0MfUN_cmrzg%3Fnd%3D1&label=sp_cid%3A6aca1c52d4dab2c84246e2cb7c0dfa99":"https://open.spotify.com/album/2ffRAIZdlGEwnYE5ytIw88-G0MfUN_cmrzg?nd=1"
}
},
"(https?://(mobile\\.|www\\.|m\\.)?twitter\\.com/)#!/(.*)$":{
"format":"$1$3",
"tests":{
"https://twitter.com/#!/kcimc/status/88293965857701888":"https://twitter.com/kcimc/status/88293965857701888"
}
},
"https?://click\\.redditmail\\.com/\\w+/(https?:.*)$":{
"format":"$1",
"tests":{
"https://click.redditmail.com/CL0/https:%2F%2Fwww.reddit.com%2Fr%2Fmacapps%2Fcomments%2Fr7b4yx%2Fopenin_v3_is_out_and_40_off_for_a_week%2Fhn0mt18%2F%3F$deep_link=true%26correlation_id=b7cc0b2d-66db-4dd2-a101-e7786868ca5a%26ref=email_post_reply%26ref_campaign=email_post_reply%26ref_source=email/3/0100017d7e24c980-e9b0c92a-e98d-498e-aff6-8eb446620001-000000/yGlIL0u28XMdjddv_6Wog4QoLjyPFmb5Fg3rNkpmOrs=226":"https://www.reddit.com/r/macapps/comments/r7b4yx/openin_v3_is_out_and_40_off_for_a_week/hn0mt18/?$deep_link=true&correlation_id=b7cc0b2d-66db-4dd2-a101-e7786868ca5a&ref=email_post_reply&ref_campaign=email_post_reply&ref_source=email/3/0100017d7e24c980-e9b0c92a-e98d-498e-aff6-8eb446620001-000000/yGlIL0u28XMdjddv_6Wog4QoLjyPFmb5Fg3rNkpmOrs=226"
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment