Last active
February 7, 2025 13:19
-
-
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"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&amp;identify_id=akinose_163cm", | |
"jp.co.cyber-z.openrec://live?id=781716&amp;identify_id=BDESsPDMFBG", | |
"jp.co.cyber-z.openrec://user?id=82422651&amp;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/&amp;id=$3", | |
"testResults":[ | |
"olxapp://adpage/&amp;id=908354794", | |
"olxapp://adpage/&amp;id=908190242", | |
"olxapp://adpage/&amp;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/&amp;state=11&amp;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&amp;portal=fr", | |
"vintedfr://user?id=12918&amp;portal=fr", | |
"vintedpl://item?id=147364862&amp;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