暇つぶしでやってる VTuber のランキングサイトに ID を追加するのに5分くらいで適当に書いたもの。YouTube API の仕様変わっちゃったんでどうしようかな〜と思ってるんだけど現時点で登録数 350 超えてるし基本放置プレイなのでどうでもよいのだけどね。
にじさんじ
#!/bin/bash set -e set -u set -x set -- $( curl 'https://nijisanji.ichikara.co.jp/member/' \ | ruby -e ' require "nokogiri" Nokogiri::HTML.parse(STDIN.read).xpath(%!//div[@class="insideline"]/a!).each do |n| puts n.attr("href") end ' ) ids=() for f do id=$( curl "${f}" \ | ruby -e ' require "nokogiri" require "uri" Nokogiri::HTML.parse(STDIN.read).xpath(%!//a[contains(@class, "elementor-social-icon-youtube")]!).each do |n| puts URI.parse(n.attr("href")).path.split("/")[-1] end ' ) echo ${id} ids+=(${id}) done printf '%s\n' ------------------------ printf '%s\n' "${ids[@]}"
UCD-miitqNY3nyukJ4Fnf4_A UC0g1AE0DOjBYnLhkgoRWN1w UC6oDys1BGgBsIC3WhG1BovQ UCsg-YqdqQ-KFF0LNk23BY4A UC_4tXjqecqox5Uc05ncxpxg UCoztvTULBYd3WmStqYeoHcA UCwokZsOK_uEre70XayaFnzA UCCVwhI5trmaSxfcze_Ovzfw UCZ1xuCK1kNmn5RzPYIZop3w UCt5-0i4AVHXaWJrL8Wql3mw UCTi_rzf5QIkXjhJjkbcAdTg UCwQ9Uv-m8xkE5PzRc7Bqx3Q UCSFCh5NL4qXrAy9u-u2lX3g UCHVXbQzkl3rDfsXWo8xi2qw UCPvGypSgfDkVe7JG2KygK7A UC1zFJrfEKvCixhsjNSb1toQ UCspv01oxUFf_MTSipURRhkA UCbc8fwhdUNlqi-J99ISYu4A UC_a1ZYZ8ZTXpjg9xUY9sj8w UCeShTCVgZyq2lsBW9QwIJcw UCt0clH12Xk1-Ej5PXKGfdPA UCXRlIK3Cw_TJIQC5kSJJQMg UCV5ZZlLjk5MKGg3L0n0vbzw UCLO9QDxVL4bnvRRsz6K4bsQ UCKMYISTJAQ8xTplUPHiABlA UCdpUojq0KWZCN9bxXnZwz5w UC53UDnhAAYwvNO7j_2Ju1cQ UCtpB6Bvhs1Um93ziEDACQ8g UCYKP16oMX9KKPbrNgo_Kgag UCv1fFr156jc65EMiLbaLImw UCveZ9Ic1VtcXbsyaBgxPMvg UCmUjjW5zF1MMOhYUwwwQv9Q UChUJbHiTVeGrSkTdBzVfNCQ UCIytNcoz4pWzXfLda0DoULQ UCmovZ2th3Sqpd00F5RdeigQ UCb5JxV6vKlYVknoJB8TnyYg UCsFn_ueskBkMCEyzCEqAOvg UC_GCs6GARLxEHxy1w40d6VQ UC8C1LLhBhf_E2IBPLSDJXlQ UCJubINhCcFXlsBwnHp0wl_g UCL34fAoFim9oHLbVzMKFavQ UCjlmCrq4TP1I4xguOtJ-31w UCfQVs_KuXeNAlGa3fb8rlnQ UCvmppcdYf4HOv-tFQhHHJMA UCTIE7LM5X15NVugV7Krp9Hw UCGYAYLDE7TZiiC8U6teciDQ UC9EjSJ8pvxtvPdxLOElv73w UCUc8GZfFxtmk7ZwSO7ccQ0g UCBi8YaVyZpiKWN3_Z0dCTfQ UC3lNFeJiTq6L3UWoz4g1e-A UC48jH1ul-6HOrcSSfoR02fQ UCRWOdwLRsenx2jLaiCAIU4A UCNW1Ex0r6HsWRD4LCtPwvoQ UCWz0CSYCxf4MhRKPDm220AQ UC0WwEfE-jOM2rzjpdfhTzZA UCmeyo5pRj_6PXG-CsGUuWWg UCfipDDn7wY-C-SoUChgxCQQ UCnRQYHTnRLSF0cLJwMnedCg UCo7TRj3cS-f_1D9ZDmuTsjw UCHBhnG2G-qN0JrrWmMO2FTA UCXU7YYxy_iQd3ulXyO-zC2w UC9V3Y3_uzU5e-usObb6IE1w UCpnvhOIJ6BN-vPkYU9ls-Eg UCLpYMk5h1bq8_GAFVBgXhPQ UCg63a3lk6PNeWhVvMRM_mrQ UC2OacIzd2UxGHRGhdHl1Rhw UCkIimWZ9gBJRamKF0rmPU8w UCtnO2N4kPTXmyvedjGWdx3Q UCryOPk2GZ1meIDt53tL30Tw UCBiqkFJljoxAj10SoP2w2Cg UCHX7YpFG8rVwhsHCx34xt7w UCeK9HFcRZoTrvqcUCtccMoQ UCRV9d6YCYIMUszK-83TwxVA UCUzJ90o1EjqUbk2pBAy0_aw UCpNH2Zk2gw3JBjWAKSyZcQQ UCIG9rDtgR45VCZmYnd-4DUw UCuz0vzQgC8LRdS6lVV0UkUg UCwrjITPwG4q71HzihV2C7Nw UC6TfqY40Xt1Y0J-N18c85qQ UCl1oLKcAq93p-pwKfDGhiYQ UCvzVB-EYuHFXHZrObB8a_Og UCHK5wkevfaGrPr7j3g56Jmw UCiSRx1a2k-0tOg-fs6gAolQ UCqQV8xEBWd5SVZBLlYrS_5Q UCllKI7VjyANuS1RXatizfLQ UCb6ObE-XGCctO3WrjRZC-cw UCerkculBD7YLc_vOGrF7tKg UCufQu4q65z63IgE4cfKs1BQ UCtAvQ5U0aXyKwm2i4GqFgJg UCoM_XmK45j504hfUWvN06Qg
upd8
ワンライナーでOK。
curl 'https://upd8.jp/virtual_talent/' | ruby -e 'require "nokogiri"; require "uri"; Nokogiri::HTML.parse(STDIN.read).xpath(%!//div[@class="link_youtube"]/a[starts-with(@href, "https://www.youtube.com/channel/")]!).each do |n| puts URI.parse(n.attr("href")).path.split("/")[-1] end'
UC4YaOt1yT-ZeyB0OmxHgolA UCGcD5iUDG8xiywZeeDxye-A UCNjTjd2-PMC8Oo_-dCEss7A UCHTnX0CSX_KObo5I9WuZ64g UCfiK42sBHraMBK6eNWtsy7A UC0TXe_LYZ4scaW2XMyi5_kw UCH1B9AR8sfWJVf9zcu9rbGg UCKDHdDpoE9lurDuyAGAuNnw UCgqQ5iuvUyPRHp3rBLuOtCw UCeLzT-7b2PBcunJplmWtoDg UCwePpiw1ocZRSNSkpKvVISw UCDh2bWI5EDu7PavqwICkVpA UCYTz3uIgwVY3ZU-IQJS8r3A UC0Owc36U9lOyi9Gx9Ic-4qg UCRvpMpzAXBRKJQuk-8-Sdvg UC2kyQhzGOB-JPgcQX9OMgEw UCeAfiVvEuyICYJW-f3GnQjQ UC3iwL9Yz8LcKkJsnLPevOTQ UCPf-EnX70UM7jqjKwhDmS8g UCkPIfBOLoO0hVPG-tI2YeGg UC3-jXrZXv-PQshpaTQpicPQ UC0e6zo8oX6ISSBjPaSZsjeA UCLQIMDHNE0ZGAiHIdMbq7dw UCHxPGxBdXPWwRrSSTJaRSKg UCMxKcUjeTEcgHmC9Zzn3R4w UCE5rWcDxLPaaUFWOxzJFfNg UCBnJcqkJofBN26VELPXSB5A UCk7cMvrfvH98Bfng58N_Zzw UCQn9QZF02tAUnC-hCnveEng UCu5DbFfYe3KiwhcmanCvSVg UCs8xsWmWEjjcyjAFu5KMGIg UC7-N7MvN5muVIHqyQx9LFbA UCp77Qho-YHhnklRr-DkjiOw UChLfthKoUV502J7gU9STArg UCGFD_8TRHhlpjfqGhLUSk4g UCmGxj8pXAF4J8tVYiveAnpQ UCPljC4d-GgdFgVqtoCZ3m_w UCiVRnULJjc8o-j_lG5BAzKw UCZx7wgGNs2UFyRRtLoNur9Q UCZx7wgGNs2UFyRRtLoNur9Q UCHccxX2p_9DB_HPnXSb2omw UChGY3OpdU6wzFzygJ_Rjvlw UCX7WYPXASkYUm2GyomLllIg UCZk6mxfTpjuuxgqxuFBJO_g UCSyB7n4vUn-_Ah3KEuka2hw UCg8TPE5nLLOqlNnBivmQwww UC0QzO6nK1cEDZvJSt2769Zw UCyZZMKRn-mUEkPzaqa9b6bg UCJzg5k2prEhTPMoK0kcBQPg
ホロライブ
ワンライナーでOK。
curl 'https://www.hololive.tv/member' | ruby -e 'require "nokogiri"; require "uri"; Nokogiri::HTML.parse(STDIN.read).xpath(%!//a[starts-with(@href, "https://www.youtube.com/channel/")]!).each do |n| puts URI.parse(n.attr("href")).path.split("/")[-1] end'
UCp6993wxpyDPHUpavwDFqgg UCDqI2jOz0weumE8s7paEk6g UC-hM6YJuNYVAmUWxeIr9FeA UCD8HOxPs4Xvsm8H0ZxXGiBw UCFTLzh12_nrtzqBPsTCqenA UC1CfXB_kRs3C-zaeTG3oGyg UCdn5BQ06XqgXoAxIhbqw5Rg UCQ0UDLQCjY0rmuxCDE38FGg UC1opHUrw8rvnsadT-iGp7Cg UCXTpFs_3PqI41qX2d9tL2Rw UC7fk0CB07ly8oSl0aqKkqFg UC1suqwovbL1kzsoaZgFZLKg UCvzGlP9oQwU--Y0r9id_jnA UCp-5t9SrOQwXMU7iIjQfARg UCdn5BQ06XqgXoAxIhbqw5Rg UCvaTdHTWBGv3MKj3KVqJVCw UChAnqc_AY5_I3Px5dig3X1Q UC1DCedRgGHBdm81E1llLhOQ UCl_gCybOJRIgOXw6Qb4qJzQ UCvInZx9h3jC2JzsIzoOebWg UCdyqAaZDKHXg4Ahi7VENThQ UCCzUftO8KOVkV4wQG1vkUvg UC0TXe_LYZ4scaW2XMyi5_kw UC5CwaMl1eIgY8h02uZw7u8A