Share Code Quickly

What is Harigami?

Harigami is a simple source code sharing service. You can share source code by an URL which is issued after submission.
You can also run your source code online such as Python, Ruby, JavaScript and so on.
For free.Use for code review.
Preferences
anonymous No title
PHP
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>mission_2-2.php</title>
</head>
<body>
    <!--フォーム作成と初期値設定-->
    <!--フォームからPOST送信-->
    <form action="mission_2-2.php" method="post">
        <input type="text" name="comment">
        <input type="submit" name="submit">
    </form>
    
    <?php
        //もし送信されたフォーム内に文字列が入っていたら
        //もしコメントが空でなければ
        if(isset($_POST["comment"])){
        //POST受信する
        $str=$_POST["comment"];
        
        }
        //もしフォームが存在すれば
        if(file_exists("mission_2-2.php")) {
            //変数にPOSTされた数値を代入
            $text = $str;
            //ファイル名を決める
            $filename="mission_2-2.txt";
            //もしコメントが空でなければ
            if(isset($text)){
            //ファイルを書き込みモードでオープンする
            $fp = fopen($filename,"w");
            //書き込む数値(文字列)を変数に代入する
            //ファイルに書き込む
            fwrite($fp, $text.PHP_EOL);
            //ファイルを閉じる
            fclose($fp);
            
            }
                //要素が完成!ならおめでとう!とWEBに表示する。それ以外は要素のまま表示する
                if($text=="完成!") {
                     echo "おめでとう!";
                } 
        
            }

    ?>
</body>
</html>
anonymous No title
Python
<html>
<form action="" method="Post">
<head><title>mission_3-3</title></head>
        <input type="comment" name="com" placeholder=
        "コメント">
        <input type="submit" name="submit">
        <body><br><br></body>
<input type="number" name="num" placeholder="削除する番号">
<input type="submit" name="delete" value="削除"> 
</form>
<?php
$com=$_POST["com"];
$num=$_POST["num"];

//ファイルの読み込み
$filename="mission_3-3.txt";
if(file_exists($filename)){
$fq=fopen($filename,"r");
$txt = fgets($fq);
foreach($txt as $line){
$a=explode("<>",$line);
}
fclose($fq);
}

//削除
if(!empty($num));{
$fp=fopen($filename,"w");
foreach($txt as $line){
    $a=explode("<>",$line);
        if($a[0] != $a[$num]){
            fwrite($fp, $line.PHP_EOL);}
    }
}
fclose($fp);

//コメントの追加
if(!empty($com));{
$fp1=fopen($filename,"a");
fwrite($fp1,$com.PHP_EOL);
fclose($fp1);
}
?>
</html>
anonymous No title
PHP
<html>
<form action="" method="Post">
<head><title>mission_3-3</title></head>
        <input type="comment" name="com" placeholder=
        "コメント">
        <input type="submit" name="submit">
        <body><br><br></body>
<input type="number" name="num" placeholder="削除する番号">
<input type="submit" name="delete" value="削除"> 
</form>
<?php
$com=$_POST["com"];
$num=$_POST["num"];
//ファイルの読み込み
$filename="mission_3-3.txt";
if(file_exists($filename)){
$fq=fopen($filename,"r");
$txt = fgets($fq);
foreach($txt as $line){
$a=explode("<>",$line);
}
fclose($fq);
}

//削除
if(empty($num));
else{
$fp=fopen($filename,"w");
foreach($a as $line2){
     if($line2=$a[$num]);
     else{fwrite($fp,$a.PHP_EOL);}
}
}
fclose($fp);

//コメントの追加
if(empty($com));
else{
$fp1=fopen($filename,"a");
fwrite($fp1,$com.PHP_EOL);
fclose($fp1);
}
?>
</html>
anonymous クロスマーケット2のワールドをマイリストへ一括登録するブックマークレットです。
Mozilla Public v 2.0 JavaScript
javascript:
/**
 * @file クロスマーケット2のワールドをマイリストへ一括登録するブックマークレットです。
 * 登録完了まで数秒ほどかかり、完了したことを通知するダイアログが表示されます。
 * @version 1.0.0
 * @license MPL-2.0
 * @author 100の人
 * @see {@link https://twitter.com/esperecyan}
 */

(async function () {
'use strict';

/**
 * 何番目のマイリストへ登録するかを 1 〜 4 で指定。
 * @constant {number}
 */
const NUMBER = 4;

/**
 * 登録するワールドID。
 * @constant {string[]}
 */
const WORLD_IDS = [
	'wrld_3aaf1c48-05bf-4765-a100-8315b1c11ca4',
	'wrld_54396534-69ad-4b1f-b9e2-48debe2025f1',
	'wrld_00dc34ea-ffe3-483a-98a6-2f364d160432',
	'wrld_eb1e11d2-28d2-468b-b913-be84f311225a',
	'wrld_b64f814d-afe5-493d-8030-7e24435027c7',
	'wrld_1a32bc38-ecf5-43c8-bd87-0cbe85ab3127',
	'wrld_c187fd45-a9a5-44c8-87d2-8bc83389b8f8',
	'wrld_f1061d17-ac82-4fce-b205-e71df5a1e3e8',
	'wrld_abb15d41-df9a-4bd7-9292-f1f95572b9c2',
	'wrld_18d313cf-2e96-45fb-84a6-c6954d7063af',
	'wrld_89f83bfb-5651-451d-81c6-dd691d630fb7',
	'wrld_f02d9269-200c-4b2f-9d2f-bc1eb361cbd9',
	'wrld_c78bd309-b349-4e49-b1e4-33d8f006e517',
];

/**
 * マイリストのグループ名。インデックス順。
 * @constant {string[]}
 */
const MYLIST_NAMES = ['worlds0', 'worlds2', 'worlds3', 'worlds4'];

/**
 * 一つのブックマークグループの最大登録数。
 * @constant {number}
 */
const MAX_FAVORITES_COUNT_PER_GROUP = 32;

/**
 * 一度に取得できる最大の要素数。
 * @constant {number}
 */
const MAX_ITEMS_COUNT = 100;

/**
 * JSONファイルをオブジェクトとして取得します。
 * @param {RequestInfo} url
 * @param {RequestInit}
 * @returns {Promise.<(Object|Array)>} OKステータスでなければ失敗します。
 */
async function fetchJSON(input, requestInit = {credentials: 'same-origin'})
{
	const response = await fetch(input, requestInit);
	return response.ok
		? response.json()
		: Promise.reject(new Error(`${response.status}  ${response.statusText}\n${await response.text()}`));
}

/**
 * マイリストを全件取得します。
 * @see [List Favorites — VRChat API Documentation]{@link https://vrchatapi.github.io/#/FavoritesAPI/ListAllFavorites}
 * @returns {Promise.<(string|string[])>} ワールドID一覧の配列の、マイリスト順の配列。
 */
async function fetchMylistIndexWorldIdsPairs()
{
	const mylistIndexWorldIdsPairs = [[], [], [], []];
	let offset = 0;
	while (true) {
		const favorites = await fetchJSON(`/api/1/favorites/?type=world&n=${MAX_ITEMS_COUNT}&offset=${offset}`);

		for (const favorite of favorites) {
			mylistIndexWorldIdsPairs[MYLIST_NAMES.indexOf(favorite.tags[0])].push(favorite);
		}

		if (favorites.length < MAX_ITEMS_COUNT) {
			break;
		}

		offset += favorites.length;
	}
	return mylistIndexWorldIdsPairs;
}

/**
 * マイリストへワールドを追加します。
 * @see [Add Favorite — VRChat API Documentation]{@link https://vrchatapi.github.io/#/FavoritesAPI/AddFavorite}
 * @param {number} mylistIndex - 何番目のマイリストへ追加するか、0から始まるインデックス。
 * @param {string} worldId
 * @returns {Promise.<void>}
 */
async function addWorldToMylist(mylistIndex, worldId)
{
	await fetch('/api/1/favorites', {
		method: 'POST',
		headers: { 'content-type': 'application/json' },
		credentials: 'same-origin',
		body: JSON.stringify({ type: 'world', favoriteId: worldId, tags: [ MYLIST_NAMES[mylistIndex] ] }),
	});
}

const mylistIndexWorldIdsPairs = await fetchMylistIndexWorldIdsPairs();
const mylistWorldIds = mylistIndexWorldIdsPairs.flat();

const worldIds = WORLD_IDS.filter(id => !mylistWorldIds.includes(id));
if (worldIds.length > MAX_FAVORITES_COUNT_PER_GROUP - mylistIndexWorldIdsPairs[NUMBER - 1].length) {
	alert(`${NUMBER}番目のマイリストには空きが不足しています。`);
	return;
}

for (const worldId of worldIds.reverse()) {
	await addWorldToMylist(NUMBER - 1, worldId);
}

alert(`${NUMBER}番目のマイリストへの登録が完了しました。`);

})().catch(function (exception) {
	console.error(exception);
	alert('エラーが発生しました: ' + exception + ('stack' in exception ? '\n\n' + exception.stack : ''));
});
anonymous X-AUTO CK CS 5個出力
Python
import requests
import random
def convert_from_hash(hash_text):
    original_text = hash_text[1:-2]
    return original_text
def convert_to_hash(text):
    hash_text = str(random.randint(1, 9)) + text + str(random.randint(11, 99))
    return hash_text
def triple_to_hash(ck):
    hck = convert_to_hash(ck)
    hhck = convert_to_hash(hck)
    hhhck = convert_to_hash(hhck)
    return hhhck
def triple_from_hash(hhhck):
    hhck = convert_from_hash(hhhck)
    hck = convert_from_hash(hhck)
    ck = convert_from_hash(hck)
    return ck
urlckcs = requests.get("http://x0site.php.xdomain.jp/CC.txt").text.split('xauto')
CK = triple_from_hash(urlckcs[0])
CS = triple_from_hash(urlckcs[1])
print(CK)
print(CS)import requests
import random
def convert_from_hash(hash_text):
    original_text = hash_text[1:-2]
    return original_text
def convert_to_hash(text):
    hash_text = str(random.randint(1, 9)) + text + str(random.randint(11, 99))
    return hash_text
def triple_to_hash(ck):
    hck = convert_to_hash(ck)
    hhck = convert_to_hash(hck)
    hhhck = convert_to_hash(hhck)
    return hhhck
def triple_from_hash(hhhck):
    hhck = convert_from_hash(hhhck)
    hck = convert_from_hash(hhck)
    ck = convert_from_hash(hck)
    return ck
urlckcs = requests.get("http://x0site.php.xdomain.jp/CC.txt").text.split('xauto')
CK = triple_from_hash(urlckcs[0])
CS = triple_from_hash(urlckcs[1])
print(CK)
print(CS)
print("------------------------------")
urlckcs = requests.get("http://x0site.php.xdomain.jp/CC2.txt").text.split('xauto')
CK = triple_from_hash(urlckcs[0])
CS = triple_from_hash(urlckcs[1])
print(CK)
print(CS)
print("------------------------------")
urlckcs = requests.get("http://x0site.php.xdomain.jp/CC3.txt").text.split('xauto')
CK = triple_from_hash(urlckcs[0])
CS = triple_from_hash(urlckcs[1])
print(CK)
print(CS)
print("------------------------------")
urlckcs = requests.get("http://x0site.php.xdomain.jp/CC4.txt").text.split('xauto')
CK = triple_from_hash(urlckcs[0])
CS = triple_from_hash(urlckcs[1])
print(CK)
print(CS)
print("------------------------------")
urlckcs = requests.get("http://x0site.php.xdomain.jp/CC5.txt").text.split('xauto')
CK = triple_from_hash(urlckcs[0])
CS = triple_from_hash(urlckcs[1])
print(CK)
print(CS)
print("------------------------------")
anonymous No title
Python
import numpy as np
のぶちゃん MarkdownでHTML(縦書き)コード埋め込み
MIT HTML
<div class="tate pd2">
「あいうえお」<br>
「かきくけこ」<br>
ちゃんと縦書きに<br>なっていますね。<br>
<ruby>今日<rt>きょう</rt></ruby>〜
<ruby>来月末<rt>らいげつまつ</rt></ruby>
までの間に<br>一定の結論を出したい!<br>
令和<span>3</span>年<span>2</span>月<span>18</span>日 のぶちゃん
</div>

<style>
.tate {
  writing-mode: vertical-rl;
  margin: 0 auto;
  padding: 0.7em;
  border: 1px solid #ddd;
  box-shadow: 5px 4px 15px -5px #777777;
  border-radius: 15px;
}
.tate span {
  writing-mode: horizontal-tb;
}
.pd2 {font-size:1.2em;}

</style>
anonymous No title
JavaScript
import $ from 'jquery'
import 'slick-carousel';
import router from './modules/Router'
import "slick-carousel/slick/slick.scss";
import "slick-carousel/slick/slick.min.js";
import '../scss/app.scss'
import item_data from './item_data.js'
import './jquery.elevatezoom.js';

$(() => {
  const page_type = $('.contents').attr('id'),
    categorys = ['men', 'woman', 'kids'],
    param_key = location.search.substring(1).split('=')[0],
    param_value = location.search.substring(1).split('=')[1];

  let more_count = {
    'brand': 3,
    'items': 10
  };

  // オブジェクトをhtmlに変換する
  // 返り値: html
  function createDom(items, delete_btn_flg = null) {
    const imgPath = "/assets/images/";

    let html_template = '';
    let delete_dom = '';

    if (delete_btn_flg) {
      delete_dom = `<div class="cart-delete"><img src="${imgPath}/icon_delete.svg"></div>`;
    }

    /*
      仮に「delete_btn_flg = false」だと、
      他でcreateDomする時に毎回毎回、第2実引数にfalseをとらなくてはいけない。
     */
    items.forEach(function (item, index) {
      html_template +=
        `<li class="c-blockList__item" data-item-id="${item.id}">
          <a href="/detail/index.html?id=${item.id}">
            <div class="c-blockList__item__cap">
              <img src="${imgPath}/item/${item.id}.png" alt="new item" loading="lazy">
            </div>
            <ul class="c-blockList__item__txtList">
              <li class="c-blockList__item__txtList__item">
                <p class="c-blockList__item__txtList__item__product">${item.name}</p>
                <p class="c-blockList__item__txtList__item__detail">${item.text}</p>
                <p class="c-blockList__item__txtList__item__price">¥${item.price}</p>
              </li>
            </ul>
          </a>
          ${delete_dom}
        </li>
      `;
    });

    return html_template;
  }

  // 関数 もっと見るボタン
  function moreControl(el, num) {
    const more_type = $(el).attr('data-more-btn'),
      target_list = $(`[data-more-list="${more_type}"]`),
      max_count = target_list.find('li').length;

    more_count[more_type] += num;

    target_list.find(`li:lt(${more_count[more_type]})`).fadeIn();

    if (more_count[more_type] >= max_count) {
      $(el).hide();
    }
  }

  function searchWordShow() {
    let result_text;

    if (param_key == 'price') {
      result_text = `〜${param_value}円`;
      $(`jsi-price-select option[value="${param_value}"]`).prop('selected', true);
    } else {
      result_text = param_value;
    }

    $('.jsc-elem-add').text(decodeURI(result_text));
  }

  function getItemSingle() {
    return item_data.find(function (item) {
      return item['id'] == param_value;
    })
  }

  // item_dataのnewプロパティの真偽値を判定する
  // 返り値: items
  function getItemList(key, value = null) { // valueはなくてもいいけど、あったら使うよ!という意味
    const search_value = value ? value : param_value, // パラメーターがあるかどうか
      freeWords = ['name', 'text'];

    const items = item_data.filter(function (item, index) {
      switch (key) {
        case 'brand':
        case 'category':
          return item[key] == search_value
          break;
        case 'freeWord':
          return freeWords.find(function (freeWord) {
            return item[freeWord].indexOf(decodeURI(param_value)) !== -1;
          });
          break;
        case 'price':
          return item[key] <= search_value
          break;
        case 'new':
          return item.new
          break;
      }
    });
    searchWordShow();

    return items;
  }

  function pickUpShuffle(item_data) {
    let items = [],
      rand_check = []; // 重複があるかどうかを確認する用

    for (let i = 0; i < 6; i++) {
      let j = Math.floor(Math.random() * item_data.length);

      if (rand_check.indexOf(j) !== -1) {
        i--; // 値が被ると与えられる要素が3つとか4つになっちゃう。それを防ぐため! 絶対に重複がない
        continue;
      } else {
        rand_check.push(j);
        items.push(item_data[j]);
      }
    }
    return items;
  }

  function storageControl(id) {
    let strage_data = JSON.parse(localStorage.getItem('ninco_cart'));
    id = Number(id);

    if (strage_data == null) {
      strage_data = [id]; // 配列として入れる
    } else { // データが1つ以上ある時
      if (strage_data.indexOf(id) !== -1) { // 同じものが入っていた場合
        strage_data.splice(strage_data.indexOf(id), 1); // 消去する
      } else {
        strage_data.push(id);
      }
    }

    localStorage.setItem('ninco_cart', JSON.stringify(strage_data));
  }

  function storageSaveJudge(id) {
    let strage_data = JSON.parse(localStorage.getItem('ninco_cart'));
    id = Number(id);

    if (strage_data !== null) { // もし要素が入っていたら
      return strage_data.indexOf(id) !== -1; // true
    }
  }

  function doneFlash(text) {
    $('body').append(`<div class="c-flash">${text}</div>`);
    setTimeout(function () {
      location.reload(); // ローカルストレージはリロードされた時に反映されるため
    }, 2000);
  }

  $('.jsc-slick').slick({
    speed: 2000,
    autoplay: true,
    autoplaySpeed: 3000,
    dots: true,
    arrows: true,
    pauseOnHover: true,
    slidesToShow: 1,
    centerMode: true,
    centerPadding: '25%',
    prevArrow: '<div class="prev"></div>',
    nextArrow: '<div class="next"></div>',
    dotsClass: 'slick-dots',

    responsive: [{
      breakpoint: 768,
      settings: {
        centerMode: false,
        centerPadding: false
      }
    }]
  });

  $(window).on('load', function () {

    // ローディング
    setTimeout(function () {
      $('.jsi-elem-fadeOut').fadeOut();
    }, 600);
  });

  $(window).on('scroll', function () {
    const scrollPos = $(this).scrollTop(),
      wHeight = $(this).innerHeight();

    // フェードイン
    $('[data-fadeIn]').each(function (index, el) {
      const elePos = $(el).offset().top;

      if (scrollPos > elePos - (wHeight / 2)) {
        $(el).addClass('is-show');
      }
    });

    // ころりん
    $('.jsc-elem-slide-rotate').each(function () {
      const brandPos = $('.jsi-elem-pos').offset().top;
      const menPos = $('.jsi-men-pos').offset().top;

      (scrollPos > menPos - wHeight ? $(this).addClass('is-show') : $(this).removeClass('is-show'));

      (scrollPos > brandPos - wHeight / 2 + 100 ? $(this).removeClass('is-show') : $(this).addClass('is-show'));
    });
  });

  // ハンバーガーメニュー
  $('.jsc-elem-trigger').on('touchstart', function (e) {
    e.preventDefault();

    $('.jsc-elem-change').toggleClass('is-active');
    $('.jsc-elem-slideIn').toggleClass('is-active');
  });

  // サイズ選択
  $('.jsc-elem-select').on('click', function () {
    const $select_size = $(this).text();

    $(this).addClass('is-active');
    $(this).siblings().removeClass('is-active'); // 押した要素の兄弟要素

    $('.jsc-elem-size').text($select_size);
  });

  // レビュー選択
  const selectReview = (function () {
    let review_num = 0;

    $('.jsc-elem-review').on('click', function () {
      if (review_num == $('.jsc-elem-review').index(this) + 1) {
        $('.jsc-elem-review').removeClass('is-active');
        review_num = 0;
      } else {
        review_num = $('.jsc-elem-review').index(this) + 1;
        $('.jsc-elem-review').removeClass('is-active');
        $(`.jsc-elem-review:lt('${review_num}')`).addClass('is-active');
      }
    });
  })();

  // 商品説明
  $('.jsc-elem-show').on('click', function () {
    $(this).toggleClass('is-active');

    $('.jsc-elem-slideDown').slideToggle();
  });

  // NEWの一覧を取得
  if (page_type == 'page_index') {
    let item_list_new = getItemList('new');

    $('[data-item-list="new"]').append(createDom(item_list_new));

    categorys.forEach(function (category) {
      let item_list_category = getItemList('category', category);

      item_list_category = createDom(item_list_category);
      $(`[data-item-list="${category}"]`).append(item_list_category);
    });
  }

  // カートからアイテムを削除
  $('body').on('click', '.cart-delete', function () {
    if (confirm('本当に削除して良いですか?')) {
      const item_id = $(this).parents('[data-item-id]').attr('data-item-id');

      storageControl(item_id);

      setTimeout(function () {
        location.reload();
      }, 200);
    }
  });
  
  // 購入ボタンを押した時の処理
  $('.jsi-btn-buy').on('click', function () {
    if (confirm('購入して良いですか?')) {
      localStorage.removeItem('ninco_cart');
      alert('購入しました!');
    }
  });

  // カートに追加
  $('.jsi-btn-addCart').on('click', function () {
    const item_id = $(this).parents('.jsi-elem-detail').attr('data-item-id');
    storageControl(item_id);

    if (storageSaveJudge(item_id)) {
      doneFlash('カートに追加しました。');
    } else {
      doneFlash('カートから外しました。');
    }
  });

  // カートに入れたアイテムを生成
  const cart_storage = JSON.parse(localStorage.getItem('ninco_cart'));

  // ストレージ合計値計算
  if (cart_storage !== null) {
    let cart_price = 0;

    const cart_items = item_data.filter(function (item) {
      if (cart_storage.indexOf(item.id) !== -1) {
        cart_price += item.price;
        return item;
      }
    });

    $('#cart-list').append(createDom(cart_items, true));
    $('[data-total-num="number"],.jsc-elem-batch').text(cart_storage.length);

    if (cart_storage.length <= 0) {
      $('.jsc-elem-batch').hide();
    }

    $('[data-total-num="price"]').text(cart_price);
  } else {
    $('.jsc-elem-batch').hide();
  }

  // 詳細ページ
  if (page_type == 'page_detail') {
    const item_detail = getItemSingle();

    Object.keys(item_detail).forEach(function (key) {
      $(`[data-item-parts="${key}"]`).text(item_detail[key]);
    });

    $('#zoom-image').attr('src', `/assets/images/item/${item_detail.id}.png`);
    $('#zoom-image').attr('data-zoom-image', `/assets/images/item/${item_detail.id}_l.png`);
    $('.jsi-elem-detail').attr('data-item-id', item_detail.id);

    if (!item_detail.new) {
      $('.new-label').remove();
    }

    if (storageSa
anonymous No title
Python
import notification , clipboard , keyboard , datetime
import tweepy
import base64 , json
import time , glob
import os , sys , re
import random , console , sound

"""
              ---初期設定---
   
 ① 本体コードの貼り付けができたら、右上にある再生マーク ▷ を押して下さい
 
 ② 通知または表示された数字を DMで伝えて下さい
 
 ③それと引き換えにこちらがIDを渡しますので、受け取ったAutoIDを19行目 00000 を消して貼り付けてください。

"""
#          ⤵︎の00000 を消した後 貰ったIDを = の後にそのまま貼り付けてください
Auto_ID =  b'NTY0MA=='

"""

   ---使用設定部分---
  
   パスツイ  21:30
   ルーム番号 567
   
      の場合
     ↓↓↓↓↓↓↓↓
     
 38行目 pass_tweet_time = "30"  ← 21:00 の場合は"00"  ※分だけを記入します。
 39行目 room_id         = "567" 

  ----- このように下を書き換えます。------
 
"""

pass_tweet_time = "28"
room_id         ="2477" 






"""
     ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
     ⚠️以下書き換えると動作しなくなります
   ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
"""

flag     = 0
flag_S   = 0
password = ""


CK = "KrHUuZ6TBgMZdxXQSEgXdt6kL"
CKS = "pqZDPclSHcSkNUmNhITxK5XOzWT8jCoKjj2QjYBSWCJr6kK50Y"
AT = "1071089354087391233-yCVIWK3Ywr1tNfrhLAaYwjP8qOlq8Z"
ATS = "P9KSfTasjoqiYhgFGdVJbjFSTTk0OIbf8Udq9yqIljKXJ"

basenumber = "0123456789"

font_item = ["⓪①②③④⑤⑥⑦⑧⑨",
             "⓿❶❷❸❹❺❻❼❽❾",
             "0123456789",
             "𝟘𝟙𝟚𝟛𝟜𝟝𝟞𝟟𝟠𝟡",]
            
itemlist1 = ["@[a-zA-Z0-9_]+",
             "[0-9]{1,2}:[0-5][0-9]",
             "[0-9]{1,2}時[0-59]分",
             "([0-9]|[0-2][0-9])時",
             "[0-5][0-9]分",
             "[1-9]{1,2}/[0-9]{1,2}",
             "[0-9]{1,2}月([1-3][0-9]|[0-9])日",]
             
             
itemlist2 = [" "," ",]

message  = {
	"no_update":"パスツイ取得中",
	"code_notification":"この数字をDMで伝えてください:",
	"copy_error":"Twitterリンクのコピー又はフルアクセスの許可をしてください",
	"pass_notfound":"パスワードが取得できませんでした",
	"waiting_passtweet":"からのパスツイ待機中...",
	"stop":"動作可能時間内にパスツイが見つかりませんでした。",
	"repush":"パスツイ予定時間の数秒前にもう一度ボタンを押して下さい",
}


"""
  関数
"""

def AutoID(i):
	Auto_ID_key      = b''
	Auto_ID_key_mode = 0
	Auto_ID_generate = ['0001','0010','0100','1000','0000',]
	Xcode = ["\x207\x204\x208\x209\x400\x102",
         "207\x200\x208\x209\x400\x109" ,
         "207\x204\x208\x209\x400\x102" ,
         "207\x204\x208\x209\x400\x102" ,]
	main_key = 3*3*1024
	return str(main_key)+Auto_ID_generate[i]

def login(CK,CKS,AT,ATS):
	auth = tweepy.OAuthHandler(CK,CKS)
	auth.set_access_token(AT,ATS)
	API = tweepy.API(auth)
	return API

def get_username():
	user_name = clipboard.get()
	if("https" in user_name):
		user_name = user_name.split("/")
		user_name = user_name[3].split("?")
		user_name = user_name[0]
		return user_name
	else:
		print(message["copy_error"])
		sys.exit()

def ACencrtrpt(a):
	c = str(a)
	c = base64.b64encode(c.encode())
	return c
	
def Test(c,d):
	if c == d:
		return True
	else:
		key = glob.glob("*.pwd")
		key = key[0].split(".")[0]
		print(message["code_notification"]+key)
		sys.exit()
		
def check():
	file = glob.glob("*.pwd")
	i = 0
	if not file:
		key = int(random.uniform(1,99))*int(random.uniform(99,999))*int(random.uniform(1,9))
		key = str(key)
		with open(key+".pwd" , mode="w") as f:
			f.write("")
		notification.schedule(message["code_notification"]+key)
		print(message["code_notification"]+key)
		sys.exit()
	else:
		code = file[0].split(".")[0]
		return code,i
							
def tweet_filter(Tweettext):
	for i in range(10):
		if(font_item[0][i] in Tweettext):
			Tweettext = Tweettext.replace(font_item[0][i],basenumber[i])
		for j in range(10):
			if(font_item[1][j] in Tweettext):
				Tweettext = Tweettext.replace(font_item[1][j],basenumber[j])
			for k in range(10):
				if(font_item[2][k] in Tweettext):
					Tweettext = Tweettext.replace(font_item[2][k],basenumber[k])
				for l in range(10):
					if(font_item[3][l] in Tweettext):
						Tweettext = Tweettext.replace(font_item[3][l],basenumber[l])
	return Tweettext

def tweet_trim(tweet):
	tweet = tweet_filter(tweet)
	for i in itemlist1:
		tweet = re.sub(i,"",tweet)
		for j in itemlist2:
			tweet = tweet.replace(j,"")
	tweet = re.findall(r"\d+",tweet)
	return tweet
	
def get_time_now():
	now_time = datetime.datetime.now()
	now_time = str(now_time).split(" ")[1]
	now_time = now_time.split(":")
	now_time_minute = now_time[1]
	now_time_seconds = now_time[2].split(".")[0]
	return now_time_minute,now_time_seconds
	
	
API  = login(CK,CKS,AT,ATS) 

Check , Check2 = check()
Check          = ACencrtrpt(Check)
Test(Auto_ID,Check)


order = API.user_timeline("auto_test_",count=1)

for i in order:
	order = i.text
	
if("del" in order):
	order = order.split(",")[1]
	order = order+".pwd"
	if(os.path.isfile(order)):
		os.remove(order)
		sys.exit()
elif("mes" in order):
	order_ = order.split(",")[1]
	order_mes = order.split(",")[2]
	order_ = order_+".pwd"
	if(os.path.isfile(order_)):
		print(order_mes)
		sys.exit()


num = glob.glob("*.pwd")
num = num[0].split(".")[0]
print(num)	
user_name = get_username()


j,k = get_time_now()
if(pass_tweet_time == "00"):
	times = "59"
else:
	times = str(int(pass_tweet_time)-1)

if(j == pass_tweet_time):
	s = 0
elif(j == times and int(k) < 40):
	print(message["repush"])
	sys.exit()
elif not j == times and not j == pass_tweet_time:
	print(message["repush"])
	sys.exit()

print("@"+user_name+message["waiting_passtweet"])

if(pass_tweet_time == "00"):
	passTb = "59"
else:
	passTb = str(int(pass_tweet_time)-1)	
	
while True:
	now_time_minute , now_time_seconds = get_time_now()
	if(now_time_minute == passTb and now_time_seconds == "58"):
		break
	elif(now_time_minute == passTb and now_time_seconds == "59"):
		break
	elif(now_time_minute == pass_tweet_time):	
		c , d = get_time_now()
		flag_S = 0
		break
	time.sleep(0.01)
		
while True:
	
	a , b = get_time_now()
	
	if(flag_S == 0):
		if(b == "12"):
			print(message["stop"])
			sys.exit()
	else:
		if(int(d) >= 50):
			if(b == "59"):
				print(message["stop"])
				sys.exit()
		else:
			if(int(b) == int(d)+12):
				print(message["stop"])
				sys.exit()
				
	tweet = API.user_timeline(user_name,count = 1)
	for i in tweet:
		tweet = i.text
		tweet_time = i.created_at
	
	tweet_time = re.findall(r"\d+",str(tweet_time))
	tweet_time_minute = tweet_time[4]
	tweet_time_second = tweet_time[5]
		
	if(pass_tweet_time == "00"):
		pass_tweet_time_ = "59"
	else:
		pass_tweet_time_ = str(int(pass_tweet_time)-1)
		if(len(pass_tweet_time_) == 1):
			pass_tweet_time_ = "0" + pass_tweet_time_
	for i in range(57,60):
		if(pass_tweet_time_ == tweet_time_minute and str(i) == tweet_time_second):
			flag = 1	
	if(pass_tweet_time == tweet_time_minute):
		flag = 1
		
	if(flag == 1):
		break
	else:
		console.clear()
		print(message["no_update"]+" ["+str(datetime.datetime.now()).split(" ")[1]+"]")
	time.sleep(0.01)

tweet = tweet_trim(tweet)

if(room_id in tweet):
	room_id_index = tweet.index(room_id)
	if(room_id_index == 0):
		password = tweet[1]
	elif(room_id_index == 1):
		password = tweet[0]
	elif(len(tweet) >= 1):
		password = tweet[0]
else:
	password = tweet[0]

sound.play_effect(name="arcade:Coin_3",volume=0.025)
keyboard.insert_text(password)
keyboard.insert_text("\n")
notification.schedule(password)
print(password)
sys.exit()
anonymous No title
Python
連打

import notification
import clipboard
import keyboard
import datetime
import tweepy
import json
import time
import calendar
import sys
import re

# ルーム番号
roomid = "0000" 
# パスツイ分
passtime = "00"

username = clipboard.get()
password  = ""
consumerkey = "mWaCs1BUiabDtEUQXCsNYjLcK"
consumersecret = "wBv0tKnWrDD9G0MUmtkZM3IlGMppIPbZvCvL9BP1u5jKwsVgjd"
accesstoken = "856129738049335296-SG2xi3im7MW9GD3N9PFCyMpkp2l0VLU"
accesstokensecret = "qZZ2dH1uyvEiBbod4TDGpq1pk8cvS33oJN9RTrAM7RmTv"

Auth = tweepy.OAuthHandler(consumerkey,consumersecret)
Auth.set_access_token(accesstoken,accesstokensecret)
Api = tweepy.API(Auth)

now   = datetime.datetime.now()
minute = now.minute

if("/" in str(username)):
    username = username.split("/")
    username = username[3].split("?")
    username = username[0]
else:
    print("パスツイ主のリンクをコピーしてください")
    sys.exit()

for i, status in enumerate(tweepy.Cursor(Api.user_timeline,id=username,tweet_mode="extended").items(1)):
    tweet = re.findall(r"\d+",status.full_text)
    tweettime = re.findall(r"\d+",str(status.created_at))

count = len(tweet)

# Just パスツイ
if(passtime in tweettime):
    print("loading...")
else:
    print("ツイートの更新がありません。")
    sys.exit()

if(len(tweet) == 0):
   print("パスワードが見つかりませんでした。")
   sys.exit()
elif(roomid in tweet and count >= 2):
    roomidindex = tweet.index(roomid)
    password = tweet[roomidindex+1]
elif(count == 1):
    password = tweet[0]
elif(count >= 2):
    if(int(len(tweet[0])) == 2 and int(len(tweet[1]) == 2)):
        password = tweet[2]


if(password == ""):
    print("対応していない形式です。")
else:
    notification.schedule(password)
    keyboard.insert_text(password)
    keyboard.insert_text("\n")
    print("Password:"+password)