k-s-v / scripts Goto Github PK
View Code? Open in Web Editor NEWCollection of my scripts
License: GNU General Public License v3.0
Collection of my scripts
License: GNU General Public License v3.0
A repository for collection of my different scripts generally posted at http://www.stream-recorder.com/forum/.
There is a major error in the installation of this software. The file 'PDF 5.4' does not include the file 'AdobeHDS.php'. Without this file, it is impossible for this software to function at all. I finally found 'Scripts-master.zip' that includes 'AdobeHDS.php' at 'https://github.com/K-S-V/Scripts' then extracted it to the same PHP folder and now everything works perfectly.
I am having problems downloading a stream.
I am using debian and downloading to a ext4 partition.
When the first fragments have downloaded I get the error
PHP Warning: file_put_contents(1b8478a31632ccccdb6d1cd86f0221e1_media_b1793785_w168336117_qaXA9OTMuODIuNDAuMzImdWE9TW96aWxsYSUyNTJmNS4wJTJCJTI4V2luZG93cyUyQk5UJTJCNS4xJTI1M2IlMkJydiUyNTNhMjYuMCUyOSUyQkdlY2tvJTI1MmYyMDEwMDEwMSUyQkZpcmVmb3glMjUyZjI2LjAmbGJzPTIwMTUwNDEyMTEwMDM4NzQySeg1-Frag8): failed to open stream: File name too long in /home/lukas/tvthek/AdobeHDS.php on line 951
The manifest file is
http://apasfiis.apa.at/f4m/cms-worldwide/2015-04-07_2300_sd_01_SCIENCE-BUSTERS---WE_Wieviel-Eier-hat-der__9527255__o__0001445490__s9541260___e__ORF1HiRes_23021123P_23293508P_Q4A.mp4/manifest.f4m
Is there anything you can do to make long filenames work?
It looks like SyFy has changed a couple of things, which breaks download and verification.
The first is that they have switched to chunked transfer encoding for fragments, so the content length is no longer sent as part of the response. I don't know if this specifically causes a problem with the script.
The second is that the fragments downloaded no longer contain an explicit boxsize for the 'mdat' box. It now looks to have a boxsize of zero, so the 'mdat' box should extend until the end of the file.
This should fix the issue:
function ReadBoxHeader($str, &$pos, &$boxType, &$boxSize)
{
if (!isset($pos))
$pos = 0;
$boxSize = ReadInt32($str, $pos);
$boxType = substr($str, $pos + 4, 4);
if ($boxSize == 1)
{
$boxSize = ReadInt64($str, $pos + 8) - 16;
$pos += 16;
}
else if ($boxSize == 0)
{
$boxSize = strlen($str) - $pos - 8;
$pos += 8;
}
else
{
$boxSize -= 8;
$pos += 8;
}
}
-- Patrick
This diff works to correct some issues with live radio broadcasts:
while (($fragNum == $this->fragCount) and ($retries < 30))
while (($fragNum >= $this->fragCount) and ($retries < 30))
LogError("Failed to parse bootstrap info");
LogDebug("Failed to parse bootstrap info");
if ($fragNum == $this->fragCount)
if ($fragNum >= $this->fragCount)
If the server is under load some fragments return error code 503 (service temporarily not available), causing AdobeHDS to skip those fragments which breaks the final file they are joined into.
At the moment the script only handles error code 403.
It would be great if the script handled error code 503 by adding the fragment again to the download queue like in line 937.
Hey, K-S-V.
I've been checking forums for a while and realized there haven't been any progress around Flash DRM and Akamai DRM encryption. Most people are just sticking to to the basics (a.k.a. finding alternate links), but there is no breakthrough in sight.
So, I'm just thinking about going in myself and trying something. Do you have any ideas? Any starting point? Did you ever try to break the encryption?
Thanks in advance.
Hi, first of all thank you very much for the script. It works quite well but there's a pseudo-random audio skipping when using it with this site:
http://www.vorterix.com/
I'm using the manifest and
php adobeHDS.php --manifest http://ffahds-lh.akamaihd.net/z/vorvideo01hds_1@305259/manifest.f4m?hdcore=3.7.0 --parallel 1
I've tried to change quality from the 4 options and played a little with the parallel parameter. Used a cloud vm to see if it was a bw problem without success. The video seems to be quite good (no skipping) but suddenly the audio stops from time to time.
What I see but I can't really link with the issue is the retries on the bootstrap info update.
Your ' Adobe HDS Downloader ' is an excellent program and I used it successfully on www.pluzz.fr site.
For a few months it is no longer possible because the program stops when it detects the presence of DRM (or, perhaps, believes that there are DRM).
So I use 'pluzzdl' (http://code.google.com/p/tvdownloader/downloads/list) that downloads m3u8 stream.
Sometimes this program indicates the presence of DRM and says that the video could be unreadable, but don't stop downloading.
However, the video is often quite good.
Is it possible that Adobe Downloader HDS 'offers to download the video until the end when he believes the presence of DRM?
Please excuse my bad english.
Hello
Recently www.tou.tv move from rtmdump to HDS. I tried to download several videos not geolocalized, and always get the same error message
For example,
http://www.tou.tv/les-chroniques-d-une-mere-indigne/S03E07
gives me a command similar to
php AdobeHDS.php --manifest "http://cp143903-f.akamaihd.net/z/002/mp4/m/2010-05-17_merei_0024_,500,800,1200,.mp4.csmil/manifest.f4m?hdnea=st=1356515586~exp=1356515601~acl=/z/002/mp4/m/2010-05-17_merei_0024_*~hmac=d61935a59bafdb14066295bd2807550846749142c3b6ced891a0225e0e283291&hdcore=2.10.3&g=RAYPXIDTYOYS" --delete --auth "hdntl=exp=1356601986~acl=%2fz%2f002%2fmp4%2fm%2f2010-05-17_merei_0024_*~data=hdntl~hmac=19e1efda0a5d2fa844d01f50a9474fd3b1e7ff414fa39cf57d58fb508dc1f781&als=0,0.1,0,2,0,NaN,0,0,0,84,f,0,248.2,f,s,RAYPXIDTYOYS,2.10.3,84&hdcore=2.10.3" --useragent "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:17.0) Gecko/20100101 Firefox/17.0"
And I eventually get
KSV Adobe HDS Downloader
Processing manifest info....
Quality Selection:
Available: 1174 787 497
Selected : 1174
Unknown packet type 11 encountered! Encrypted fragments can't be recovered.
But as captvty 1.9.5 downloads it, I do not believe there is any encrypted fragments (captvty refuses to decrypt anything).
Thanks for your time
I found that for some live streams the content provider allows to replay stream from the beginning - i.e. stream was playing for 30 minutes but there is a progress bar that can be used to play stream from time 0. In such cases I can use network web developer tool from Firefox to sniff out the starting segment.
Would it be possible to display starting segment for such streams? May be a switch or a display after Selected: line?
Your script calls for curl, but curl is installed. Ubuntu 14.04
I'm not very deep into programming so I have no clue.
I found that sometimes AdobeHDS.php will fetch bootstrap and find 0 fragments when downloading live stream. At this point script will bail immediately. Live stream is not over but download is running close to the end. I think script should wait a little and retry updating bootstrap.
For such cases I can immediately re-start download and it progresses as nothing happened. The issue is that sometimes download is unattended and restart is impossible.
Hello there, this is an error I am getting when I try to run php script locally:
Parse error: parse error, expecting `"identifier (T_STRING)"' in /Users/brani/Desktop/Again/AdobeHDS.php on line 23
I'm on OSX Maverick. Wrong php setup? Thanks a lot in advance...
Hello, I would like you to add a retry option to the following output, "Failed to refresh bootstrap info, Status: 404" I want this because some livestreams don't start at EXACT times so the HDS downloader just stops and ends up not recording the stream when it comes online. I would like this to keep trying to reload and then record when the bootstrap becomes available. This would be very appreciated. I tried changing it to LogInfo and adding the ++$retries, true); to the end for the "Failed to refresh bootstrap info" line but it didn't work right. I don't know that much about php. :P Thanks!
Hi
Great scripts and Firefox addon.
For the HDS Link Detector would it be possible to add support for .m3u and .m3u8?
I am sorry if this isn't the correct place to post such a request. I couldn't find the addons repository.
Please add ability to limit download speed to AdobeHDS.php. This can be done through CURLOPT_MAX_RECV_SPEED_LARGE option. By default it should not be set which is currently the case but if command line option is specified the CURLOPT_MAX_RECV_SPEED_LARGE option should be set to b/s rate to limit download speed.
This helps when connection is shared for other tasks.
Hi,
I was trying to use your script to do offline process of wowza dvr fragments - http://www.wowza.com/forums/content.php?300
Wowza also uses adobe http streaming for this.
The fragments however are stored with different file ending, m4fa and m4fd. There is a txt file called dvrManifest_0000_00_00.txt in the folder with contents pasted below. Is there any way to use your tool to reassemble these fragments? Would appreciate any help or pointers in the right direction.
Subject says it all: on what conditions can I and others use these files, in particular AdobeHDS? Personally, I would prefer if you clarified your intentions in a comment block at top of file.
Or am I just missing something?
I have a weird issue that only happens occasionally.
The flv adobehds generates will only playback sound with a black screen in flash, but if I open it in VLC it seems fine. These files also provide out of sync audio (too fast) when using ffmpeg to convert to mp4.
Files that show video in flash convert just fine.
Same command, different results on different files. Any ideas?
Fatal error: Call to undefined function mcrypt_module_open() in AdobeHDS.php on line 362
this issue happens within the "Sep 11, 2015" version
when trying to download from:
php AdobeHDS.php --manifest "http://cbtnuggets-vh.akamaihd.net/z/fa/5e/fa5e91c5-b689-4277-b434-985ec4695ba3/acd5c4f16639a8c0a91b85aae5e157a16ae8ca18_10x_,150k,100k,400k,200k,500k,300k,.mp4.csmil/manifest.f4m?hdnea=st=1442298065~exp=1442305265~acl=/*~hmac=dbc55ce211da1bab7f76c0dab58c3296388e8b368c3633b9508eec06b07c3cdf&g=FRPNGBDVIERM&hdcore=3.3.0" --delete --auth "hdntl=exp=1442384651~acl=%2f*~data=hdntl~hmac=bfc8943da5e621dc11693b66eb60b32065ef3e9eb9aca4365a4b9613f59a658f&als=0,3,NaN,5,0,NaN,0,0,0,113,f,0,802.67,f,u,FRPNGBDVIERM,3.3.0,113&hdcore=3.3.0" --useragent "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:38.0) Gecko/20100101 Firefox/38.1.0 Waterfox/38.1.0"
or any other CBT nugget video never had this issues with a previous version
Any way functionality for decrypting FlashAccess DRM streams might be possible?
Using AMS 5.0 generated HDS,
Processing manifest info....
Quality Selection:
Available: 1
Selected : 1
Failed to refresh bootstrap info
Processing manifest info....
Notice: Undefined offset: 0 in /opt/lampp/archive/adobe.php on line 520
Quality Selection:
Available: 1
Selected : 1
Warning: unpack(): Type N: not enough input, need 4, have 0 in /opt/lampp/archive/adobe.php on line 1359
Failed to parse bootstrap info
Any ideas?
Hi K-S-V,
Could you please add a total duration of video into resulting FLV file?
After recording a bunch of fragments it is unknown until the end of playback how long the video is.
There is a bunch of FLV metadata injectors which could be used after your script but probably your script is the best way to do it. As example here is one injector: http://www.buraks.com/flvmdi/
Thanks,
Denis.
Manifest:
http://scache.fptplay.net.vn/livez/vtv9_2500.stream/manifest.f4m
I tried:
G:\SON\php>php AdobeHDS.php --manifest "http://scache.fptplay.net.vn/livez/vtv9_
2500.stream/manifest.f4m" --delete --outfile v9.flv --debug v9.txt
KSV Adobe HDS Downloader
Processing manifest info....
Manifest Entries:
Bitrate URL
1 media_ubtq283zl_b125000.abst/
Quality Selection:
Available: 1
Selected : 1
Updating bootstrap info, Available fragments: 0
Segment Tables:
Table 1:
Number Fragments
1 0
Fragment Tables:
Table 1:
Number Timestamp Duration Discontinuity
10169 152580918 9640
10170 152590558 9920
10171 152600478 10000
10172 152610478 10400
10173 152620878 9520
Update complete, Available fragments: 10173
Fragments Total: 10173, First: 10169, Start: 10172, Parallel: 8
Base Fragment Url:
http://scache.fptplay.net.vn/livez/vtv9_2500.stream/media_ubtq283zl_b125000.abst
/
Downloading Fragments:
Adding fragment 10172 to download queue
Adding fragment 10173 to download queue
Access Denied! Unable to download fragments.
G:\SON\php>
AdobeHDS.php fails to download live stream using following command line:
$ php AdobeHDS.php --manifest "http://50.7.136.42:9821/stream/FFA0945BCCDF67161820222426283048/f.f4m" --delete --debug --duration 60
--debug command is optional but --duration is needed as the stream is live
The website in question is http://www.ontvtime.ru/general/tvc.html
The script detects discontinuity for every other segment and due to this drops a lot of segments. It also only creates one file and records everything in it so it appears to detect only one segment of fails to switch between them. After download time expires the script does not find any segments in the stream.
I'm not sure if this is a bug or not but I'm downloading a video and the fragments aren't deleted even though --delete is specified on the command line. I debugged the code and $fragNum
and $fragCount
are both 0. #36 says the 0 fragments message is due to live streams, and that may be related to this.
The exact command I used was generated by your extension:
php AdobeHDS.php --manifest "http://intel-f.akamaihd.net/z/intel070815_1@76456/manifest.f4m?g=PEDHQMIZSBDJ&hdcore=3.1.0&plugin=aasp-3.1.0.43.124" --delete --auth "als=0,3,NaN,0,0,NaN,0,0,0,20,f,0,6555.29,f,s,PEDHQMIZSBDJ,3.1.0,20&hdcore=3.1.0&plugin=aasp-3.1.0.43.124" --useragent "Mozilla/5.0 (Windows NT 6.1; rv:31.0) Gecko/20100101 Firefox/31.0"
Thanks for both your work on the script and the extension.
KSV,
with your fantastic update for adobe hds downloader,I was able to download some videos that before don´t was possible, but, now, that message appears again: "encrypted with DRM". what happened? An update of DRM?
Thank in advance!
Hi
I just tried a video : http://www.tou.tv/pinel
I used the following command on Mac 10.8.3
php AdobeHDS.php --manifest "http://cp143903-f.akamaihd.net/z/006/mp4/g/2013-09-05_20_00_00_grandsreportages_1221_,500,800,1200,.mp4.csmil/manifest.f4m?hdnea=st=1378494381~exp=1378494396~acl=/z/006/mp4/g/2013-09-05_20_00_00_grandsreportages_1221_*~hmac=eb36e93be510efafce315e4290e55a34ded9ff124b4d901ce6dfc02631d2d5b6&hdcore=2.11.3&g=VWWMZLHJBVVC" --delete --auth "hdntl=exp=1378580781~acl=%2fz%2f006%2fmp4%2fg%2f2013-09-05_20_00_00_grandsreportages_1221_*~data=hdntl~hmac=3ae8d7364d27115a9870f81b6a5c37e966fecaaf2f6789d09ae9604e334b8d0d&als=0,0.1,0,2,0,NaN,0,0,0,44,f,0,3206.44,f,s,VWWMZLHJBVVC,2.11.3,44&hdcore=2.11.3" --useragent "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:23.0) Gecko/20100101 Firefox/23.0"
Sorry if my issue does not belong here, I did not find anywhere else to report it. Just hope it helps.
the tool is very useful, and i love it
Hi,
I'm trying to capture a stream but it is only picking up keyframes.
my command line is essentially this:
N:\A-Current\A-aOlympics>php "C:\Program Files\AdobeHDS\AdobeHDS.php" --manifest "[private link]" --delete --quality 3450 --outfile "[name of output].flv" --useragent "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0" --debug
I put the a sample of the output here
When I try to play the resultant flv file, it just shows me keyframes and it clearly is only a fraction of the size it should be
.
Hello
I'm upload somes files to mediafire
http://www.mediafire.com/?prcuyczoecccc
Can you, K-S-V, help me decode this files ?
Using latest AdobeHDS.php release
php AdobeHDS.php --manifest "http://mlghds-lh.akamaihd.net/z/mlg2_1@156739/manifest.f4m?hdcore=2.11.3&g=ZTUWMTRDQLNI" --delete
or
php AdobeHDS.php --manifest "http://mlghds-lh.akamaihd.net/z/mlg2_1@156739/manifest.f4m?hdcore=2.11.3&g=SRKLUNWOWIHY" --delete --auth "als=0,0.1,0,0,0,NaN,0,0,0,19,f,274010,274020.27,t,s,LJWQTRETUEPU,2.11.3,19&hdcore=2.11.3" --useragent "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0"
Both output video with a slight stutter every 10-20s. Not terrible, not noticable
Direct Link to stream and other streams that produce the same issue.
http://www.majorleaguegaming.com/
how to install php on win 8.1??????
I've tried to download a video from a website with the current version of the script, but then the script confused me with a, what I think, misleading error message:
"F:\video_test2>php AdobeHDS.php --manifest "http://sport1_event03-lh.akamaihd.net/z/EVENT03_1@140376/manifest.f4m?start=1398017640&end=1398024900&start=1398035438&hdnea=st=1398036338~exp=1398036638~acl=*~hmac=ccf77b44ff6e3c993f1bc20da7ac1672e681ed79c9f3ac80f98e50f42eb3c0cd&g=SCHSPCBVHXEM&hdcore=3.2.0&plugin=jwplayer-3.2.0.1" --delete --auth "hdntl=exp=1398122741~acl=%2f*~data=hdntl~hmac=e34a7815f8d0ffe0ab6eef88151373f298360cb8b8b6cab53ccf6b0338fb6459&start=1398017640&end=1398024900&start=1398035438&als=0,3,NaN,3,0,NaN,0,0,0,18,f,0,7260,f,s,SCHSPCBVHXEM,3.2.0,18&hdcore=3.2.0&plugin=jwplayer-3.2.0.1" --useragent "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0"
KSV Adobe HDS Downloader
Processing manifest info....
Quality Selection:
Available: 2628 1328 640 340
Selected : 2628
Fragments Total: 233004150, First: 233002941, Start: 233002941, Parallel: 8
Downloading 233004150/233004150 fragments
Found 0 fragments
Finished
The "Found 0 fragments" part is wrong here I think, after all it downloaded all fragment files with the file names from "856259d3cb6ac9ee73e2514e35ca643d_2500_a5e3d0c41aaf47d4-p_Seg1-Frag233002941" to "856259d3cb6ac9ee73e2514e35ca643d_2500_a5e3d0c41aaf47d4-p_Seg1-Frag233004150" and also the resulting .flv file looks fine from what I can see. So it's just the error message being confusing here. Actually I'm not sure why it continues at this point, after all the code should abort with 0 fragments?:
LogInfo("Found $fragCount fragments");
if (!$f4f->processed)
{
// Process available fragments
if ($fragCount < 1)
exit(1);
Steps to reproduce:
ffplay "rtmp://cp108478.live.edgefcs.net/live/sport1_1_800@45517 swfsize=927444 swfhash=6c1be1765187eae0bc9af07d858fae59a0effd3c5b803d08db261ced2c5512bb live=1 swfUrl=http://www.wilmaa.com/player/main_v5.033.swf"
Gives a memory corruption:
*** glibc detected *** ffplay: malloc(): memory corruption: 0x00007ffd00020630 ***
gdb says it's around (RTMP_Read)
EDIT I figured out how to do it. Thanks
ff 29 deleted addon bar
I'm downloading streaming videos from a tutorial site (I can provide the manifest URLs privately by e-mail). The command line is simply php AdobeHDS.php --manifest '[url]' --delete
Each and every video completes downloading and merging into a single flv file, but playback in all of them stops at around 75%. I'm playing them back on VLC 2.1.5 on a Mac.
How can I assist in debugging this?
I am getting Found 0 fragments Finished during ongoing livestream
is my connection maybe to fast (85mbit)?
I am using the default 8 parallel connections.
and have 4 parallel scripts running, directories are copies of php and the script so they are not interfering.
it happens at random times in any of the 4 channels windows I am downloading to hdd. seeing mostly
updating bootstrap info, Retries: 3
before this happens and script exits with
Found 0 fragments
Finished
any way to fix this through parameters?
or do I have to edit the script to keep on looping if 0 fragements are found?
as a temp fix I mean before it maybe gets updated.
in particular I am using the script this weekend on Radio1's big weekend music festival R1BW in the UK.
Cheers
Could you for each of the files please add copyright notices following this template (as recommended in the GPLv3 license text):
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
It's in my view important to add the part "either version 3 of the License, or (at your option) any later version" because the GPL may receive updates in the future that could be important to protect the freedom of users. Without that formulation present you are implicitly giving your scripts a "GPLv3 only" license.
I want to record the stream for specified amount of time.
But the streaming audio continously sends fragment, So dont know how to stop it.
Hi.
First thank you a lot for your work on this script.
I will show you here an example of a f4f stream that we cannot do nothing with it.
See this page. http://www.radio-canada.ca/regions/Quebec/2012/06/19/004-conseillers-vote-reglement-manifestations.shtml
Will not be able to download nothing.
Will not join frags files even if i found a way to download them.
« KSV Adobe HDS Downloader Found 42 fragments Unknown packet type 11 encountered! Encrypted fragments can't be recovered. »
Will not be able to download, read or treat the manifest file event if i find a way to download it and it's on the same folder.
Brief, totally useless for this type of f4f.
Can you help with this please ?
If it play on our computer, there is a way to do something with it.
We need your help.
As in the subject line. Is this a known issue? On some video this glitches there are more burdensome in other less, but on all happen. It seems that this
happens on concatenations of fragments. When this same video is played on web page every thing is ok.
For example:
http://bl.rutube.ru/5c6718c05385267b194808a0c3bddafe.f4m
Or:
http://bl.rutube.ru/80d598cccebd4ee3918c18988bfcded3.f4m
with low quality
I downloaded the latest version of the script, fetched my manifest with the HDS LinkDetector, and ran the script. This is all that happened:
KSV Adobe HDS Downloader
Processing manifest info....
Quality Selection:
Available: 2392 1413 713 387 213
Selected : 2392
Fragments Total: 44, First: 1, Start: 1, Parallel: 8
Downloading 44/44 fragments
Found 44 fragments
Finished
As you can see, it says it downloads files, but I can't see any. Aren't they supposed to download to the same directory as the script?
Hello sir,
I am using this HDS script now for restreaming an audio stream piping to vlc with transcoding.but my problem is the stream stops in between say after an hour or two.is there any way to make the stream continous atleast for a day?
Is possible with this program make download videos encrypted by DRM?
http://www.binarymark.com/Products/StreamingVideoDownloader/default.aspx#new
Thank in advance!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.