From ca8b8bcc67c0a8e4bc758b7b32e69eeded501017 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=83=91=E3=83=B3=E5=90=9B?= Date: Thu, 17 Sep 2026 00:20:34 +0900 Subject: [PATCH] Delete .github/workflows/fetch-x-feed.yml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: パン君 --- .github/workflows/fetch-x-feed.yml | 112 ----------------------------- 1 file changed, 112 deletions(-) delete mode 100644 .github/workflows/fetch-x-feed.yml diff --git a/.github/workflows/fetch-x-feed.yml b/.github/workflows/fetch-x-feed.yml deleted file mode 100644 index 512e03df..00000000 --- a/.github/workflows/fetch-x-feed.yml +++ /dev/null @@ -1,112 +0,0 @@ -name: Fetch X media feed - -on: - workflow_dispatch: - inputs: - username: - description: 'X username (without @). Defaults to pankun2000_' - required: false - default: 'pankun2000_' - schedule: - - cron: '0 0 * * *' - -permissions: - contents: write - -jobs: - fetch: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Install jq - run: sudo apt-get update && sudo apt-get install -y jq - - - name: Fetch recent tweets with media and generate JSON - shell: bash - env: - X_BEARER_TOKEN: ${{ secrets.X_BEARER_TOKEN }} - USERNAME_INPUT: ${{ github.event.inputs.username }} - run: | - set -euo pipefail - - write_empty_feed() { - mkdir -p WebSite/assets - echo '[]' > WebSite/assets/x-feed.json - git config user.name "github-actions[bot]" - git config user.email "github-actions[bot]@users.noreply.github.com" - if git status --porcelain -- WebSite/assets/x-feed.json | grep -q .; then - git add WebSite/assets/x-feed.json || true - git commit -m "chore: update x media feed (empty fallback)" || true - fi - return 0 - } - - USERNAME="${USERNAME_INPUT:-pankun2000_}" - echo "Using username: $USERNAME" - - if [ -z "${X_BEARER_TOKEN:-}" ]; then - echo "X_BEARER_TOKEN is not configured. Writing an empty feed." - write_empty_feed - exit 0 - fi - - # Resolve user id - USER_INFO=$(curl --silent --show-error --fail --location \ - -H "Authorization: Bearer $X_BEARER_TOKEN" \ - "https://api.twitter.com/2/users/by/username/$USERNAME" || true) - - USER_ID=$(echo "$USER_INFO" | jq -r '.data.id // empty' 2>/dev/null || true) - if [ -z "$USER_ID" ]; then - echo "Unable to resolve X user ID for '$USERNAME'. API response:" - echo "$USER_INFO" - write_empty_feed - exit 0 - fi - - # Fetch tweets with media expansions - TWEETS_JSON=$(curl --silent --show-error --fail --location \ - -H "Authorization: Bearer $X_BEARER_TOKEN" \ - "https://api.twitter.com/2/users/$USER_ID/tweets?max_results=100&expansions=attachments.media_keys&tweet.fields=created_at,attachments&media.fields=preview_image_url,url,type" || true) - - if ! echo "$TWEETS_JSON" | jq -e '.data != null' >/dev/null 2>&1; then - echo "Unable to fetch tweet list for '$USERNAME'. API response:" - echo "$TWEETS_JSON" - write_empty_feed - exit 0 - fi - - MEDIA_IDS=$(echo "$TWEETS_JSON" | jq -r ' - .data[] - | select(.attachments != null and (.attachments.media_keys | length > 0)) - | [.created_at, .id] - | @tsv - ' 2>/dev/null | sort -r | head -n 3 | cut -f2 || true) - - if [ -z "$MEDIA_IDS" ]; then - echo "No media tweets found for '$USERNAME'. Writing an empty feed." - write_empty_feed - exit 0 - fi - - FEED_JSON='[]' - for tweet_id in $MEDIA_IDS; do - tweet_url="https://x.com/$USERNAME/status/$tweet_id" - oembed_json=$(curl --silent --show-error --fail --location --max-time 30 \ - "https://publish.twitter.com/oembed?url=$tweet_url&dnt=true" || true) - oembed_html=$(echo "$oembed_json" | jq -r '.html // empty' 2>/dev/null || true) - - if [ -n "$oembed_html" ]; then - FEED_JSON=$(echo "$FEED_JSON" | jq --arg url "$tweet_url" --arg html "$oembed_html" '. + [{url:$url, oembed_html:$html}]') - fi - done - - echo "$FEED_JSON" | jq '.[0:3]' > WebSite/assets/x-feed.json - - git config user.name "github-actions[bot]" - git config user.email "github-actions[bot]@users.noreply.github.com" - if git status --porcelain -- WebSite/assets/x-feed.json | grep -q .; then - git add WebSite/assets/x-feed.json || true - git commit -m "chore: update x media feed" || true - fi