Last active
March 14, 2020 06:49
-
-
Save isshiki/f7f876064162532c5bf97f388f193600 to your computer and use it in GitHub Desktop.
ColabのPyPIパッケージを一覧にするC#コード
This file contains 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
using System; | |
using System.Collections.Generic; | |
using System.Linq; | |
using System.Text; | |
using System.Threading.Tasks; | |
using System.Net; | |
using System.Text.RegularExpressions; | |
using System.IO; | |
namespace ConsoleApp1 | |
{ | |
class Program | |
{ | |
static void Main(string[] args) | |
{ | |
//MakeListText() | |
MakeMarkdownText(); | |
} | |
static void MakeListText() | |
{ | |
var sl = new List<string>(); | |
// !pip freeze で取得したリストを以下の形式に書き換えた | |
sl.Add("absl-py,0.9.0"); | |
sl.Add("alabaster,0.7.12"); | |
sl.Add("albumentations,0.1.12"); | |
sl.Add("altair,4.0.1"); | |
sl.Add("asgiref,3.2.3"); | |
sl.Add("astor,0.8.1"); | |
sl.Add("astropy,4.0"); | |
sl.Add("atari-py,0.2.6"); | |
sl.Add("atomicwrites,1.3.0"); | |
sl.Add("attrs,19.3.0"); | |
sl.Add("audioread,2.1.8"); | |
sl.Add("autograd,1.3"); | |
sl.Add("Babel,2.8.0"); | |
sl.Add("backcall,0.1.0"); | |
sl.Add("backports.tempfile,1.0"); | |
sl.Add("backports.weakref,1.0.post1"); | |
sl.Add("beautifulsoup4,4.6.3"); | |
sl.Add("bleach,3.1.0"); | |
sl.Add("blis,0.2.4"); | |
sl.Add("bokeh,1.4.0"); | |
sl.Add("boto,2.49.0"); | |
sl.Add("boto3,1.11.15"); | |
sl.Add("botocore,1.14.15"); | |
sl.Add("Bottleneck,1.3.1"); | |
sl.Add("branca,0.3.1"); | |
sl.Add("bs4,0.0.1"); | |
sl.Add("bz2file,0.98"); | |
sl.Add("cachetools,3.1.1"); | |
sl.Add("certifi,2019.11.28"); | |
sl.Add("cffi,1.14.0"); | |
sl.Add("chainer,6.5.0"); | |
sl.Add("chardet,3.0.4"); | |
sl.Add("chart-studio,1.0.0"); | |
sl.Add("Click,7.0"); | |
sl.Add("cloudpickle,1.2.2"); | |
sl.Add("cmake,3.12.0"); | |
sl.Add("colorlover,0.3.0"); | |
sl.Add("community,1.0.0b1"); | |
sl.Add("contextlib2,0.5.5"); | |
sl.Add("convertdate,2.2.0"); | |
sl.Add("coverage,3.7.1"); | |
sl.Add("coveralls,0.5"); | |
sl.Add("crcmod,1.7"); | |
sl.Add("cufflinks,0.17.0"); | |
sl.Add("cvxopt,1.2.4"); | |
sl.Add("cvxpy,1.0.25"); | |
sl.Add("cycler,0.10.0"); | |
sl.Add("cymem,2.0.3"); | |
sl.Add("Cython,0.29.15"); | |
sl.Add("daft,0.0.4"); | |
sl.Add("dask,2.9.2"); | |
sl.Add("dataclasses,0.7"); | |
sl.Add("datascience,0.10.6"); | |
sl.Add("decorator,4.4.1"); | |
sl.Add("defusedxml,0.6.0"); | |
sl.Add("descartes,1.1.0"); | |
sl.Add("dill,0.3.1.1"); | |
sl.Add("distributed,1.25.3"); | |
sl.Add("Django,3.0.3"); | |
sl.Add("dlib,19.18.0"); | |
sl.Add("dm-sonnet,1.35"); | |
sl.Add("docopt,0.6.2"); | |
sl.Add("docutils,0.15.2"); | |
sl.Add("dopamine-rl,1.0.5"); | |
sl.Add("earthengine-api,0.1.213"); | |
sl.Add("easydict,1.9"); | |
sl.Add("ecos,2.0.7.post1"); | |
sl.Add("editdistance,0.5.3"); | |
sl.Add("en-core-web-sm,2.1.0"); | |
sl.Add("entrypoints,0.3"); | |
sl.Add("et-xmlfile,1.0.1"); | |
sl.Add("fa2,0.3.5"); | |
sl.Add("fancyimpute,0.4.3"); | |
sl.Add("fastai,1.0.60"); | |
sl.Add("fastdtw,0.3.4"); | |
sl.Add("fastprogress,0.2.2"); | |
sl.Add("fastrlock,0.4"); | |
sl.Add("fbprophet,0.5"); | |
sl.Add("feather-format,0.4.0"); | |
sl.Add("featuretools,0.4.1"); | |
sl.Add("filelock,3.0.12"); | |
sl.Add("fix-yahoo-finance,0.0.22"); | |
sl.Add("Flask,1.1.1"); | |
sl.Add("folium,0.8.3"); | |
sl.Add("fsspec,0.6.2"); | |
sl.Add("future,0.16.0"); | |
sl.Add("gast,0.2.2"); | |
sl.Add("GDAL,2.2.2"); | |
sl.Add("gdown,3.6.4"); | |
sl.Add("gensim,3.6.0"); | |
sl.Add("geographiclib,1.50"); | |
sl.Add("geopy,1.17.0"); | |
sl.Add("gevent,1.4.0"); | |
sl.Add("gin-config,0.3.0"); | |
sl.Add("glob2,0.7"); | |
sl.Add("google,2.0.3"); | |
sl.Add("google-api-core,1.16.0"); | |
sl.Add("google-api-python-client,1.7.11"); | |
sl.Add("google-auth,1.7.2"); | |
sl.Add("google-auth-httplib2,0.0.3"); | |
sl.Add("google-auth-oauthlib,0.4.1"); | |
sl.Add("google-cloud-bigquery,1.21.0"); | |
sl.Add("google-cloud-core,1.0.3"); | |
sl.Add("google-cloud-datastore,1.8.0"); | |
sl.Add("google-cloud-language,1.2.0"); | |
sl.Add("google-cloud-storage,1.16.2"); | |
sl.Add("google-cloud-translate,1.5.0"); | |
sl.Add("google-colab,1.0.0"); | |
sl.Add("google-pasta,0.1.8"); | |
sl.Add("google-resumable-media,0.4.1"); | |
sl.Add("googleapis-common-protos,1.51.0"); | |
sl.Add("googledrivedownloader,0.4"); | |
sl.Add("graph-nets,1.0.5"); | |
sl.Add("graphviz,0.10.1"); | |
sl.Add("greenlet,0.4.15"); | |
sl.Add("grpcio,1.27.1"); | |
sl.Add("gspread,3.0.1"); | |
sl.Add("gspread-dataframe,3.0.4"); | |
sl.Add("gunicorn,20.0.4"); | |
sl.Add("gym,0.15.6"); | |
sl.Add("h5py,2.8.0"); | |
sl.Add("HeapDict,1.0.1"); | |
sl.Add("holidays,0.9.12"); | |
sl.Add("html5lib,1.0.1"); | |
sl.Add("httpimport,0.5.18"); | |
sl.Add("httplib2,0.11.3"); | |
sl.Add("httplib2shim,0.0.3"); | |
sl.Add("humanize,0.5.1"); | |
sl.Add("hyperopt,0.1.2"); | |
sl.Add("ideep4py,2.0.0.post3"); | |
sl.Add("idna,2.8"); | |
sl.Add("image,1.5.28"); | |
sl.Add("imageio,2.4.1"); | |
sl.Add("imagesize,1.2.0"); | |
sl.Add("imbalanced-learn,0.4.3"); | |
sl.Add("imblearn,0.0"); | |
sl.Add("imgaug,0.2.9"); | |
sl.Add("importlib-metadata,1.5.0"); | |
sl.Add("imutils,0.5.3"); | |
sl.Add("inflect,2.1.0"); | |
sl.Add("intel-openmp,2020.0.133"); | |
sl.Add("intervaltree,2.1.0"); | |
sl.Add("ipykernel,4.6.1"); | |
sl.Add("ipython,5.5.0"); | |
sl.Add("ipython-genutils,0.2.0"); | |
sl.Add("ipython-sql,0.3.9"); | |
sl.Add("ipywidgets,7.5.1"); | |
sl.Add("itsdangerous,1.1.0"); | |
sl.Add("jax,0.1.58"); | |
sl.Add("jaxlib,0.1.38"); | |
sl.Add("jdcal,1.4.1"); | |
sl.Add("jedi,0.16.0"); | |
sl.Add("jieba,0.42.1"); | |
sl.Add("Jinja2,2.11.1"); | |
sl.Add("jmespath,0.9.4"); | |
sl.Add("joblib,0.14.1"); | |
sl.Add("jpeg4py,0.1.4"); | |
sl.Add("jsonschema,2.6.0"); | |
sl.Add("jupyter,1.0.0"); | |
sl.Add("jupyter-client,5.3.4"); | |
sl.Add("jupyter-console,5.2.0"); | |
sl.Add("jupyter-core,4.6.2"); | |
sl.Add("kaggle,1.5.6"); | |
sl.Add("kapre,0.1.3.1"); | |
sl.Add("Keras,2.2.5"); | |
sl.Add("Keras-Applications,1.0.8"); | |
sl.Add("Keras-Preprocessing,1.1.0"); | |
sl.Add("keras-vis,0.4.1"); | |
sl.Add("kfac,0.2.0"); | |
sl.Add("kiwisolver,1.1.0"); | |
sl.Add("knnimpute,0.1.0"); | |
sl.Add("librosa,0.6.3"); | |
sl.Add("lightgbm,2.2.3"); | |
sl.Add("llvmlite,0.31.0"); | |
sl.Add("lmdb,0.98"); | |
sl.Add("lucid,0.3.8"); | |
sl.Add("lunardate,0.2.0"); | |
sl.Add("lxml,4.2.6"); | |
sl.Add("magenta,0.3.19"); | |
sl.Add("Markdown,3.2.1"); | |
sl.Add("MarkupSafe,1.1.1"); | |
sl.Add("matplotlib,3.1.3"); | |
sl.Add("matplotlib-venn,0.11.5"); | |
sl.Add("mesh-tensorflow,0.1.9"); | |
sl.Add("mido,1.2.6"); | |
sl.Add("mir-eval,0.5"); | |
sl.Add("missingno,0.4.2"); | |
sl.Add("mistune,0.8.4"); | |
sl.Add("mizani,0.6.0"); | |
sl.Add("mkl,2019.0"); | |
sl.Add("mlxtend,0.14.0"); | |
sl.Add("more-itertools,8.2.0"); | |
sl.Add("moviepy,0.2.3.5"); | |
sl.Add("mpi4py,3.0.3"); | |
sl.Add("mpmath,1.1.0"); | |
sl.Add("msgpack,0.5.6"); | |
sl.Add("multiprocess,0.70.9"); | |
sl.Add("multitasking,0.0.9"); | |
sl.Add("murmurhash,1.0.2"); | |
sl.Add("music21,5.5.0"); | |
sl.Add("natsort,5.5.0"); | |
sl.Add("nbconvert,5.6.1"); | |
sl.Add("nbformat,5.0.4"); | |
sl.Add("networkx,2.4"); | |
sl.Add("nibabel,2.3.3"); | |
sl.Add("nltk,3.2.5"); | |
sl.Add("notebook,5.2.2"); | |
sl.Add("np-utils,0.5.12.1"); | |
sl.Add("numba,0.47.0"); | |
sl.Add("numexpr,2.7.1"); | |
sl.Add("numpy,1.17.5"); | |
sl.Add("nvidia-ml-py3,7.352.0"); | |
sl.Add("oauth2client,4.1.3"); | |
sl.Add("oauthlib,3.1.0"); | |
sl.Add("okgrade,0.4.3"); | |
sl.Add("opencv-contrib-python,4.1.2.30"); | |
sl.Add("opencv-python,4.1.2.30"); | |
sl.Add("openpyxl,2.5.9"); | |
sl.Add("opt-einsum,3.1.0"); | |
sl.Add("osqp,0.6.1"); | |
sl.Add("packaging,20.1"); | |
sl.Add("palettable,3.3.0"); | |
sl.Add("pandas,0.25.3"); | |
sl.Add("pandas-datareader,0.7.4"); | |
sl.Add("pandas-gbq,0.11.0"); | |
sl.Add("pandas-profiling,1.4.1"); | |
sl.Add("pandocfilters,1.4.2"); | |
sl.Add("parso,0.6.2"); | |
sl.Add("pathlib,1.0.1"); | |
sl.Add("patsy,0.5.1"); | |
sl.Add("pexpect,4.8.0"); | |
sl.Add("pickleshare,0.7.5"); | |
sl.Add("Pillow,6.2.2"); | |
sl.Add("pip-tools,4.2.0"); | |
sl.Add("plac,0.9.6"); | |
sl.Add("plotly,4.4.1"); | |
sl.Add("plotnine,0.6.0"); | |
sl.Add("pluggy,0.7.1"); | |
sl.Add("portpicker,1.3.1"); | |
sl.Add("prefetch-generator,1.0.1"); | |
sl.Add("preshed,2.0.1"); | |
sl.Add("pretty-midi,0.2.8"); | |
sl.Add("prettytable,0.7.2"); | |
sl.Add("progressbar2,3.38.0"); | |
sl.Add("prometheus-client,0.7.1"); | |
sl.Add("promise,2.3"); | |
sl.Add("prompt-toolkit,1.0.18"); | |
sl.Add("protobuf,3.10.0"); | |
sl.Add("psutil,5.4.8"); | |
sl.Add("psycopg2,2.7.6.1"); | |
sl.Add("ptyprocess,0.6.0"); | |
sl.Add("py,1.8.1"); | |
sl.Add("pyarrow,0.14.1"); | |
sl.Add("pyasn1,0.4.8"); | |
sl.Add("pyasn1-modules,0.2.8"); | |
sl.Add("pycocotools,2.0.0"); | |
sl.Add("pycparser,2.19"); | |
sl.Add("pydata-google-auth,0.3.0"); | |
sl.Add("pydot,1.3.0"); | |
sl.Add("pydot-ng,2.0.0"); | |
sl.Add("pydotplus,2.0.2"); | |
sl.Add("PyDrive,1.3.1"); | |
sl.Add("pyemd,0.5.1"); | |
sl.Add("pyglet,1.4.10"); | |
sl.Add("Pygments,2.1.3"); | |
sl.Add("pygobject,3.26.1"); | |
sl.Add("pymc3,3.7"); | |
sl.Add("PyMeeus,0.3.6"); | |
sl.Add("pymongo,3.10.1"); | |
sl.Add("pymystem3,0.2.0"); | |
sl.Add("PyOpenGL,3.1.5"); | |
sl.Add("pyparsing,2.4.6"); | |
sl.Add("pypng,0.0.20"); | |
sl.Add("pyrsistent,0.15.7"); | |
sl.Add("pysndfile,1.3.8"); | |
sl.Add("PySocks,1.7.1"); | |
sl.Add("pystan,2.19.1.1"); | |
sl.Add("pytest,3.6.4"); | |
sl.Add("python-apt,1.6.5+ubuntu0.2"); | |
sl.Add("python-chess,0.23.11"); | |
sl.Add("python-dateutil,2.6.1"); | |
sl.Add("python-louvain,0.13"); | |
sl.Add("python-rtmidi,1.4.0"); | |
sl.Add("python-slugify,4.0.0"); | |
sl.Add("python-utils,2.3.0"); | |
sl.Add("pytz,2018.9"); | |
sl.Add("PyWavelets,1.1.1"); | |
sl.Add("PyYAML,3.13"); | |
sl.Add("pyzmq,17.0.0"); | |
sl.Add("qtconsole,4.7.1"); | |
sl.Add("QtPy,1.9.0"); | |
sl.Add("regex,2019.12.20"); | |
sl.Add("requests,2.21.0"); | |
sl.Add("requests-oauthlib,1.3.0"); | |
sl.Add("resampy,0.2.2"); | |
sl.Add("retrying,1.3.3"); | |
sl.Add("rpy2,2.9.5"); | |
sl.Add("rsa,4.0"); | |
sl.Add("s3fs,0.4.0"); | |
sl.Add("s3transfer,0.3.3"); | |
sl.Add("scikit-image,0.16.2"); | |
sl.Add("scikit-learn,0.22.1"); | |
sl.Add("scipy,1.4.1"); | |
sl.Add("screen-resolution-extra,0.0.0"); | |
sl.Add("scs,2.1.1.post2"); | |
sl.Add("seaborn,0.10.0"); | |
sl.Add("semantic-version,2.8.4"); | |
sl.Add("Send2Trash,1.5.0"); | |
sl.Add("setuptools-git,1.2"); | |
sl.Add("Shapely,1.7.0"); | |
sl.Add("simplegeneric,0.8.1"); | |
sl.Add("six,1.12.0"); | |
sl.Add("sklearn,0.0"); | |
sl.Add("sklearn-pandas,1.8.0"); | |
sl.Add("smart-open,1.9.0"); | |
sl.Add("snowballstemmer,2.0.0"); | |
sl.Add("sortedcontainers,2.1.0"); | |
sl.Add("spacy,2.1.9"); | |
sl.Add("Sphinx,1.8.5"); | |
sl.Add("sphinxcontrib-websupport,1.2.0"); | |
sl.Add("SQLAlchemy,1.3.13"); | |
sl.Add("sqlparse,0.3.0"); | |
sl.Add("srsly,1.0.1"); | |
sl.Add("stable-baselines,2.2.1"); | |
sl.Add("statsmodels,0.10.2"); | |
sl.Add("sympy,1.1.1"); | |
sl.Add("tables,3.4.4"); | |
sl.Add("tabulate,0.8.6"); | |
sl.Add("tblib,1.6.0"); | |
sl.Add("tensor2tensor,1.14.1"); | |
sl.Add("tensorboard,1.15.0"); | |
sl.Add("tensorboardcolab,0.0.22"); | |
sl.Add("tensorflow,1.15.0"); | |
sl.Add("tensorflow-datasets,2.0.0"); | |
sl.Add("tensorflow-estimator,1.15.1"); | |
sl.Add("tensorflow-gan,2.0.0"); | |
sl.Add("tensorflow-hub,0.7.0"); | |
sl.Add("tensorflow-metadata,0.21.1"); | |
sl.Add("tensorflow-privacy,0.2.2"); | |
sl.Add("tensorflow-probability,0.7.0"); | |
sl.Add("termcolor,1.1.0"); | |
sl.Add("terminado,0.8.3"); | |
sl.Add("testpath,0.4.4"); | |
sl.Add("text-unidecode,1.3"); | |
sl.Add("textblob,0.15.3"); | |
sl.Add("textgenrnn,1.4.1"); | |
sl.Add("tflearn,0.3.2"); | |
sl.Add("Theano,1.0.4"); | |
sl.Add("thinc,7.0.8"); | |
sl.Add("toolz,0.10.0"); | |
sl.Add("torch,1.4.0"); | |
sl.Add("torchsummary,1.5.1"); | |
sl.Add("torchtext,0.3.1"); | |
sl.Add("torchvision,0.5.0"); | |
sl.Add("tornado,4.5.3"); | |
sl.Add("tqdm,4.28.1"); | |
sl.Add("traitlets,4.3.3"); | |
sl.Add("tweepy,3.6.0"); | |
sl.Add("typing,3.6.6"); | |
sl.Add("typing-extensions,3.6.6"); | |
sl.Add("tzlocal,1.5.1"); | |
sl.Add("umap-learn,0.3.10"); | |
sl.Add("uritemplate,3.0.1"); | |
sl.Add("urllib3,1.24.3"); | |
sl.Add("vega-datasets,0.8.0"); | |
sl.Add("wasabi,0.6.0"); | |
sl.Add("wcwidth,0.1.8"); | |
sl.Add("webencodings,0.5.1"); | |
sl.Add("Werkzeug,1.0.0"); | |
sl.Add("widgetsnbextension,3.5.1"); | |
sl.Add("wordcloud,1.5.0"); | |
sl.Add("wrapt,1.11.2"); | |
sl.Add("xarray,0.14.1"); | |
sl.Add("xgboost,0.90"); | |
sl.Add("xkit,0.0.0"); | |
sl.Add("xlrd,1.1.0"); | |
sl.Add("xlwt,1.3.0"); | |
sl.Add("yellowbrick,0.9.1"); | |
sl.Add("zict,1.0.0"); | |
sl.Add("zipp,3.1.0"); | |
sl.Add("zmq,0.0.0"); | |
var sbMarkdown = new StringBuilder(); | |
foreach (var item in sl) | |
{ | |
var parts = item.Split(','); | |
var name = parts[0]; | |
var version = parts[1]; | |
var url_name = name; | |
//switch (name) | |
//{ | |
// case "en-core-web-sm": | |
// url_name = "en-core-web-sm-mirror"; | |
// break; | |
// case "screen-resolution-extra": | |
// // PyPIにないのでスキップする | |
// continue; | |
// case "xkit": | |
// // PyPIにないのでスキップする | |
// continue; | |
//} | |
var pypiUrl = $"https://pypi.org/project/{url_name}/"; | |
var htmlCode = String.Empty; | |
try | |
{ | |
using (var client = new WebClient()) | |
{ | |
htmlCode = client.DownloadString(pypiUrl); | |
} | |
} | |
catch (WebException wex) | |
{ | |
if (((HttpWebResponse)wex.Response).StatusCode == HttpStatusCode.NotFound) | |
{ | |
// 404エラー | |
htmlCode = " <p class=\"package-description__summary\">***Does not exist in PyPI index!***</p> "; | |
} | |
else | |
{ | |
throw; | |
} | |
} | |
var matche = Regex.Match(htmlCode, | |
"<p class=\"package-description__summary\">([^<]*?)</p>", | |
RegexOptions.IgnoreCase | RegexOptions.Multiline); | |
var english = matche.Groups[1].Value; | |
var line = $"- [{name}](https://pypi.org/project/{url_name}/)=={version}: {english}"; | |
sbMarkdown.Append(line + "\r\n"); | |
Console.WriteLine(line); | |
} | |
var path = @"C:\Users\masa-i\Desktop\pypi-list.txt"; | |
File.WriteAllText(path, sbMarkdown.ToString()); | |
Console.WriteLine($"Done!- {path}"); | |
} | |
static void MakeMarkdownText() | |
{ | |
// 作成されたpypi-list.txtをコピーしてjapanese.txt(UTF-8)を作成して以下の置換を行う | |
// 検索:\- \[(.*?)\]\((.*?)\)==(.*?): | |
// 置換:\n\n | |
// さらにjapanese.txtで以下の置換を行って完成 | |
// 検索:\n\n\n | |
// 置換:\n | |
var srcPath = @"C:\Users\masa-i\Desktop\pypi-list.txt"; | |
var pypiList = File.ReadAllLines(srcPath); | |
var destPath = @"C:\Users\masa-i\Desktop\japanese.txt"; | |
var japaneseList = File.ReadAllLines(destPath); | |
if (pypiList.Length != japaneseList.Length) | |
{ | |
Console.WriteLine("行数が違うから確かめて!"); | |
return; | |
} | |
var sbMarkdown = new StringBuilder(); | |
var length = pypiList.Length; | |
for (int i = 0; i < length; i++) | |
{ | |
var pypi = pypiList[i]; | |
var posEnglish = pypi.IndexOf(": ") + 2; | |
var japanese = japaneseList[i]; | |
sbMarkdown.Append( | |
$"{pypi.Substring(0, posEnglish)} \r\n" + | |
$" {pypi.Substring(posEnglish)} \r\n" + | |
$" {japanese}\r\n"); | |
} | |
var path = @"C:\Users\masa-i\Desktop\pypi-markdown.txt"; | |
File.WriteAllText(path, sbMarkdown.ToString()); | |
Console.WriteLine($"Done!- {path}"); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment